Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MPS_kaf12_8 / MPS_kaf12_8.doc
Скачиваний:
114
Добавлен:
27.03.2016
Размер:
3.27 Mб
Скачать

Текст программы обработки прерывания от клавиатуры

ORG 8013h ;обработчик прерывания INT1

MOV DPTR,#7FFFh

MOV A,#40h

MOVX @DPTR,A ;разрешение чтения FIFO клавиатуры

JB F0, LAB1 ;проверка режима работы клавиатуры

MOV DPTR, #7FFEh ;клавиатура - для ввода Т

MOVX A,@DPTR ;чтение скан-кода

CJNE A, #00h, KK1 ;проверка на «0»

LJMP EXIT

KK1: CJNE A, #01h, KK2 ;проверка на «1»

MOV R7,#01h ;вывод в R7 кода «1»

LJMP EXIT

KK2: CJNE A, #02h, KK3 ;проверка на «2»

MOV R7,#02h ;вывод в R7 кода «2»

LJMP EXIT

KK3: CJNE A, #03h, KK4 ;проверка на «3»

MOV R7,#03h ;вывод в R7 кода «3»

LJMP EXIT

KK4: CJNE A, #04h, KK5 ;проверка на «4»

MOV R7,#04h ;вывод в R7 кода «4»

LJMP EXIT

KK5: CJNE A, #05h, KK6 ;проверка на «5»

MOV R7,#05h ;вывод в R7 кода «5»

LJMP EXIT

KK6: CJNE A, #06h, KK7 ;проверка на «6»

MOV R7,#06h ;вывод в R7 кода «6»

LJMP EXIT

KK7: CJNE A, #07h, KK8 ;проверка на «7»

MOV R7,#07h ;вывод в R7 кода «7»

LJMP EXIT

KK8: CJNE A, #08h, KK9 ;проверка на «8»

MOV R7,#08h ;вывод в R7 кода «8»

LJMP EXIT

KK9: CJNE A, #09h, KKA ;проверка на «9»

MOV R7,#09h ;вывод в R7 кода «9»

LJMP EXIT

KKA: CJNE A, #0Ah, KKB ;проверка на «A»

MOV R7,#0Ah ;вывод в R7 кода «A»

LJMP EXIT

KKB: CJNE A, #0Bh, KKC ;проверка на «B»

MOV R7,#0Dh ;вывод в R7 кода «B»

KKC: CJNE A, #0Ch, KKD ;проверка на «C»

MOV R7,#0Ch ;вывод в R7 кода «C»

LJMP EXIT

KKD: CJNE A, #0Dh, KKE ;проверка на «D»

MOV R7,#0Dh ;вывод в R7 кода «D»

LJMP EXIT

KKE: CJNE A, #0Eh, KKF ;проверка на «E»

MOV R7,#0Eh ;вывод в R7 кода «E»

LJMP EXIT

KKF: CJNE A, #0Fh, EXIT ;проверка на «F»

SETB F0 ;установка признака задания теста F0=1

LJMP EXIT

; Установлен режим задания теста

LAB1: CJNE A, #00h, KKK1 ;проверка на «0»

CLR F0 ;установка режима ввода теста

LJMP EXIT

KKK1: CJNE A, #01h, KKK2 ;проверка на «1»

LJMP PART1

KKK2: CJNE A, #02h, KKK3 ;проверка на «2»

LJMP PART2

KKK3: CJNE A, #03h, KKK4 ;проверка на «3»

LJMP PART3

KKK4: CJNE A, #04, EXIT ;проверка на «4»

;Реализация программы 4

MOV A, R3

SWAP A

ORL A, R4 ; АСС = А В

MOV DPTR, #7FFAh ; адрес записи в Р1 и Р2

MOVX @DPTR, A ; выдача операндов

SETB 0c0h.7 ; выдача SNOIN

CLR 0c0h.7

NOP ; задержка

NOP

SETB 0c0h.4 ; сброс схемы SNO

CLR 0c0h.4

LJMP EXIT

; Реализация программы 1

PART1: MOV DPTR, #7FFBh ; адрес записи в регистр адреса

MOV A, #03h ; адрес регистра УЛС

MOVX @DPTR, A ; запись адреса в регистр адреса

MOVX А, @DPTR ; чтение операнда А

MOV R3, A

LJMP EXIT

; Реализация программы 2

PART2: MOV DPTR, #7FFBh ; адрес записи в регистр адреса

MOV A, #03h ; адрес регистра УЛС

MOVX @DPTR, A ; запись адреса в регистр адреса

MOVX А, @DPTR ; чтение операнда B

MOV R4, A

LJMP EXIT

; Реализация программы 3

PART3:MOV R7, A ;сохранение значения А

MOV DPTR,#7FFFh

MOV A,#01h

MOVX @DPTR,A ; ввод символов слева

MOV DPTR,#7FFFh

MOV A,#90h ; автоинкрементирование адреса

MOVX @DPTR,A

MOV 70h, #0F3h

MOV 71h, #60h

MOV 72h, #0B5h

MOV 73h, #0F4h

MOV 74h, #66h

MOV 75h, #0D6h

MOV 76h, #0D7h

MOV 77h, #70h

MOV 78h, #0F7h ; запись в память кодов символов

MOV 79h, #0F6h

MOV 7Ah, #77h

MOV 7Bh, #0C7h

MOV 7Ch, #93h

MOV 7Dh, #0E5h

MOV 7Eh, #097h

MOV 7Fh, #17h

MOV DPTR,#7FFEh

MOV A,#00h

MOVX @DPTR,A

MOVX @DPTR,A ; гашение индикаторов

MOVX @DPTR,A

MOVX @DPTR,A

MOV A, R7 ; возврат А

; Вывод А в крайнюю левую ячейку дисплея

Call Vivod

; Вывод А во вторую слева ячейку

Call Vivod

Call Vivod

; Вывод А в две правые ячейки

Call Vivod

Vivod:

MOV DPTR,#7FFEh

ADD A, #70h

MOV R0, A

MOV A, @R0

MOVX @DPTR, A ; вывод цифры на индикацию

RET

EXIT: RETI

END