SBUF = Data; while(TI == 0); TI = 0;这些放到main()里面的while(1)最下面试试;中断函数里面不能while(TI == 0);堵塞 |
笨笨兔 发表于 2019-2-13 08:14 其实是将数据保存在了Data这个变量了,我估计楼主重新发出去的操作是看看有没有正确接收,调试用的吧。 |
1.串口接收到数据,然后根据数据内容进行蜂鸣器或者LED显示处理后,是否需要将Data变量进行清零? 2.我们这种前后台系统,在做延时的时候,不能直接调用DELAY这种函数的,这样系统会死在这里很长时间的。如果此时有新的串口指令过来的话,你的MCU是无法进行处理的。 |
试着用字符串比较函数strcmp替代if判断? |
查查波特率有无问题。 |
这个未必是单片机串口通信出了问题。 void tx() interrupt 4 { Data=SBUF; RI=0; SBUF=Data; while(TI==0); TI=0; } 中断接收了数据,然后发送出去;什么时候按照你的想法处理这个数据呢? 这个中断处理也不是很好。 |