打印

一个简单的串口程序(51汇编)搞懵了

[复制链接]
2553|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
江陵龙少|  楼主 | 2010-8-25 22:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先说明,硬件绝对是好的,但下面这个简单的程序就是不行啊!事情原本是这样的,在调试另一个复杂点的程序的串口时,发现串口精灵接受的数据混乱,想写个简单的程序测试一下串口,结果,这个简单的倒什么反应都没有,请赐教,拍砖!
ORG 0000H
AJMP BEGIN
ORG 0030H
BEGIN:MOV 40H,#93H
          MOV 41H,#40H
          MOV 42H,#04H
          MOV 43H,#0F5H

          MOV TH1,#0FAH  ;22.1184M晶体,9600Baud
          MOV TL1,#0FAH
          MOV TMOD,#21H
          MOV SCON,#50H
          SETB TR1

XUNHUANFA:MOV R0,#40H
          MOV R6,#4
TRANS_4BYTE:MOV SBUF,@R0
          INC R0
          DJNZ R6,TRANS_4BYTE
          AJMP XUNHUANFA

END

相关帖子

沙发
teddeng| | 2010-8-25 23:22 | 只看该作者
XUNHUANFA:MOV R0,#40H
          MOV R6,#4
TRANS_4BYTE:MOV SBUF,@R0
          INC R0
          DJNZ R6,TRANS_4BYTE
发得太快了,想想这几天指令执行完要多久?不会要1MS吧?9600的速度发一个字节就要1MS,缺了字节发送结束判断标志。如果前面配置寄存器都是对的,应该一点反应还是有的,最少头一个字节还是发得出去的。。

使用特权

评论回复
板凳
ayb_ice| | 2010-8-26 08:25 | 只看该作者
要等待发送完成才能发一下个数据

使用特权

评论回复
地板
acute1110| | 2010-8-26 08:47 | 只看该作者
有一个状态位,表示buffer的数据是否传送晚,轮询该标志,空了才能发下一个字节

使用特权

评论回复
5
望断云山| | 2010-8-26 11:17 | 只看该作者
TRANS_4BYTE:                     
                                   MOV SBUF,@R0
JNB         TI,$
CLR         TI

                                   INC R0
                                   DJNZ R6,TRANS_4BYTE
                                   AJMP XUNHUANFA

使用特权

评论回复
6
江陵龙少|  楼主 | 2010-8-26 12:47 | 只看该作者
是的,发的太快了了,而且,忘了判断TI标志
十分感谢上面4位的指点!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

279

帖子

2

粉丝