poseidon 发表于 2017-4-15 12:22 TH1=0xf3;TL1=0xf3和TH1=0xf4;TL1=0xf4有什么差别吗! |
每次串口中断后,你都会从SBUF中取一个数字发出; 收到最后一个时SBUF读到“o”,你发“o”。 注意:串口中断响应是不管收还是发,都会发生中断,所以发完最后一个“o”后,也会生产中断,当然你取到的SBUF一定是上次的SBUF也就是“o”,所以你又发一次“o”,发生后还会再中断(发送中断)…… 实际上,当你收到“h”时,在发出“h”后也会产生发送中断,但这个中断不会被立即响应,因为这时程序还在中断服务程序中尚未返回,当你中断返回后,响应发送中断时,接收中断也收到了,新发来了下一个“e”(接收中断与发送中断几乎同时到达),所以你并未再发一次“h”,而是新收到的“e”。也就是说你已丢了一次中断,但丢掉的洽洽是重复的那一个! 读懂以上后,程序修改一下就好了,应当很简单了! |
应该是TH1=0xf3;TL1=0xf3 |