Блок управления для системы кодового контроля с возможностью внутреннего соединения абонентов, страница 27

JR NZ,V I                  ;если в аккумуляторе не ноль - повторить цикл

                LD HL,32768

LD BC,2048

V2              LDA,170             ;10101010

LD (HL),A

XOR (HL)

OR D

JP Z,V21

                          LD A,D

OR 0

JR NZ,V21

LD A,E

SBC 100

JP P,ERROR

V21           INC HL

INC DE

DEC ВС

LD A,B

AND С

JR NZ,V2

LD HL,32768

LD BC,2048

V3            LDA,55                       ;01010101

LD (HL),A

XOR (HL)

JP Z,V31

LD A,D

OR  0

JR NZ,V31

LD A,E

SBC 100

JP P,ERROR

V31           INC HL

INC DE

DEC ВС

LD A,B

AND С

JR NZ,V3

LD HL,32768

LD BC,2048

V4          LDA.55                    ;10101010

LD (HL),A

XOR (HL)

JPZ,V41

LD A,D

OR 0

JR NZ,V41

LD A,E

SBC 100

JP P,ERROR

V41       INC HL

INC DE

DEC ВС

LD A,B

AND С

JR NZ,V4

LD HL,32768

LD BC,2048

V5       LD A,0                   ;00000000

LD (HL),A

XOR (HL)

JPZ,V51

LD A,D

OR 0

JR NZ,V51

LD A,E

SBC 100

JP P,ERROR

V51    INC HL

INC HL

INC DE

DEC ВС  

LD A,B

AND С

JR NZ,V5

      JP WORK;переход к нормальной работе

ERROR               LD ВС,3000          ;количество импульсов звука

SERR                   LD A,16

OUT (249),А      ;уст. I в бите порта для формирования импульса

S 1                    LD DE,50             ;50 циклов - длительность импульса

DEC DE

LD A,D

AND E

JR NZ,S1

LD A,0

OUT (249),A        ;остановка 0 - окончание импульса

DEC ВС

LD A,B

AND С

JR NZ,SERR

    OUT   (249),51      ;передача  на индикатор сигнала ошибки ;запятая на     2-м индикаторе и «занято» ла линию абонентов

LD С,255                ;маска «все единицы»

LD A,6

OUT (220),A         ;опрос 1 линии клавиатуры

IN A,(222)              ;прием байта данных

XOR С                     ;проверка на равенство

JP Z,KL                  ;нажата клавиша

LD A,5

OUT (220),A        ;опрос 2 линии клавиатуры

IN A,(222)

XOR С

JP Z,KL

LD A,3

OUT (220),A         ;опрос 3 линии клавиатур

IN A,(222)

                         XOR C

JP Z,KL

SEARCH         LD A,6

OUT (220),A         ;oпрос 1 линии клавиатуры

IN А,(222)   ;прием байта данных

PUSH AF                ;запомним аккумулятор в стеке

AND 14                   ;проверка 1-й возвратной линии на 0

JP Z,KL 1               ;нажата клавиша «1»—обработка результата

POP АР                   ;возврат аккумулятора из стека

PUSH AF               ;запомним аккумулятор в стеке

AND 13                  ;проверка 2-й возвратной линии на 0

JP Z,KL4                ;нажата клавиша «4» - обработка результата

POP AF ;возврат аккумулятора из стека

PUSH AF              ;запомним аккумулятор в стеке

POP AF               ;возврат аккумулятора из стека

PUSH AF            запомним аккумулятор в стеке

AND 11               ;проверка 3-й возвратной линии на 0

JP Z,KL7             ;нажата клавиша «7» - обработка результата

POP AF               ;возврат аккумулятора из стека

PUSH AF            ;запомним аккумулятор в стеке

POP AF               ;возврат аккумулятора из стека

PUSH AF            ;запомним аккумулятор в стеке

AND 7                    ;проверка 4-й возвратной линии на 0

JP Z,KL7                ;нажата клавиша «#» - обработка результата

POP AF;возврат аккумулятора из стека

LDA,5

OUT (220),A         ;опрос 2 линии клавиатуры

IN A,(222)

PUSH AF

AND 14

JP Z,KL2               ;нажата клавиша «2» - обработка результата

POP AF

PUSH AF

AND 13

JP Z,KL5               ;нажата клавиша «5» - обработка результата

POPAF

PUSH AF

POP AF

PUSH AF

AND 11

JP Z,KL8                ;нажата клавиша «8» - обработка результата

POP AF

PUSH AF

POP AF

PUSH AF

AND 7

JP Z,KL3                ;нажата клавиша «3» - обработка результата

POP AF

LD A,3

OUT (220),A                    ;onpoc 3 линии клавиатуры

IN A,(222)

PUSH AF

AND 14

JP Z,KL3                ;нажата клавиша «З» - обработка результата

POP AF

PUSH  AF

AND 13

JP Z,KL6                ;нажата клавиша «6» - обработка результата

POP AF

PUSH AF

POP AF

PUSH AF

AND 11

JP Z,KL9                ;нажата клавиша «9» - обработка результата

POP AF

PUSH AF

POP AF

PUSH AF

AND 7

JP Z,KLZ               ;нажата клавиша «*» - обработка результата

POP AF

RET                         ;возврат