Разработка микропроцессорной системы. Разработка интерфейсных устройств ввода - вывода. Расчёт электрического сопряжения адресных цепей., страница 16

80C4  E4 02                          in AL,02H  ;включение таймера

80C6  0C 02                          or AL,00000010B

80C8  E6 02                          out 02H,AL

80CA  9B                              wait       ;ожидание в течении времени Т1

80CB  32 C0                          xor AL,AL

80CD  E6 01                          out 01H,AL ;завершение Y1

80CF  59                             pop CX     ;восстановление регистров

80D0  5B                             pop BX

80D1  58                             pop AX

80D2  C3                             ret

80D3                         Input_X1_4  Endp

;Модуль ввода напряжений Х5 и Х6 и формирования сигналов Y2 и Y3

80D3                         Input_X5_6      proc  near

80D3  50                             push AX

80D4  53                             push BX

;ввод N6

80D5  E5 11                       in AX,11H

80D7  8B D8                      mov BX,AX  ;перенос N6 в BX

;ввод N5

80D9  E5 04                       in AX,04H

;получение Q2

80DB  26: 03 1E 0400       add BX,ES:[0400H] ;в AX - N6+K

80E0  3B C3                      cmp AX,BX

80E2  7F 02                       jg Res1    ;если AX - больше, то оставляем в АХ - N5

80E4  8B C3                      mov AX,BX  ;замена АХ на максимальный элемент (N6+K)

80E6                         Res1:              ;теперь в АХ - значение функции Q2

;сравнение Q2 с Q0

80E6  26: 3B 06 0404        cmp AX,ES:[0404H]

80EB  77 14                       ja M_Y3    ;если Q2 больше - переход

;случай Q2<Q0:

;загрузка таймера задержкой Т2=60 мс

80ED  B0 88                      mov AL,10001000B ;младший байт

80EF  E6 25                       out 25H,AL

80F1  B0 13                       mov AL,00010011B ;старший байт

80F3  E6 25                       out 25H,AL

;включение счетчика

80F5  E4 02                       in AL,02H

80F7  0C 02                       or AL,00000010B

80F9  E6 02                       out 02H,AL

;вывод Y2

80FB  B0 02                       mov AL,00000010B

80FD  E6 01                       out 01H,AL

80FF  EB 12                       jmp Delay  ;переход на реализацию задержки

8101                         M_Y3:

;случай Q2>Q0, выдача Y3

;загрузка таймера задержкой Т3=20 мс

8101  B0 C4                       mov AL,11000100B ;младший байт

8103  E6 51                        out 51H,AL

8105  B0 09                        mov AL,00001001B ;старший байт

8107  E6 51                        out 51H,AL

;включение счетчика

8109  E4 02                        in AL,02H

810B  0C 02                       or AL,00000010B

810D  E6 02                      out 02H,AL

;вывод Y3

810F  B0 04                       mov AL,00000100B

8111  E6 01                       out 01H,AL

8113                         Delay:

8113  9B                            wait       ;ожидание

8114  B0 00                       mov AL,0   ;снятие сигнала Y2 или Y3

8116  E6 01                       out 01H,AL

8118  E4 02                       in AL,02H  ;выключение таймера-счетчика

811A  24 FD                     and AL,11111101B

811C  E6 02                      out 02H,AL

811E  5B                           pop BX

811F  58                           pop AX

8120  C3                           ret

8121                         Input_X5_6  endp

;Модуль ввода напряжения Х7 и формирования сигнала Y4

8121                         Input_X7  proc   near

8121  50                            push AX

8122  53                            push BX

8123  52                            push DX

;ввод N7

8124  E5 06                      in AX,06H

;вычисление Q4

8126  B3 40                      mov BL,01000000B ;A1 - в ВХ

8128  F6 E3                      mul BL     ;в АХ - число А1*N7

812A  8A C4                    mov AL,AH  ;отсукаем младшую часть