Разработка микропроцессорной системы для управления абстрактным объектом, состояние которого характеризуется несколькими бинарными и аналоговыми сигналами, страница 7

                MOV     R7,P1

                MOV     A,#04H

                MOV     P0,A

                                       ; ПРОЧИТАТЬ V2

                MOV     R6,P1

                MOV     A,#08H

                MOV     P0,A

                                       ; ПРОЧИТАТЬ V3

                MOV     R5,P1

                MOV     A,#12

                CALL    SETPORT

                MOV     A,P0

                ANL     A,#0F0H

                MOV     R4,A

                MOV     A,#13

                CALL    SETPORT

                MOV     A,P0

                RL      A

                RL      A

                RL      A

                RL      A

                ANL     A,#0FH

                ORL     A,R4

                MOV     A,R4

                ADD     A,R6

                MOV     R4,A

                SUBB    A,R7

                JC      MIN

                MOV     R7,R4

MIN:

                MOV     A,R7

                SUBB    A,#0          ; - КОНСТАНТА Q=0

                JC      Y2

                MOV     A,#14

                CALL    SETPORT

                MOV     A,#13         ; 40 МКС = 13*3+1

USTY2:

                SETB    P0.4

                DEC     A

                JZ      USTY2

                CLR     P0.4

                JMP     Y3

Y2:

                MOV     A,#15

                CALL    SETPORT

                MOV     A,#13         ; 20 МКС = 6*3+1+1

USTY3:

                SETB    P0.4

                DEC     A

                JZ      USTY3

                DEC     A

                CLR     P0.4

Y3:

                MOV     A,R5

                MOV     R1,#13         ; A1=13

                CALL    MULT

                ADD     A,#13          ; A0=13

                MOV     R5,A

                MOV     A,#8           ; ВЫДАТЬ НА ЦАП

                CALL    SETPORT

                MOV     A,R5

                ANL     A,#0F0H

                MOV     P0,A

                MOV     A,R5

                RL      A

                RL      A

                RL      A

                RL      A

                ANL     A,#0F0H

                MOV     P0,A

                MOV     R6,R3

                CJNE    R6,#FFH,BEGIN  ; ЕСЛИ ПРОИЗОШЛА ОШИБКА

ITSELF:         JMP     ITSELF            ; ОСТАНОВИТЬ ВЫПОЛНЕНИЕ

SETPORT:

                RL      A

                RL      A

                ANL     A,#0C0H

                MOV     P1,A

                RET

INIT:

                MOV     IE,#89H    ;ВКЛЮЧИТЬ ОБРАБОТЧИКИ INT1 И INT0

                MOV     R6,#00H

                RET

                PINT0:

                JB      P0.7,RINT1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;          ОБРАБОТЧИК INT0                              ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

RINT0:

                CALL    ERROR

                RETI

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;          ОБРАБОТЧИК INT1                              ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

RINT1:

                CALL    ERROR

                RETI

                PINT1:

                JB      P0.7,RINT3

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;          ОБРАБОТЧИК INT2                              ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

RINT2:

                MOV     A,SBUF

                SUBB    A,#41H   ; СРАВНИТЬ С "A" (КОД 41H)

                JZ      CODA

                SUBB    A,#03H   ; СРАВНИТЬ С "D" (КОД 44H=41H+3H)

                JZ      EXITINT

                MOV     SBUF,R5  ; ВЫДАТЬ АНАЛОГОВЫЙ СИГНАЛ Y4

                RETI

CODA:

                MOV     SBUF,R4  ; ВЫДАТЬ Y1

EXITINT:

                RETI

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;          ОБРАБОТЧИК INT3                              ;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

RINT3:

                JMP     START

ERROR:

                MOV     R6,#FFH

                MOV     SBUF,#21H  ; ВЫДАТЬ В ЛИНИЮ "!"

                MOV     A,#14

                CALL    SETPORT

                MOV     A,0

                MOV     P0,A

                MOV     A,#3

                CALL    SETPORT

                MOV     A,0

                MOV     P0,A

                RET

END.