Устройство управления светофором, страница 3

;

porta             equ 80h             ; адрес первого индикатора

portb           equ  81h             ; адрес второго индикатора

portc           equ  82h             ; адрес клавиатуры

porcrl                     equ   83h            ; адрес порта управления внешними

; устройствами

pov               equ  43528         ; постоянная времени задержки на 1 сек.

povdr                     equ  255             ; пост. времени защиты от дребезга (кол.

; повторов)

kodkl          equ    18h             ; код режима «н.п.» и «жесткий» 00011000 (кл.

; «3»,и«4»).

kodkl1        equ    1аh             ; код обоих режимов и останова  00011010 (кл.

; «1», «3» и «4»).

;

                     org  800h           ; стартовый адрес программы в ОЗУ стенда

; инициализация

lxi     sp,900h      ; инициализация указателя стека

mvi   a,89h          ; загрузка управляющего байта внешних ;устройств

out    porcrl                    ; вывод управляющего байта в порт управления

mvi   b,0                 ; инициализация регистров микропроцессора         

                            mvi   d,0

                            jmp   noch              ; переход к выполнению режима «ночной

; перекресток», w1

;ожидание пуска или смены режима 

circl:           mvi   c,povdr       ; загрузка кол-ва повторов при защите от

; дребезга, w2

rept:           in      portc          ; опрос клавиатуры, w3

                   ani     kodkl          ; нажата кл. «1» или «4» ?

                   jz       circl            ; ничего не нажато, перейти на circl, w4

; защита от дребезга при нажатии

zach:           dcr    c                 ; уменьшение счетчика повторов при

; защите от дребезга

                      jnz  rept            ; дребезг еще не окончен, w5

                                                   ; дребезг при нажатии окончен

                                                   ; сохранение кода нажатой клавиши

in      portc          ; чтение кода нажатой клавиши                                             

                        mov b,a              ; пересылка в регистр b кода нажатой клавиши,

 ; адрес которой находится в регистре а        

reset1:        mvi   c,povdr       ; ожидание отпускания клавиши, w6     

rept1:                   in      portc          ; опрос клавиатуры, w7

                      ana    a                 ; ни одна клавиша не нажата ?

                        jnz    reset1                   ; нет, что-то нажато, w8

                                                      ; защита от дребезга при отпускании клавиши

                       dcr    c                 ; ничего не нажато, уменьшение счетчика

 ;  повторов при  защите от дребезга                                                         

                                 jnz    rept1          ; дребезг еще не окончен, w9                                                                          

                                                       ; дребезг при отпускании окончен

                                                       ; чтение кода нажатой клавиши

                        mov    a,b                ; пересылка в регистр а кода нажатой клавиши, ; адрес которой находтся в регистре b

                        cpi   08h             ; число 08h соответствует нажатой кл. «3»                       

                        jz        noch                     ; нажат «ночной режим», переход к его

; выполнению, w10                  

;выполнение «жесткого» режима

jestk:mvi       a,10h                   ;пересылка в аккумулятор данных