0142 E5 F0 mov A,B
0144 F0 movx @DPTR,A
0145 A3 inc DPTR
0146 E5 D0 mov A,PSW
0148 F0 movx @DPTR,A
0149 A3 inc DPTR
014A E5 81 mov A,SP
014C F0 movx @DPTR,A
014D A3 inc DPTR
014E E8 mov A,R0
014F F0 movx @DPTR,A
0150 A3 inc DPTR
0151 78 07 mov R0,#07H
NEXTREG: ;последовательное сохранение регистров
;нулевого банка
0153 E6 mov A,@R0
0154 F0 movx @DPTR,A
0155 A3 inc DPTR
0156 D8 FB djnz R0,NEXTREG
;переход к выходу из подпрограммы
;прерывания
0158 02 01 BB ljmp ENDLABEL1
KEYBDLAB:;обработка запроса прерывания от клавиатуры
;сначала сбросим запрос от клавиатуры
015B C2 90 clr P1.0
015D D2 90 setb P1.0
;прочитаем скэн-код нажатой клавиши
015F 90 0B 01 mov DPTR,#0B01H
0162 E0 movx A,@DPTR
0163 F5 F0 mov B,A
;просмотрим текщий режим уставки
0165 90 00 08 mov DPTR,#0008H
0168 E0 movx A,@DPTR
;если не 0-то переход к вводу уставки
0169 70 24 jnz LEVEL1
;просмотр функциональных клавиш
016B 30 F4 4D jnb B.4,ENDLABEL1
;бит B.4 установлен-то есть нажата
;функциональная клавиша
;бит B.0 говорит о том, что нажата
;клавиша вывода
016E 20 F0 06 jb B.0,KEYOUT
;если бит R0.1 установлен, то-клавиша
;останова, иначе-уставка
0171 20 F1 09 jb B.1,KEYSTOP
0174 02 01 86 ljmp KEYUST
;блок реакции на функциональные клавиши
0177 KEYOUT:
;вызов процедуры вывода на панель
;управления
0177 12 01 BC lcall VIEW
017A 02 01 BB ljmp ENDLABEL1
017D KEYSTOP:
;цикл до наступления режима уставки
017D 90 00 08 NEXTVIEW:mov DPTR,#0008H
0180 E0 movx A,@DPTR
0181 60 FA jz NEXTVIEW
0183 02 01 BB ljmp ENDLABEL1
0186 KEYUST:
;перевод в режим уставки
0186 90 00 08 mov DPTR,#0008H
0189 74 01 mov A,#01H
018B F0 movx @DPTR,A
018C 02 01 BB ljmp ENDLABEL1
LEVEL1: ;система находится в режиме ввода
;уставки (в промежут. ячейку 0009Н)
;реакция-только на цифровые клавиши
018F 20 F4 29 jb B.4,ENDLABEL1
;определение номера вводимой тетрады
;если А.0-"1", то младшая тетрада,
;иначе-старшая
0192 30 E0 10 jnb A.0,LEVEL2
;выводим мл. тетраду в ячейку 0009H
0195 E5 F0 mov A,B
0197 54 0F anl A,#00001111B
0199 90 00 09 mov DPTR,#0009H
019C F0 movx @DPTR,A
;исправим код режима уставки
019D 15 82 dec DPL
019F 74 02 mov A,#02H
01A1 F0 movx @DPTR,A
01A2 02 01 BB ljmp ENDLABEL1
LEVEL2: ;заполнение старшей тетрады
;чтение мл. тетрады
01A5 90 00 09 mov DPTR,#0009H
01A8 E0 movx A,@DPTR
;подготовка и запись старшей тетрады
01A9 23 rl A
01AA 23 rl A
01AB 23 rl A
01AC 23 rl A
01AD 53 F0 0F anl B,#00001111B
01B0 45 F0 orl A,B
01B2 C4 swap A
;запись новой уставки
01B3 15 82 dec DPL
01B5 E4 clr A
01B6 F0 movx @DPTR,A
01B7 90 00 00 mov DPTR,#0000H
01BA F0 movx @DPTR,A
01BB 32 ENDLABEL1: reti
VIEW: ;процедура индикации не реализуется в
;данном варианте задания
01BC 22 ret
DELAY05: ;процедура задержки на 0,5 с ;реализация не предусмотрена данным вариантом
;задания
01BD 22 ret
01BE .END
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.