完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我现用的是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还是要怎样,做了很多偿试就是不能连续调用, |
|
相关推荐
3个回答
|
|
发第二句话的时候程序没死掉?
|
|
|
|
单步调试,看哪里出问题了
|
|
|
|
程序能运行,就是不能看到 !注意:字1111111!!!!!.这一串传到助手上,且试了只要在两次发送函数间插入100ms延时就能都发送了,若不加这个延时就不行,8M的CLK下加了1000周期的指令都 不行(试了delay(5),delay(15),delay(20)都不管用,而加个约100ms的MS_delay(200);就可以了),不知到底是哪里写不对,还是说就只能这样了
|
|
|
|
只有小组成员才能发言,加入小组>>
710 浏览 0 评论
1120 浏览 1 评论
2497 浏览 5 评论
2836 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2677 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
662浏览 9评论
674浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
792浏览 6评论
638浏览 5评论
681浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 21:14 , Processed in 1.020413 second(s), Total 82, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号