从机中断接收通讯子程序.asm

来自「一主多从中断方式,查询方式,完整的单片机通讯程序集合,编译即可应用。」· 汇编 代码 · 共 77 行

ASM
77
字号
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;      name:    MCOM:                                                            *
;  FUNCTION:                                             *
;     ENTRY:                                                          *
;                      1   与数据流方向相同                                      *
;               ABUFFER1,ABUFFER2 :该段效果前进方向的末端地址                   *
;               COLOURC:   必须通过前级程序为其赋值:#颜色代码                   *
;               SEG   :(SHIFT TIMES OF 1 ROW)=BYTES-1   THREE BYTES ONE PIPE    *
;                        在该区间(一行,半行,或更少)移动的次数,也就是该区间    *
;                        字节数减1。                                             *
;   出口信息:                                                                   *                                                                *
; 子程序调用:   无                                                              *
;   影响资源:   R0,R1                                                           *
;   堆栈需求:   3字节                                                           *
;   全局变量:    无                                                              *
;   作 者:      孙宗伟                                                          *
;   日 期:      2006年1月1日                                                    *
;   修改人:      孙宗伟                                                          *
;   日 期:      2006年1月1日                                                    *
;   执行时间:   297us~~624us 跟随SEG和PFLAG的取值而变化                         *
;     remark:    USE EXTEND  RAM 61C256                                          *
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                  ;5# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                  ;从机中断接收方式, 主机中断发送方式
                  ORG    0023H
                  LJMP   SERVE
                  ORG    0050H

        START:    MOV    TMOD,#20H
                  MOV    TL1,#0F3H
                  MOV    TH1,#0F3H
                  SETB   TR1
                  MOV    PCON,#80H  ;SMOD=1
                  MOV    SCON,#0F0H ;11110000B
                  MOV    08H,#50H
                  MOV    09H,#60H
                  SETB   PSW.1
                  SETB   PSW.5
                  SETB   EA
                  SETB   ES
                 ; LJMP   MAIN
                  ;....
       SERVE:     CLR    RI
                  PUSH   ACC
                  PUSH   PSW
                  MOV    A,R0
                  PUSH   A
                  JB     PSW.1,IS_ADDR
                  JB     PSW.5,IS_BYTES
                  MOV    R0,2EH
                  MOV    A,SBUF
                  MOV    @R0,A
                  INC    2EH
                  DJNZ   2FH,RETURN
                  SETB   PSW.1
                  SETB   PSW.5
                  SETB   SM2
        IS_ADDR:  MOV    A,SBUF
                  CJNE   A,#01H,RETURN
                  MOV    SBUF,#01H
         WAIT:    JNB    TI,WAIT
                  CLR    TI
                  CLR    PSW.1
                  CLR    SM2
                  SJMP   RETURN
       IS_BYTES:  MOV    A,SBUF
                  MOV    R0,#60H
                  MOV    @R0,A
                  MOV    2FH,A
                  MOV    2EH,#61H
                  CLR    PSW.5
      RETURN:     POP    A
                  MOV    R0,A
                  POP    A
                  RETI
               

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?