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

[复制链接]
2701|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;
试试
hotyong 发表于 2012-6-8 10:28 | 显示全部楼层
4# dream-yi
这里必须要用static unsigned char i;
woaidiy 发表于 2012-6-8 14:53 | 显示全部楼层
试一下
IE=1;
temp=RXBUF0;
RXBUF0=temp;
如果调试助手发送和接收数据不一样,应该是晶振的问题,串口通讯需要用特定频率的晶振。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

73

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部