804B B0 F4 mov AL,11110100B
804D E6 50 out 50H,AL
;инициализация программируемого контроллера прерываний
804F B0 13 mov AL,00010011B ;СКИ1
8051 E6 60 out 60H,AL
8053 B0 00 mov AL,0 ;СКИ2
8055 E6 61 out 61H,AL
8057 B0 03 mov AL,00000011B ;СКИ4
8059 E6 61 out 61H,AL
;загрузка векторов прерывания в таблицу
805B 8C C8 mov AX,CS ;получение текущего сегмента
805D 26: A3 0000 mov ES:[0000H],AX
8061 26: A3 0004 mov ES:[0004H],AX
8065 26: A3 0008 mov ES:[0008H],AX
8069 26: C7 06 0002 8134r mov ES:[0002H],offset Avar ;смещение подпрограммы обработки IRQ0
8070 26: C7 06 0006 8140r mov ES:[0006H],offset Power ;для IRQ1
8077 26: C7 06 000A 8185r mov ES:[000AH],offset Input_Keyb ;для IRQ2
807E FB sti
807F C3 ret ;возврат в основную программу
8080 Init endp
;Модуль логической обработки сигналов Х1-Х4
;и формирование управляющего сигнала Y1
8080 Input_X1_4 Proc Near
8080 50 push AX ;сохранение используемых регистров
8081 53 push BX
8082 51 push CX
8083 E4 00 in AL,00H ;опрос канала А
;в четырех младших разрядах AL- сигналы Х1-Х4
8085 A8 01 test AL,01H ;тест на Х1
8087 74 05 jz M1_1
;если X1-не 0
8089 80 FB 01 cmp BL,01H ;засылка Х1 в BL
808C EB 02 jmp M2
808E M1_1: ;если Х1 - 0
808E 32 DB xor BL,BL ;обнуление BL
8090 A8 02 M2: test AL,02H ;тест на Х2
8092 74 05 jz M2_1
;если Х2 - не 0
8094 80 E7 01 and BH,01H ;засылка Х2 в ВН
8097 EB 02 jmp M3
8099 M2_1: ;если Х2 -0
8099 32 FF xor BH,BH ;обнуление ВН
809B A8 04 M3: test AL,04H ;тест на Х3
809D 74 05 jz M3_1
;если Х3-не 0
809F 80 E1 01 and CL,01H ;засылка Х3 в CL
80A2 EB 02 jmp M4
80A4 M3_1: ;если Х3 - 0
80A4 32 C9 xor CL,CL ;обнуление CL
80A6 A8 08 M4: test AL,08H ;тест на Х4
80A8 74 05 jz M4_1
;если Х4 - не 0
80AA 80 E5 01 and CH,01H ;Х4 - в СН
80AD EB 02 jmp M_end
80AF M4_1: ;если Х4 -0
80AF 32 ED xor CH,CH ;в СН-0
80B1 M_end: ;конец опроса датчиков Х1-Х4
;Х1 хранится в BL, Х2-в ВН, Х3-в CL, Х4-в СН
;Получение Y1:
80B1 22 DF and BL,BH ;в BL - функция Х1*Х2
80B3 22 CD and CL,CH ;в СL - Х3*Х4
80B5 0A D9 or BL,CL ;в BL- Y1=Х1*X2+X3*X4
;Загрузка модуля пересчета в канал 1 таймера
80B7 B0 4C mov AL,01001100B ;загрузка младшего байта
80B9 E6 25 out 25H,AL
80BB B0 1D mov AL,00011101B ;загрузка старшего байта
80BD E6 25 out 25H,AL
80BF FA cli ;запрет прерываний
80C0 8A C3 mov AL,BL ;Y1-в AL
80C2 E6 01 out 01H,AL ;выдача Y1
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.