找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

8051单片机汇编语言 求解串口通信只发不收?

查看数: 2347 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-5-28 15:41

正文摘要:

        ORG                0000H         LJMP        START & ...

回复

ID:593706 发表于 2021-5-31 11:51
串口发送数据完成后,要退出发送子程序,并且要将发送中断标志位清零,单片机串口通信是单工工作的,发送的时候不能接收,接收的时候不能发送
ID:741935 发表于 2021-5-30 19:53
发送端
ORG 0000H
JMP START
ORG 0100H
START:  
ACALL INIT
MAIN:
MOV P2,#0F0H
MOV A,P2
XRL A,#0F0H
JZ MAIN
ACALL KEYSCAN
MOV A,30H
MOV DPTR,#TABLE2
MOVC A,@A+DPTR
MOV P1,A
SETB P0.5
CLR P0.4
CLR P0.3
ACALL DELAY2
SETB P0.3
ACALL DELAY
ALOOP1:
MOV 40H,A
MOV SBUF,#0E1H
JNB TI,$;发送中断
CLR TI
JNB RI,$;接收中断
CLR RI
MOV A,SBUF;二号机应答信号
XRL A,#0E2H;异或判定是否准备完毕(判断发送消息是否为#0E2)
JNZ ALOOP1;开始发送数据时定义初始地址,这个地址里面存储要发送的数据
MOV R0,#40H
MOV R6,#00H;校验和
ALOOP2:
MOV SBUF,@R0
MOV A,R6
ADD A,@R0
MOV R6,A
JNB TI,$
CLR TI
MOV SBUF,R6
JNB TI,$;发送中断
CLR TI
JNB RI,$;接收应答中断
CLR RI
MOV A,SBUF
XRL A,#00H
JNZ ALOOP2
JMP MAIN
INIT:
MOV A,#00000001B
MOV P1,A
ACALL ENABLE
MOV A,#00111000B
MOV P1,A
ACALL ENABLE
MOV A,#00001111B
MOV P1,A
ACALL ENABLE
MOV A,#00000110B
MOV P1,A
ACALL ENABLE
MOV A,#00H
MOV P1,A
ACALL ENABLE
CLR EA
MOV TMOD,#20H
MOV TH1,#0F4H
MOV TL1,#0F4H
MOV PCON,#00H
SETB TR1
MOV SCON,#50H
KEYSCAN:MOV P2,#0F0H;先读列再读行
        MOV A,P2
        ANL A,#0F0H
                MOV R3,A
                MOV P2,#0FH
                MOV A,P2
                ANL A,#0FH
                ORL A,R3
                CJNE A,#0FFH,KEYPRO;检测键值是否成功读入
                RET
KEYPRO: MOV R3,A
        MOV DPTR,#KEYVALUE
                MOV R4,#0FFH;存键值表到键码表的偏移量
KEY1:   INC R4     ;扫描键码表里面的数值
        MOV A,R4
                MOVC A,@A+DPTR
                CJNE A,03H,KEY1
                MOV A,R4
                MOV 30H,A
DELAY1: MOV R6,#60H;延时程序
DE2:    MOV R7,#90H
        DJNZ R7,$
                DJNZ R6,DE2
                RET
ENABLE: CLR P0.5;写命令
        CLR P0.4
                CLR P0.3
                ACALL DELAY2
                SETB P0.3
                RET
DELAY2: MOV P1,#0FFH
        CLR P0.5
                SETB P0.4
                CLR P0.3
                NOP
                SETB P0.3
                JB P1.7,DELAY2
                RET
DELAY:
MOV R5,#10H;延时程序
D1:
MOV R6,#30H
D2:   
MOV R7,#90H
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
KEYVALUE:DB 0E7H,0D7H,0B7H,077H,0EBH,0DBH,0BBH,07BH,0EDH,0DDH,0BDH,07DH,0EEH,0DEH,0BEH,07EH;键码矩阵
TABLE2:  DB 30H,31H,33H,38H,64H,69H,61H,6EH,6BH,65H,79H,74H,67H,3CH,5FH,3EH
END

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表