第1个回答 2011-08-24
发送程序如下
void SendOneByte(unsigned char c)
{
SBUF = c;
TI = 0;
while(!TI);
}
中断程序如下:
void UARTInterrupt(void) interrupt 4
{
if(RI)
{ RI = 0; /*中间是我自己的代码*/ }
else
TI = 0;
}
试一下看看、、是不是0错误0警告,不然就是自身程序有问题啦。耐心找哦。本回答被提问者采纳
第2个回答 2011-08-24
bit TI_ed; //加上一个变量
发送程序如下
void SendOneByte(unsigned char c)
{
TI_ed = 0;
SBUF = c;
while(!TI_ed); //等待发送完毕.
TI_ed = 0;
}
中断程序如下:
void UARTInterrupt(void) interrupt 4
{
if(RI) {
RI = 0;
/*中间是我自己的代码*/
}
else {
TI = 0;
TI_ed = 1;
}
}
第3个回答 2011-08-24
你的串口中断有问题,TI = 0;中断一到你就把发送关了,怎么还能发送。
第4个回答 2011-08-24
当然可以。中断发生后,表示接已经完成,可以发送了。不过如果外面使用485等半双工通讯的话,要考虑电路收发转换的延时时间,等电路稳定,再发送。