ATmeg128a 串口问题

2019-03-24 20:36发布

各位大侠,我的串口很奇怪,我先给串口0输入一串字符,然后给串口1输入字符‘a';串口1会先输出一个‘a',然后就没有输出我想要的数组里的数,反而一直输出’y'。我很气愤,特发此贴。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
yangxf1217
1楼-- · 2019-03-25 16:18
坛主莫怪哥在此放水,哥实在着急啊
yangxf1217
2楼-- · 2019-03-25 17:51
那个搞笑坛随便发个贴子回复量就能过10.
咱们这个学习坛问题讨论的帖子回复真是可怜。
yangxf1217
3楼-- · 2019-03-25 20:48
继续顶
chunyang
4楼-- · 2019-03-25 20:55
程序的问题,注意要将待发数据正确的写入串口0和串口1相应的寄存器,同时使能串口并正确的配置波特率发生器,做到这些就不会有问题。如果采用中断模式,还要注意中断使能和服务程序的编制。
yangxf1217
5楼-- · 2019-03-25 22:44
原帖由 chunyang 于 2013-9-11 17:04 发表
程序的问题,注意要将待发数据正确的写入串口0和串口1相应的寄存器,同时使能串口并正确的配置波特率发生器,做到这些就不会有问题。如果采用中断模式,还要注意中断使能和服务程序的编制。

中断我测试过了,没有问题。我在串口0中断里 写上:
   usart1_rdata=UDR1;           //将接收到的数据取出
    UDR1=usart1_rdata;       //输出接收到的数据
我输入‘a'是可以输出’a'的。


就是后来加上了主函数里的判断语句后,就是不执行判断为‘a'后的语句。

  switch(usart1_rdata)
  {
     case 'a': UDR1=fbdata[0];break;
     default: UDR1='y';break;
}

后来我把这些判断语句放到中断函数里边就可以执行了。
我就是很奇怪。
chunyang
6楼-- · 2019-03-26 00:36
 精彩回答 2  元偷偷看……

一周热门 更多>