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

📄 t13f.asm

📁 一些单片机的51实例
💻 ASM
字号:
NAME    T13F                ;双机通讯实验(发送程序)
CSEG    AT    0000H
        LJMP  START
CSEG    AT    4100H
PORT    EQU   0CFE8H
START:  MOV   DPTR,#PORT+1  ;8279命令字
        MOV   A,#0D1H       ;清除
        MOVX  @DPTR,A
WAIT:   MOVX  A,@DPTR
        JB    ACC.7,WAIT    ;等待清除完毕
        MOV   TMOD,#20H
        MOV   TH1,#0F2H
        MOV   TL1,#0F2H
        SETB  TR1
        MOV   SCON,#50H
        MOV   87H,#80H
        MOV   50H,#00H
        MOV   51H,#00H
        MOV   52H,#00H
        MOV   53H,#00H
        MOV   54H,#00H
        MOV   55H,#00H
LOOP1:  MOVX  A,@DPTR
        ANL   A,#0FH
        JZ    LOOP1         ;有键按下?
        MOV   A,#0A0H       ;显示消隐命令
        MOVX  @DPTR,A
        MOV   DPTR,#PORT    ;读键值
        MOVX  A,@DPTR
        ANL   A,#3FH
        MOV   R7,A          ;状态保存
        MOV   50H,51H
        MOV   51H,52H
        MOV   52H,53H
        MOV   53H,54H
        MOV   54H,55H
LOP:    MOV   A,R7
        MOV   DPTR,#TAB1
        MOVC  A,@A+DPTR     ;查取数字键的字型码
        MOV   55H,A
        mov   40h,a
        SUBB  A,#80H
        JZ    ERROR         ;非数字键则跳转
        ACALL DISP
        SJMP  TXACK
DISP:   MOV   DPTR,#PORT+1
        MOV   A,#90H
        MOVX  @DPTR,A
        MOV   R6,#06H
        MOV   R1,#50H
        MOV   DPTR,#PORT
DL0:    MOV   A,@R1
        MOVX  @DPTR,A
        INC   R1
        DJNZ  R6,DL0
        RET
TXACK:  MOV   A,#06H        ;发呼叫信号"06"
        MOV   SBUF,A
WAIT1:  JBC   TI,RXYES      ;等待发送完一个字节
        SJMP  WAIT1
RXYES:  JBC   RI,NEXT1      ;等待乙机回答
        SJMP  RXYES
NEXT1:  MOV   A,SBUF        ;判断乙机是否同意接收,不同意继续呼叫
        CJNE  A,#00H,TXACK
        MOV   A,40H
        MOV   SBUF,A
WAIT2:  JBC   TI,TXNEWS
        SJMP  WAIT2
TXNEWS: JBC   RI,IF0DDH
        SJMP  TXNEWS
IF0DDH: MOV   A,SBUF
        CJNE  A,#0FH,TXACK ;判断乙机是否接收正确,不正确继续呼叫
        MOV   DPTR,#0CFE9H
        LJMP  LOOP1
ERROR:  MOV   50H,#79H
        MOV   51H,#31H
        MOV   52H,#31H
        MOV   53H,#5CH
        MOV   54H,#31H
        MOV   55H,#80H
        LCALL DISP
DD:     MOV   DPTR,#PORT+1
        MOVX  A,@DPTR
        ANL   A,#0FH
        JZ    DD            ;有键按下?
        MOV   A,#0A0H       ;显示消隐命令
        MOVX  @DPTR,A
        MOV   DPTR,#0CFE8H  ;读键值
        MOVX  A,@DPTR
        ANL   A,#3FH
        MOV   R7,A          ;状态保存
        MOV   50H,#00H
        MOV   51H,#00H
        MOV   52H,#00H
        MOV   53H,#00H
        MOV   54H,#00H
        LJMP  LOP
TAB1:   DB 3FH,06H,5BH,4FH,80H,80H  ;键值字型码表
        DB 66H,6DH,7DH,07H,80H,80H
        DB 7FH,6FH,77H,7CH,80H,80H
        DB 39H,5EH,79H,71H,80H,80H
        DB     80H,80H,80H,80H
END

⌨️ 快捷键说明

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