⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 从机中断通讯子程序.asm

📁 一主多从中断方式,查询方式,完整的单片机通讯程序集合,编译即可应用。
💻 ASM
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;      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# 从机    主机查询方式
                  MYADDR   EQU   5
         ;         ORG    0000H
          ;        AJMP   START
           ;       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   EA
                  SETB   ES
                 ; LJMP   MAIN
                  ;....
       SERVE:     CLR    RI
                  PUSH   ACC
                  PUSH   PSW
                  CLR    RS0
                  SETB   RS1
                  MOV    A,SBUF
                  XRL    A,#MYADDR
                  JZ     IS_ME
       RETURN:    POP    PSW
                  POP    ACC
                  RETI
       IS_ME:     CLR    SM2
                  MOV    SBUF,#MYADDR
       LOOP1:     JNB    TI,LOOP1
                  CLR    TI
       RX_COMD:   JNB    RI,RX_COMD
                  CLR    RI
      IF_RESET:   JNB    RB8,DO_WHAT
                  SETB   SM2
                  LJMP   RETURN
        DO_WHAT:  MOV    A,SBUF
                  CJNE   A,#02H,00H
                  JC     NEXT
                  MOV    A,#80H
                  MOV    SBUF,A
        LOOP2:    JNB    TI,LOOP2
                  CLR    TI
                  SETB   SM2
                  LJMP   RETURN
        NEXT:     JZ     READY_RX
        READY_TX: JB     PSW.1,TX_TRDY
                  MOV    A,#00H
                  MOV    SBUF,A
        LOOP3:    JNB    TI,LOOP3
                  CLR    TI
                  SETB   SM2
                  LJMP   RETURN
;...........................................
      TX_TRDY:    MOV    A,#02H
                  MOV    SBUF,A
                  CLR    PSW.1
        WHAT1:    JNB    TI,WHAT1
                  CLR    TI
                  MOV    A,@R0
                  MOV    R4,A
                  INC    R4
                  
       TX_DATA:   MOV    SBUF,@R0
         WHAT2:   JNB    TI,WHAT2
                  CLR    TI
                  INC    R0
                  DJNZ   R4,TX_DATA
                  SETB   SM2
                  LJMP   RETURN
       READY_RX:  JB     PSW.5,TX_RRDY
                  MOV    A,#00H
                  MOV    SBUF,A
         LOOP4:   JNB    TI,LOOP4
                  CLR    TI
                  SETB   SM2
                  LJMP   RETURN
       TX_RRDY:   MOV    SBUF,#01H
                  CLR    PSW.5
      RX_BYTES:   JNB    RI,RX_BYTES
                  CLR    RI
                  MOV    A,SBUF
                  MOV    @R1,A
                  INC    R1
                  MOV    R4,A
     RX_DATA:     JNB    RI,RX_DATA
                  CLR    RI
                  MOV    @R1,SBUF
                  INC    R1
                  DJNZ   R4,RX_DATA
                  SETB   SM2
                  LJMP   RETURN







⌨️ 快捷键说明

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