51单片机串口通讯问题

来源:百度知道 编辑:UC知道 时间:2024/05/12 11:23:30
我目前正在做单片机串口通讯,过程是这样的
单片机先是等待上位机程序的命令,当收到上位机的命令后再向上位机发送数据,所以我在单片机程序的开始就不断的查询RI标志位,为1时并且上位发送过来的是要求数据传送命令时再发送特定数据
但是问题就是我在用串口助手调试时,在单片机向上位发送的数据之前总有一个字节的别的字符,这个字符不确定,可是我并没有发送这个字符,比如我本来发送的是8个字节但在这8个字节之前总有一个字节的别的数据,我也不知道是从哪来的,我试过几次,它应该是在我判断RI标志后从sbuf中取出数据再判断数据的过程中自动发送过来的,但是不知道怎么能把它去断,还请高手帮忙,谢谢谢谢
在发送数据前我没有使用mov sbuf,a指令,只是mov a,sbuf将数据取出进行判断.今天调试我发现,即使在判断RI为1后中断发送程序(将tr1清零),用串口助手调试时它不再接收我的正确数据,但还是会出现那个不正确的字节,如果我将判断RI标志和后面的判断数据这部分去掉,就没有问题,接收的数据非常好.头疼死了简直,希望各位帮忙啊

串口助手会接收你所有的 mov sbuf, a 指令.
仔细检查判断ri标志后,发数据之前有没有运行这条指令.
你可以在ri标志收到后,紧跟一条测试指令,比如发送一个特定数AA,
用这样的方法在有怀疑的地方前插入.来找出问题发生的位置.
祝你调试成功.

lz 可以把程序发过来看看吗

你是不是电平转换那里出了问题啊,不行就在上位机RXD接个上拉电阻试一下,再可能就是软件上的问题了,你发送的时候是不是把TI清了.
如果还有问题,到我那里给我留言.没程序也不知道到底是哪里的问题,不过很简单.