[an error occurred while processing this directive]
Да, как-то были глюки при таких расчетах:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Леонид Иванович 27 января 2003 г. 13:54
В ответ на: Подскажите алгоритм отправлено sos 27 января 2003 г. 13:38

;Input: UVn_M,UVn_H (n=1..4) - моменты времени, когда должна включаться UV-лампа
;Input: UVD[R1] (R1=1..8) - длительности горения лампы
;Input: R6=TM_H, R5=TM_M - текущее время (часы, минуты, двоично-десятичный формат)
;Out: C=1 если TM лежит в интервале горения лампы

GET_IVL: MOV B,#4H
GIV3: MOV A,B
RL A
ADD A,#UV1_M-2
MOV R0,A
MOV A,@R0 ;load UVn_M
MOV R3,A
INC R0
MOV A,@R0 ;load UVn_H
MOV R4,A
LCALL SUB_T ;R4,R3 = TM_H,TM_M - UVn_H,UVn_M
JNZ GIV1 ;skip if R4>0
MOV A,#UVD1-1
ADD A,R1
MOV R0,A
MOV A,@R0 ;load UVDn
XCH A,R3
CLR C
SUBB A,R3
JC GIV2
GIV1: DJNZ B,GIV3
CLR C
GIV2: RET

;Input: R6,R5 = TM_H,TM_M
;Input: R4,R3 = Tn_H,Tn_M
;Out: R4,R3 = TM_H,TM_M - Tn_H,Tn_M

SUB_T: CLR C
MOV A,#5AH
SUBB A,R3
ADD A,R5
DA A
JC SU1
CJNE A,#60H,$+3H
CPL C
JNC SU2
SU1: ADD A,#40H
DA A
SETB C
SU2: MOV R3,A
PUSH PSW
CLR C
MOV A,#23H
SUBB A,R4
JNB AC,SU3
SUBB A,#06H
SU3: POP PSW
ADDC A,R6
DA A
CJNE A,#24H,$+3H
JC SU4
ADD A,#76H
DA A
SU4: MOV R4,A
RET

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru