最新进展:
我把串口改为中断接收,如下:
#pragma interrupt_handler uart1_rx_isr:31
void uart1_rx_isr(void)
{
UCSR1A&=0x7f;
if(Data_Count>21)
{
Data_Count=0;
}
Comm_ReceiveData[Data_Count]=UDR1;
Data_Count++;
//uart1_tran(Data_Count);
uart1_tran(UDR1);
}
下载程序之后,过程是这样的,初始化9600》进入波特率修改,修改为2400;上位机的串口调试工具发一个字节0x01,刚开始还可以接收,也能在液晶屏上显示;然后我改成发两个字节 0x01,0x02,手动试的,也正常,增加到5个字节的时候,刚开始是正常的,后来我点了下自动发送,时间间隔0.5ms,一会就异常了。单片机自动发送了几千个字节(程序正常的话不会有这样的动作),然后就不发送数据了,下面我再点发送数据,单片机没有反应,好像是没有接收到数据一样。我关机,再开,也是没反应。但是单片机的其他操作,如键盘,还是正常的。
|