1\发送一般是不需要放在中断中的(我写了10年程序,从没放过,^_^)
你改成这样
SBUF=sendH;
while(TI==0);
TI=0;
SBUF=sendL;
while(TI==0);
TI=0;
直接观察TI来判断是否发送成功,而不是靠延时,最好是你写成专门的发送函数,这样程序更清晰
http://zhidao.baidu.com/question/180543390.html
51单片机接收多字节数据 串口通信
最近看串口,突然有个问题没想明白,
如果我用串口调试助手发送多个字节的16进制数,例如:55 33 aa 44等,按发送是四个字节一起出去的,但是51的SBUF只能装一个字节的数据,剩下的数据怎么办那。当然我知道肯定能接收正确,我就是不理解这个是如何接收的。
最佳答案
按发送是四个字节一起出去的,...。
----------------------
它们不是“一起”出去的。
实际上,串行口是按照波特率,把一位一位的二进数,顺序送出去的。
51的接收器,也是按照波特率,一位一位的收。
等到收齐了8个位(如55H),就送到SBUF,并且在RI置一;
再接着收,33H、...等等。
http://zhidao.baidu.com/question/171211222.html?fr=qrl&cid=93&index=2&fr2=query