我现用的是AVR ATMEG16A单片机,在用USART串口通信时遇到了百思不得其解的问题,就是在调用串口发送函数发送完一串字符后,若紧接着再调用这个函数就会丢失后面的一次发送过程(就是在串口助手中没有收到(" !注意:字1111111!!!!!. "),若在这两次的中间加入200ms 的延时,就不会丢失,在串口助手中只能收到第一次和第三次的信息,代码如下:
USART_txout("本产品支持中英文显示,最大显示32个汉字或64个字母/符号,自动换行。",66); USART_txout(" !注意:字1111111!!!!!. ",30); clear_screen(); display_graphic_32x32(1,64,hao); display_GB2312string(3,105,"!"); MS_delay(200); USART_txout(" !注意:字母或标点符号只支持英文输入法,否则不会显示. ",66);
发送函数如下:
void USART_txout(uchar *data,uchar length) { unsigned char i=0; for(i=0;i { while ( !( UCSRA & (1< if(UCSRA&(1< UCSRA|=(1< UDR = *(data++); }
delay(200);//8M的频率,加了和没加也没区别 }
void delay(int a) { int i,j; for(i=0;i for(j=0;j<100;j++); }
不知是不是没用好TXC还是要怎样,做了很多偿试就是不能连续调用,