找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5247|回復: 1
打印 上一主題 下一主題
收起左側

求解釋,485通信一次接收多個數(shù)據(jù)的中斷怎么不能用?

[復制鏈接]
跳轉到指定樓層
樓主
ID:59780 發(fā)表于 2014-5-7 14:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void ser() interrupt 4   //串行中斷服務程序
{
unsigned char i,j,Check,tmp;
if(RI==1)      //接收標志位為1時,接收
  {
  RI=0;
  tmp=SBUF;  
  }
while(!RTUOverFlag)    //結束標志位為0時
  {   
  if(RTUStartFlag==0) //開始標志位為0時
   {
   if(tmp!='@')  //判斷數(shù)據(jù)幀的起始位,不是@時不接收
    {
    RTUOverFlag=0;
    RTUStartFlag=0;        
    return;
    }     
   if(tmp=='@') //開始接收
    {
    UART_R_RTU[RTUPst]=tmp;  // 接收起始位
    RTUPst++;   
    RTUOverFlag=0;
    RTUStartFlag=1;//已接收起始位
    return;
    }
   }
  else    //接收剩余數(shù)據(jù)
   {
   if(tmp!='#') //接收結束位#之前的數(shù)據(jù)
    {
    UART_R_RTU[RTUPst]=tmp;
    RTUPst++;
    return;
    }
   else  //接收結束位#
    {                           
    UART_R_RTU[RTUPst]=tmp;
    RTUOverFlag=1; //完成接收,置標志位
    ES=0;   //關串口中斷
    REN=0;   //不允許接收
    if(UART_R_RTU[1]!=ExtsAddr) //判斷數(shù)據(jù)第二位是否與本機地址相同,如果不相同
     {
     for(j=0;j<10;j++)   //數(shù)據(jù)清零,標志位清零,允許接收,開串口中斷
      UART_R_RTU[j]=0;
     RTUPst=0;
     RTUOverFlag=0;
     RTUStartFlag=0;
     REN=1;
     ES=1;
     return;
     }
    Check=0;  //初始化校驗位
    RTUDataLen=UART_R_RTU[3]; //讀數(shù)據(jù)長度
    for(i=0;i<3+RTUDataLen;i++)     //校驗位
     {
     Check=Check+UART_R_RTU[i+1];
     }
    if(Check!=UART_R_RTU[RTUPst-1]) //判斷校驗位是否與接收到的數(shù)據(jù)中的校驗位相同,如果不相同
     {
     for(j=0;j<10;j++)  //清零數(shù)據(jù),清標志位,允許接收,開串口中斷
      UART_R_RTU[j]=0;
     RTUPst=0;
     RTUOverFlag=0;
     RTUStartFlag=0;
     REN=1;
     ES=1;
     return;
     }
    else        //接收到完整數(shù)據(jù)情況下,置接收完成標志,清接收標志為下次接收做準備
     {     
     UARTRTUDataCheckedFlag=1;     
     RTUFunc=UART_R_RTU[2];
     RTUPst=0;
     RTUOverFlag=0;
     RTUStartFlag=0;
     REN=1;
     ES=1;
     return;
     }
    }
   }  
  }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:2318 發(fā)表于 2014-7-8 17:15 來自手機 | 只看該作者
你這個程序是不是只能接受第一個數(shù)據(jù)?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表