n=top>
timer:
mov R4, A
; Збереження Значення акумулятора
clr TR0
; маскування переривані від таймера 0
inc R7
; лічильник переривані (180 = 10 сек)
cjne R7, # 180, out
; пройшло 10 секунд? /Td>
mov R7, # 0
; так - Обнуління лічільніка
inc R1
; інкрементуємо Показник ціклів
cjne R1, # 4, outa ​​p>
; пройшло 4 ціклів
mov R1, # 0
; обнуленням сертифіката №
outa:
inc R2
cjne R2, # 5, outw
mov R2, # 1
outw:
mov A, R2
call get_n
mov DPTR, # 0FFF7h
movx @ DPTR, A
mov DPTR, # 0FFF1h
out:
mov A, R4
mov TL0, # LOW (555)
mov TH0, # HIGH (555)
setb TR0
reti
get_n:
movc A, @ A + PC
; підпрограма конверсії Значення акумулятора в код ССІ
ret
db 00000110b; 1
; таблиця значень ССІ для конверсії
db 01011011b; 2
db 01001111b; 3
db 01100110b; 4
6. ПРОГРАМИ Типова процедура
1. Передат вміст буфера резідентної пам'яті даних по непрямій адресі з R0. Алгоритм програми подання на малюнку 6.1
В
Рісугок 6.1 - Алгоритм для програми 1
Текст програми:
Мітка
Команди
Коментар
cseg
org 2000h
jmp main
; Перехід на Виконання головної програми
org 2003h
; качан переривані по INT0
mov DPTR, # 0fff2h
; завантаження адреси лінійкі перемікачів
movx A, @ DPTR
; Прийняття значень перемікачів
mov DPTR, # 0fff1h
; завантаження адреси лінійкі світодіодів
movx @ DPTR, A