51 串口中断问题?求解,很诡异的问题!
请问是怎么回事?下面是我的代码!!问题:
我用中断发送数据,但每次发送只能发送最后一位要发送的数据,比如
uart_transmit_byte('A');
uart_transmit_byte('B');
uart_transmit_byte('C');
只能将C发送过去,其他的都发布过去,下面是我的代码,(查询方式没有问题)
void uart_init(void)
{
SCON = 0X50; //设置定时器1提供波特率,REN置位,允许接受
TMOD = 0X20; //TIME1工作在模式2,自动重新装载
//靠…………能不能认真点,0x20写成0x02了,怪不得收不到数据。smod的高四位是定时器1
TH1 = 0Xf3;
TL1 = 0Xf3; //波特率在9600bps
TR1 = 1; //定时器1开始工作
EA = 1;
ES = 1; //串口中断允许
}
void uart_interrupt() interrupt 4
{
unsigned char buf;
if(TI)
{
TI = 0;
}
if(RI)
{
RI=0;
buf = uart_receive_byte();
switch(buf)
{
case '0'://立刻上传数据
now=1;
break;
case '1':
DELAY_TIME = 1;
break;
case '2':
DELAY_TIME = 2;
break;
case '3':
DELAY_TIME = 3;
break;
case '4':
DELAY_TIME = 4;
break;
case '5':
DELAY_TIME = 5;
break;
default:break;
}
}
} 没有在中断里发送啊 中断里怎么发送啊。怎么在中断发送,如果再中断发送,发送完又进入中断。再发送,再进入中断,不就没头了啊。兄弟,求指教
51_jiaduoW~W 发表于 2012-7-24 19:40 static/image/common/back.gif
中断里怎么发送啊。怎么在中断发送,如果再中断发送,发送完又进入中断。再发送,再进入中断,不就没头了啊 ...
那你在哪儿发送,怎么发送的?
发送一般是有起始地址和长度的,发完指定长度就不发了
还有,从发送开始到结束产生中断是要时间的,会先退出中断程序,干点别的,再进来
哦,我明白了。谢谢指教。原来我的理解一直是错误的
页:
[1]