非常感谢以上大佬,问题已经解决了 |
程序不全不好判断。 |
/**********串口发送函数*************/ void SendOneByte(unsigned char c) { SBUF = c; //发送数据 while(!TI); //等待发送完成 TI = 0; //发送中断请求标志位清0 } //发送字符串(这里4个字节:D[0]~D[3]) void xxxx() { unsigned char i; //其它语句 //........ ES=0; //关串口中断(如果使用了串口中断) for(i=0;i<4;i++) { SendOneByte(D[i]);//调用串口发送函数 } ES=1; //开串口中断(如果使用了串口中断) } |
在第一个SUBF操作完成后,需要等一段时间(串行发送需要时间的),串行完数据后,才将发送标记置1!然而,中断是否发生还取决于,你让不让它中断(中断允许位是否已被你置1)。 程序中DELAY(200),就是等待它串行完成,而后再发第二个。可以猜到,“中断允许位是被清0的,即不允许中断”。 |
没看全你的程序:估计程序不管发送中断,就靠延时来发送; 延时发送不可取,应该用中断发送,写好发送中断即可;这里面有好多工作要做。 |