为何在51单片机中写A=SBUF;SBUF=A;串口不会将收到的A重新发回去呢?
貌似不使用中断子程序就无法实现,原因不清楚,有可能是两个SBUF寄存器之间切换的问题,单独发送可以,单独接受也可以,就是刚发送完立刻要求返回数据不行。非常感谢大家的帮助。...
貌似不使用中断子程序就无法实现,原因不清楚,有可能是两个SBUF寄存器之间切换的问题,单独发送可以,单独接受也可以,就是刚发送完立刻要求返回数据不行。非常感谢大家的帮助。使用中断子程序就没有问题了。
展开
3个回答
展开全部
发送需要专门一个发送子函数,要对寄存器操作;而不是赋值,SBUF只是一个存放数据的地方,它不会自动发送,也不会自动接受。你找找看有没有receive或者send之类的函数。
追问
可是郭天祥的教程中写的是,a=SBUF,SBUF=a就是发送和接受数据的关键语句,单片机会自动读取和发送的,我在程序中也用过,没有问题,只是将A=SBUF;SBUF=A写在一起时就不能执行了。不知道是为什么。用的是c语言
追答
需要等待接收数据完成,才能再发送,要在a=SBUF之间加入一个语句,判断串口寄存器中的接收标志位置位后,才能执行SBUF=a。格式参考:
while( ! (寄存器的标志位) );
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询