;приоритета "1"
0054 75 B8 FF mov IP,#FFH
;запрет всех прерываний, кроме INT0
0057 75 A8 00 mov IE,#00H
005A D2 A8 setb IE.0
005C D2 AF setb IE.7
;настройка всех параллельных интерфейсов
;на ввод / вывод
;код управляющего слова
005E 74 90 mov A,#10010000B
;рассылка по портам
;первый интерфейс
0060 90 08 03 mov DPTR,#0803H
0063 F0 movx @DPTR,A
;второй интерфейс
0064 90 0A 03 mov DPTR,#0A03H
0067 F0 movx @DPTR,A
;третий интерфейс
0068 90 0B 03 mov DPTR,#0B03H
006B F0 movx @DPTR,A
;сброс триггера-фиксатора запроса
;прерывания от клавиатуры
006C C2 90 clr P1.0
006E D2 90 setb P1.0
;гашение всех цифровых индикаторов
0070 E4 clr A
0071 90 0A 00 mov DPTR,#0A00H
0074 F0 movx @DPTR,A
0075 90 0A 01 mov DPTR,#0A01H
0078 F0 movx @DPTR,A
0079 90 0A 02 mov DPTR,#0A02H
007C F0 movx @DPTR,A
;гашение всех светодиодов
007D 90 0B 02 mov DPTR,#0B02H
0080 F0 movx @DPTR,A
0081 22 ret
;---------------------------------------------------------;Модуль логической обработки сигналов
;Х1-Х4 и формирования управляющего
;сигнала Y1
0082 OUTY1:
;ввод значений Х1-Х4 в A
0082 90 08 00 mov DPTR,#0800H
0085 E0 movx A,@DPTR
;вычисление функции Y1-результат в C
;пересылка в С Х2
0086 A2 E1 mov C,A.1
;операция Х2*X3
0088 82 E2 anl C,A.2
;операция X4+X2*X3
008A 72 E3 orl C,A.3
;операция X1*(X4+X2*X3)
008C 82 E0 anl C,A.0
;выставим сигнал Y1=1
008E 90 08 01 mov DPTR,#0801H
0091 E0 movx A,@DPTR
0092 92 E0 mov A.0,C
0094 F0 movx @DPTR,A
;задержка на 100 мс-время присутствия
;сигнала Y1
0095 79 64 mov R1,#100
0097 78 C8 LABEL1: mov R0,#200
0099 00 LABEL2: nop
009A 00 nop
009B 00 nop
009C D8 FB djnz R0,LABEL2
009E D9 F7 djnz R1,LABEL1
;всего будет 20000 повторений
;снятие синала Y1 (то есть сброс в 0)
00A0 90 08 01 mov DPTR,#0801H
00A3 E0 movx A,@DPTR
00A4 C2 E0 clr A.0
00A6 F0 movx @DPTR,A
00A7 22 ret
;---------------------------------------------------------;Модуль ввода напряжений Х5 и Х6 и
;формирования сигналов Y2 и Y3
00A8 OUTY2Y3:
;произвольное значение константы Q0
0011 Q0 EQU 11H
;ввод значения Х5 в R2
00A8 90 09 00 mov DPTR,#0900H
00AB E0 movx A,@DPTR
00AC FA mov R2,A
;ввод значения Х6 в R3
00AD 90 09 01 mov DPTR,#0901H
00B0 E0 movx A,@DPTR
00B1 FB mov R3,A
;ввод значения K(уставка) в R4
00B2 90 00 00 mov DPTR,#0000H
00B5 E0 movx A,@DPTR
00B6 FC mov R4,A
;вычисление значения функции Q2
;результат будет в А
00B7 EA mov A,R2
00B8 2B add A,R3
00B9 2C add A,R4
;сравнение Q2 с Q0
00BA 95 11 subb A,Q0
;если Q2>Q0, то флаг С=0
;иначе флаг С=1
00BC 40 1C jc LABEL2Q
;Q2>Q0, поэтому формируем Y3
;выставим сигнал Y3=1
00BE 90 08 01 mov DPTR,#0801H
00C1 E0 movx A,@DPTR
00C2 D2 E2 setb A.2
00C4 F0 movx @DPTR,A
;задержка на 40 мс-время присутствия
;сигнала Y3
00C5 79 28 mov R1,#40
00C7 78 C8 LABEL11: mov R0,#200
00C9 00 LABEL12: nop
00CA 00 nop
00CB 00 nop
00CC D8 FB djnz R0,LABEL12
00CE D9 F7 djnz R1,LABEL11
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.