Ввод состояния 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) |
|
|
MOV A, M |
|||
|
RET |
|||
|
TABLE: |
DB 3FH |
; |
Код символа “0” |
|
DB 06H |
; |
Код символа “1” |
|
|
………. |
………. |
||
|
DB 71H |
; |
Код символа “F” |
|
Полную таблицу семисегментных кодов можно найти в [10].
Программа вывода на дисплей имеет вид:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.