machaore130 发表于 2022-4-13 11:05 我改的代码也是查询RI啊~ |
lkc8210 发表于 2022-4-12 00:04 这样啊。您是想让我用中断方式(发送或接受完毕触发串行口中断)代替查询方式(查询RI和TI)以免因为while函数的缺陷卡在不必要的地方是吗?我一直在纠结如何发送大于255的数实现多字节发送没有关注到这一问题。 |
machaore130 发表于 2022-4-11 16:23 不是~ 你要把v的赋值动作放到while(1)里 放到while(1)之前只会赋值一次 而Receive()里有while(RI==0) 有机会死循环 所以改成回贴那样 |
machaore130 发表于 2022-4-11 16:23 串口每次只能发送1个字节,如果V大于1个字节(255)就要按字节数量拆分,分多次传输。假设V=0x012c. 拆分V1=0x012c>>8;V2=0x012c;(高8位溢出,V2实际=0x2c),接收端再把两个字节合并还原:V=V1<<8|V2; |
感谢您的解答。我能理解您的意思,您是想表明先给v赋值判断v赋值完成后再进行显示,这样程序会更加严谨。但因为我不够专业,程序可能存在问题较大。在改正后,仍不能将使得两个数码管显示一样的数字。说明发送函数和接收函数有问题。可能是因为SBUF仅有一个字节无法满足要求也许我需要学习用多个字节按位表示一个数逐位发送才会达到要求。再次感谢您的帮助。 |
|