н процедури ОБРОБКИ перівання від таймеру 0
inc R7
; лічильник переривані
cjne R7, # 180, out
; переривані Було 180? /Td>
mov R7, # 0
: так обнулення лікільніка переривані
inc R0
; зафіксуваті 10 сек. У регістрі секунд
cjne R0, # 6, out
; перевірка на ті, что пройшла хвилина чи ні
mov R0, # 1
; пройшла - 60 сек = 1 сек
inc R1
; фіксування 1 хв. У регістрі хвилин
cjne R1, # 60, out
; пройшла година?
mov R1, # 1
Так
inc R2
; фіксація годині
cjne R2, # 24, out
; пройшов день
mov R2, # 0
inc R3
cjne R3, # 32, out
; пройшов місяць
mov R3, # 1
out:
call tvis
; візуалізація годині кожні 10 сек.
mov TL0, # LOW (555)
mov TH0, # HIGH (555)
setb TR0
reti
scan:
clr TR1
; програмне сканування датчіків
mov DPTR, # 0FFF2h
; адреси датчіків
movx A, @ DPTR
; Знято Значення датчіків
jz not_al
; хочай б один датчик спрацював? Если ні-у Кінець
jnb Acc.0, n1
; так - побітна перевірка слова від датчіків
mov R7, # 1
; перевірка 1 датчика и ЯКЩО ВІН спрацював, то записатися
call alarm
; інформацію про підщепі
n1:
jnb Acc.1, n2
; 2-ий
mov R7, # 2
call alarm
n2:
jnb Acc.2, n3
; 3-ій
mov R7, # 2
call alarm
n3:
jnb Acc.3, n4
; 4-ий
mov R7, # 3
call alarm
n4:
jnb Acc.4, n5
; 5-ий
...