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

025E  CA 53 02             JZ    M2       ;

0261  CD 95 02   M1:       CALL  WAIT1    ; небольшая задержка для записи в регистры

0264  3E 02                MVI   A,02H    ; WD1=0

0266  DB D4                IN    PORT3    ;

0268  32 12 20             STA   IN_BYTE1 ;

026B  DB D5                IN    PORT4    ;

026D  32 13 20             STA   IN_BYTE2 ;

0270  DB E4                IN    PORT5    ;

0272  32 14 20             STA   IN_BYTE3 ;

0275  DB E5                IN    PORT6    ;

0277  32 15 20             STA   IN_BYTE4 ;


027A  DB D6                IN    PORT10   ;

027C  32 16 20             STA   IN_BYTE5 ;

027F  DB E6                IN    PORT11   ;

0281  E6 0F                ANI   0FH      ; маска 00001111

0283  F6 A0                ORI   A0H      ; добавляем 10100000

0285  32 17 20             STA   IN_BYTE6 ;

0288  DB F4                IN    PORT7    ;

028A  32 18 20             STA   IN_BYTE7 ;

028D  DB F5                IN    PORT8    ;

028F  32 19 20             STA   IN_BYTE8 ;

0292  C3 9E 02             JMP   DECODE   ;

0295  3E FF      WAIT1:    MVI   A,FFH    ; около 1 мкс

0297  3D                   DCR   A        ;

0298  3C                   INR   A        ;

0299  3D                   DCR   A        ;

029A  C2 95 02             JNZ   WAIT1    ;

029D  C9                   RET            ;

029E  21 20 20   DECODE:   LXI   H,STT_TBL; начинаем проверять и записывать

02A1  3A 12 20             LDA   IN_BYTE1 ; в таблицу состояния состояние секций

02A4  CD 00 03             CALL  INTERP   ;

02A7  3A 13 20             LDA   IN_BYTE2 ;

02AA  CD 00 03             CALL  INTERP   ;

02AD  3A 16 20             LDA   IN_BYTE5 ;

02B0  CD 00 03             CALL  INTERP   ;

02B3  3A 14 20             LDA   IN_BYTE3 ;

02B6  CD 00 03             CALL  INTERP   ;

02B9  3A 15 20             LDA   IN_BYTE4 ;

02BC  CD 00 03             CALL  INTERP   ;

02BF  3A 17 20             LDA   IN_BYTE6 ;

02C2  CD 00 03             CALL  INTERP   ;

02C5  21 20 20             LXI   H,STT_TBL;

02C8  CD 6B 03             CALL  M4       ; заполнить байт сосояния 1

02CB  78                   MOV   A,B      ;

02CC  32 80 20             STA   STATEB1  ;

02CF  CD 6B 03             CALL  M4       ; заполнить байт сосояния 2

02D2  78                   MOV   A,B      ;

02D3  E6 FC                ANI   FCH      ;

02D5  0F                   RRC            ;

02D6  0F                   RRC            ;

02D7  32 85 20             STA   STATEB2  ;

02DA  21 2E 20             LXI   H,202EH  ; адрес таблицы сосояний, раздел стрелки

02DD  CD 6B 03             CALL  M4       ; заполнить байт сосояния 3

02E0  78                   MOV   A,B      ;

02E1  32 90 20             STA   STATEB3  ;

02E4  C3 1A 03             JMP   EXIT_D   ; выход

02E7  06 00      M4:       MVI   B,00H    ; формирование байта состояния

02E9  0E 08                MVI   C,08H    ; счетчик бит

02EB  CD 53 02   M3:       CALL  M2       ; формирование байта стековым образом

02EE  23                   INX   H        ; следующий элемент сосояния

02EF  0D                   DCR   C        ; уменьшаем счетчик бит

02F0  79                   MOV   A,C      ;

02F1  FE 00                CPI   00H      ;

02F3  C2 EB 02             JNZ   M3       ; если счетчик не = 0 - цикл

02F6  C9                   RET

02F7  78         M2:       MOV   A,B      ; чтение текущего сосояния байта

02F8  07                   RLC            ;

02F9  47                   MOV   B,A      ;

02FA  7E                   MOV   A,M      ;

02FB  E6 01                ANI   01H      ;

02FD  B0                   ORA   B        ; добавление к нему информации со сдвигом

02FE  47                   MOV   B,A      ;

02FF  C9                   RET            ;

0300  CD 0D 03   INTERP:   CALL  STOR     ; вызов самого декодера

0303  CD 0D 03             CALL  STOR     ;

0306  CD 0D 03             CALL  STOR     ;

0309  CD 0D 03             CALL  STOR     ;