51单片机串口问题..发送一个字节..为什么串口调试软件连续接收..下附程序..

2025年03月13日 04:51
有2个网友回答
网友(1):

两个错误。while(!TI)
TI=0;
这是一个。while(!TI) 后面少一个分号!!变成了,原本正确的程序是想让TI==1的时候,把TI清零,但是你现在变成了 当TI为0的时候执行TI=0,而当TI变成1的时候却反而不执行TI=0了,因此每次发送完成一个字符以后,TI的值没有清零,这样TI始终为1。
第二个错误是您的串口中断里面没有判断是接收中断还是发送中断,单片机的串口中断是TI,或者RI中任何一个为1,都会进入中断的,因此你这个错误恰好跟前面的错误首位呼应,造成了flag不断为1,也就造成了 不断发送数据,不断进入中断这个死循环。。哈哈,错得这么巧妙我也觉得很不可思议。。

网友(2):

只是少了个分号!我试了