sddboy 发表于 2020-10-10 17:47 你这样写总感觉怪怪的,也不好看程序。 发6个字节才能触发RI,应该还是你的程序有问题,波特率是否计算错误?把完整程序发上来看看吧 |
hhdsdy 发表于 2020-10-10 15:54 while(RI==0){},如果不置位,RI=0满足条件,等待死循环,没什么问题吧, 照理我发送 任意数据 应该会触发RI置1啊,可是初次串口通信 我必须发6个字节 才能触发RI 置位 搞不懂 |
必须搞清楚,单片机在接收到数据就会自动触发 RI 置1,而不是靠程序,然后要用程序人工 RI 清0。 while(RI==0)这句并不是判断单片机是否收到数据0,RI 只是一个接收到数据的标志,而单片机收到的数据会自动保存在SBUF里,所以你的程序应该稍微改一下(判断num是什么数值,并且这个只是判断一个而不是6个) if(RI) { RI = 0; num=SBUF; 用num判断数据并执行相应的操作 } |