![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
求写一个串口通信的程序,先由键盘发送数据给单片机,存在某个地址,单片机再将接收到的数据回发给pc机,
在虚拟终端显示ORG00HLJMPMAINORG0030HMAIN:MOVSCON,#01010000B;设定串行方式:;8位异步,允许接收MOVTMOD,#20H;设定...
在虚拟终端显示
ORG 00H
LJMP MAIN
ORG 0030H
MAIN:
MOV SCON,#01010000B ;设定串行方式:
;8位异步,允许接收
MOV TMOD,#20H ;设定计数器1为模式2
ORL PCON,#10000000B ;波特率加倍
MOV TH1,#0F3H ;设定波特率为4800
MOV TL1,#0F3H
SETB TR1 ;计数器1开始计时
MOV R1,#50H
;MOV R4,#20H
AGAIN: JNB RI,$ ;等待接收完成
NOP
MOV A,SBUF ;接收数据送缓冲区
CJNE A,#0DH,LL ;是否为回车符CR
SJMP huifa ;是就回发
LL: MOVX @R1,A ;不是则传送到外部RAM
INC R1
CLR RI ;清接收标志
SJMP AGAIN;没传送完则循环
huifa: MOV A,@R1 ; 从内部RAM取数
MOV SBUF,A ;发送收到的数据
JNB TI,$ ;等待发送完成
CLR TI ;清发送标志
DEC R1
CJNE R1,#50H,AGAIN
SJMP huifa
END
这个程序哪有问题?帮忙修改一下 展开
ORG 00H
LJMP MAIN
ORG 0030H
MAIN:
MOV SCON,#01010000B ;设定串行方式:
;8位异步,允许接收
MOV TMOD,#20H ;设定计数器1为模式2
ORL PCON,#10000000B ;波特率加倍
MOV TH1,#0F3H ;设定波特率为4800
MOV TL1,#0F3H
SETB TR1 ;计数器1开始计时
MOV R1,#50H
;MOV R4,#20H
AGAIN: JNB RI,$ ;等待接收完成
NOP
MOV A,SBUF ;接收数据送缓冲区
CJNE A,#0DH,LL ;是否为回车符CR
SJMP huifa ;是就回发
LL: MOVX @R1,A ;不是则传送到外部RAM
INC R1
CLR RI ;清接收标志
SJMP AGAIN;没传送完则循环
huifa: MOV A,@R1 ; 从内部RAM取数
MOV SBUF,A ;发送收到的数据
JNB TI,$ ;等待发送完成
CLR TI ;清发送标志
DEC R1
CJNE R1,#50H,AGAIN
SJMP huifa
END
这个程序哪有问题?帮忙修改一下 展开
1个回答
2011-05-12
展开全部
建议 去 我的领地 5d6d 的 proteus 论坛看看
那里有很多 仿真实例,包括仿真图 和 源码
那里有很多 仿真实例,包括仿真图 和 源码
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询