[求助] 串口接收中断能进入,但不是每次来数据都能进入

拍17780694   2014-9-24 11:31 楼主
下面是我的程序,大侠帮忙看下
void main(void)
{
        unsigned char ff;
        WDTCTL = WDTPW + WDTHOLD;         //Close the Watchdog
        
        power_Init();          //各模块电源初始化  
        SIM900A_on_off();  //SIM900A PWRKEY设置
        OSC_Init();       //启动XT2晶振
        UART0_1_Init();
        _EINT();         //开中断
        while(1);
}

#pragma vector=USCI_A0_VECTOR//串口0接收中断
__interrupt void USCI_A0_ISR (void)
{
  unsigned char rev0_data,i;
   static int cnt=0;
   static unsigned char tmp[100];

  switch(__even_in_range(UCA0IV,4))
  {
  case 0: break; //中断向量0:无中断
  case 2:        //中断向量2:RXIFG(接收中断)

   tmp[cnt]=UCA0RXBUF;
   cnt++;
   if(cnt>100)
   {
     cnt=0;
   }
  break;
  case 4: break;    //中断向量4:TXIFG(发送中断)
  default: break;
  }


}


我是直接用上位机软件发送数据的

回复评论 (3)

怎么没人回答啊
点赞  2014-9-24 15:25
情况不明,看不出来,430吗?SIM900A_on_off(); 是啥
点赞  2014-9-24 19:06
中断服务程序必须在当前波特率下一个字节的传输时间内完成处理,否则就可能丢数据。
上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
点赞  2014-9-24 19:43
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复