两个错误。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,也就造成了 不断发送数据,不断进入中断这个死循环。。哈哈,错得这么巧妙我也觉得很不可思议。。
只是少了个分号!我试了