打印

单片机与PC机的串口助手通信不正确

[复制链接]
1715|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cshij2009|  楼主 | 2012-6-7 18:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的程序是:用串口助手的手动发送来给单片机发送数据 0X01 0X02  0X03  0X04  0X05  0X06  ;单片机这边,每次按键之后,开接收允许中断,允许接收数据,接收中断程序中,接收四个字节数据,然后关闭接收允许中断,等待下一次开接收允许中断。可是第一次按键之后,单片机接收到的数据是  0X01  0X02  0X04  0X05;以后再次按键,接收到的数据,第一个字节都是0X06,如0X06 0X01 0X02 0X04;0X06 0X01 0X03 0X04;0X06 0X01 0X04 0X05;0X06 0X01 0X02 0X04
我用单片机给串口助手发送数据,串口助手接收的都正确,波特率应该没问题吧,希望大家能帮帮我,急急急

相关帖子

沙发
dream-yi| | 2012-6-7 18:57 | 只看该作者
你的接收函数是?

使用特权

评论回复
板凳
cshij2009|  楼主 | 2012-6-7 19:07 | 只看该作者
#prama vector =USART0RX_VECTOR
_interrupt void usart0_rx(void)
{
  static unsigned char i;
  data[i++] =RXBUF0; //把接收缓冲器数据保存到数组data
  if(i==4)   //接收四个字节数据
   {
      IE  &  =~URXIE0;//关闭接收中断允许,等待下一次按键开接收允许中断
      i =0;
   }  
   
}

使用特权

评论回复
地板
dream-yi| | 2012-6-7 19:55 | 只看该作者
你把static unsigned char i;
换成unsigned char i;
试试

使用特权

评论回复
5
hotyong| | 2012-6-8 10:28 | 只看该作者
4# dream-yi
这里必须要用static unsigned char i;

使用特权

评论回复
6
woaidiy| | 2012-6-8 14:53 | 只看该作者
试一下
IE=1;
temp=RXBUF0;
RXBUF0=temp;
如果调试助手发送和接收数据不一样,应该是晶振的问题,串口通讯需要用特定频率的晶振。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

73

帖子

0

粉丝