Разработка микропроцессорной централизации малой станции. Разработка структурной схемы МПС. Блок центрального процессора, страница 13

0156  F5                   PUSH  PSW      ; запомнить состояние

0157  D5                   PUSH  D        ;

0158  E5                   PUSH  H        ;

0159  3E 05                MVI   A,05H    ;

015B  D3 F7                OUT   PPI4MS   ; GATE1=0 - выкл таймера отмены

015D  21 00 20             LXI   H,2000H  ; поиск отменяющегося маршрута

0160  16 0C                MVI   D,0CH    ; счетчик маршрутов

0162  7E         M1:       MOV   A,M      ; загружаем состояние маршрута

0163  FE 05                CPI   05H      ; проверяем: в режиме отмены?

0165  CA 72 01             JZ    VOT_ON   ; нашли активный

0168  23                   INX   H        ; следующий маршрут

0169  7A                   MOV   A,D      ; уменьшаем счетчик маршрутов

016A  3D                   DCR   A        ;

016B  57                   MOV   D,A      ;

016C  C2 62 01             JNZ   M1       ; если не все маршруты проверены - цикл

016F  C3 A6 01             JMP   EXIT_O   ; если не найдено - выход из прерывания

0172  7D         VOT_ON:   MOV   A,L      ; проверяем первые секции маршрутов приема

0173  FE 00                CPI   00H      ;

0175  CA 90 01             JZ    NO1      ; нечетный прием 1

0178  FE 01                CPI   01H      ;

017A  CA 90 01             JZ    NO1      ; нечетный прием 2

017D  FE 06                CPI   06H      ;

017F  CA 9B 01             JZ    NO2      ; четный прием 1

0182  FE 07                CPI   07H      ;

0184  CA 9B 01             JZ    NO2      ; четный прием 2

0187  36 00      MO:       MVI   M,00H    ; маршрут отменен

0189  3E 09                MVI   A,09H    ;

018B  D3 E7                OUT   PPI3MS   ; выключаем лампочку "ОТМЕНА"

018D  C3 A6 01             JMP   EXIT_O   ; выход из прерывания

0190  3A 2B 20   NO1:      LDA   PNA      ;

0193  FE 03                CPI   03H      ; проверка свободности секции ПНА

0195  C2 A6 01             JNZ   EXIT_O   ; она занялась - прекратить отмену

0198  C3 87 01             JMP   MO       ; если свободна - отмена

019B  3A 23 20   NO2:      LDA   PCHA     ;

019E  FE 03                CPI   03H      ; проверка свободности секции ПЧА

01A0  C2 A6 01             JNZ   EXIT_O   ; она занялась - прекратить отмену

01A3  C3 87 01             JMP   MO       ; если свободна - отмена

01A6  3E 20      EXIT_O:   MVI   A,20H    ;

01A8  D3 C0                OUT   PICW1    ; завершаем прерывание

01AA  FB                   EI             ; разрешаем прерывания

01AB  E1                   POP   H        ;

01AC  D1                   POP   D        ;

01AD  F1                   POP   PSW      ; восстанавливаем сосояние

01AE  C9                   RET            ; выход

01AF  F3         IRQ_STR:  DI             ; запрет прерываний

01B0  F5                   PUSH  PSW      ; запомнить состояние

01B1  D5                   PUSH  D        ;

01B2  3E 02                MVI   A,02H    ;

01B4  D3 F7                OUT   PPI4MS   ; GATE0=0 - выкл таймена стрелки

01B6  3A 90 20             LDA   STATEB3  ; загружаем текущее сстояние датчиков

01B9  57                   MOV   D,A      ;

01BA  3A 60 20             LDA   OUTPUT1  ; загружаем выставленное управление

01BD  BA                   CMP   D        ; сравниваем

01BE  C2 F3 0A             JNZ   VIKL     ; если они различны - в защитное состояние

01C1  3E 04                MVI   A,04H    ;

01C3  32 53 20             STA   OUT_MODE ; помечаем, что перевод осуществлен

01C6  3E 20                MVI   A,20H    ;

01C8  D3 C0                OUT   PICW1    ; завершаем прерывание

01CA  FB                   EI             ; разрешаем прерывания

01CB  D1                   POP   D        ;

01CC  F1                   POP   PSW      ; восстанавливаем сосояние

01CD  C9                   RET            ; выход

01CE  F3         IRQ_GO:   DI             ; запрет прерываний

01CF  F5                   PUSH  PSW      ; запомнить состояние

01D0  3E 04                MVI   A,04H    ;