AVR ATmega16 单片机串口通信问题?谢谢

问题是这样:利用串口助手实现电脑和单片机的通信,电脑向单片机发送数据(字符),可以实现单字节和多字节通信,现在的问题是,本来我单片机设置的波特率为19200,串口助手也是... 问题是这样:利用串口助手实现电脑和单片机的通信,电脑向单片机发送数据(字符),可以实现单字节和多字节通信,现在的问题是,本来我单片机设置的波特率为19200,串口助手也是19200,如果我串口助手改成其他波特率(比如2400,9600等),再给单片机发送数据,那单片机肯定是没有反应,问题是把波特率改回来19200之后,数据就发送不进去了,必须关掉串口助手再次打开才行,我程序中也没有写发送数据不对就不接受,或者说关闭中断什么的,问题是这和波特率有关,我波特率设置应该没问题,要不然也不会实现通信?请问为什么,怎样解决,谢谢
//***字符接受中断函数***//

void uart_RX(void)
{
UCSRB&=~BIT(RXCIE);//关闭接受结束中断
rdata[num]=UDR;
send_B(rdata[num]);
num++;
flag=1;
UCSRB|=BIT(RXCIE);//打开中断
}

//***发送一个字符***//
void send_B(uchar data)
{
while(!(UCSRA&(BIT(UDRE))));
UDR=data;
while(!(UCSRA&(BIT(TXC))));
UCSRA|=BIT(TXC);//清零//
}
展开
 我来答
cakoii
2013-04-28 · TA获得超过2852个赞
知道大有可为答主
回答量:1404
采纳率:85%
帮助的人:1122万
展开全部
有没有试过在串口助手中关闭串口,然后重新打开串口试试?
你说的这种现象,很可能是串口助手本身的某个小bug造成的.
前提是,你之前在关闭和重新打开串口助手期间,没有对单片机进行复位啊之类的操作,才可以这样判断.
追问
你好,我有接着试了试,不是串口助手的问题,用其他串口调试软件也一样,我上面说的问题不完全对,单片机也需要重新上电,现在调试程序发现,用错误的波特率发送数据后,单片机响应中断,然后就回不来了,中断是接受结束中断,里边的程序是按照通常的格式编写的,我贴出来看看,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
c3344c
2013-04-28 · TA获得超过2418个赞
知道小有建树答主
回答量:966
采纳率:57%
帮助的人:682万
展开全部
如果单片机一直处于正常接收状态,重新启动串口助手之后单片机能作出响应,说明是串口助手这方面的问题,或是软件的问题,或是操作系统的问题,与单片机无关。
追问
你好,我有接着试了试,不是串口助手的问题,用其他串口调试软件也一样,我上面说的问题不完全对,单片机也需要重新上电,现在调试程序发现,用错误的波特率发送数据后,单片机响应中断,然后就回不来了,中断是接受结束中断,里边的程序是按照通常的格式编写的,我贴出来看看,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huangzhicaicai
2013-04-29 · TA获得超过687个赞
知道小有建树答主
回答量:1230
采纳率:0%
帮助的人:426万
展开全部
发送频率太快了,加个延时
追问
老师你好,请问吧延时加在哪里?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式