Ввод состояния SB5 “Пуск” Останов МП
Нет
SB3 замкнутa
?
Да
Задержка на время 20 мс
Восстановить регистры МП из стека
Разрешить прерывания
Возврат
Рис. 3.19. БСА программы работы ПУ
; IDENTIF – подпрограмма идентификации замкнутого SA1-SA4 |
|||
; Выходной параметр: регистр С – позиционный код переключателя |
|||
MASK1 |
EQU 0000 1110B |
||
MASK2 |
EQU 0000 1101B |
||
MASK3 |
EQU 0000 1011B |
||
MASK4 |
EQU 0000 0111B |
||
IDENTIF: |
IN IPORT |
||
ANI 0FH |
|||
MOV B, A |
|||
CPI MASK1 |
|||
JZ EXIT1 |
; |
Если D0=0 |
|
MOV A, B |
|||
CPI MASK2 |
|||
JZ EXIT2 |
; |
Если D1=0 |
|
MOV A, B |
|||
CPI MASK3 |
|||
JZ EXIT3 |
; |
Если D2=0 |
|
MVI C, 03H |
; |
Код переключателя SA4 |
|
RET |
|||
EXIT1: |
MVI C, 00H |
; |
Код переключателя SA1 |
RET |
|||
EXIT2: |
MVI C, 01H |
; |
Код переключателя SA2 |
RET |
|||
EXIT3: |
MVI C, 02H |
; |
Код переключателя SA3 |
RET |
Если замкнут один из переключателей SA1-SA4, то на линейный дисплей выводится соответствующий код W1-W4 из массива DATA_W. Схема подключения индикаторов дисплея приведена на рис. 3.15. При программировании вывода на дисплей следует учесть, что на индикаторы необходимо выводить семисегментный двоичный код, а МП оперирует с данными в позиционном двоичном коде. Поэтому необходима перекодировка перед выводом информации на дисплей.
; CROSSCODE – подпрограмма перекодировки |
|||
; Входной параметр: регистр С – позиционный код символа |
|||
; Выходной параметр: регистр A – семисегментный код символа |
|||
CROSSCODE: |
MVI B, 0 |
||
LXI H, TABLE |
; |
В паре HL – адрес TABLE |
|
DAD B |
; |
(HL)(HL)+(BC) |
|
MOV A, M |
|||
RET |
|||
TABLE: |
DB 3FH |
; |
Код символа “0” |
DB 06H |
; |
Код символа “1” |
|
………. |
………. |
||
DB 71H |
; |
Код символа “F” |
Полную таблицу семисегментных кодов можно найти в [10].
Программа вывода на дисплей имеет вид:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.