亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? receivetest__.c

?? 關于rs485通信及iic通信的程序
?? C
?? 第 1 頁 / 共 4 頁
字號:
             RS485_Answer=1;
            }
            
            else
            {   
               RS485_Answer_Set();
               RS485_Answer_Subprogram();            // 調用發(fā)送點對點回復包子程序 
               led2=!led2;
               Check_Receive_Data_Flag=1;
            }
         }
         else if( (Address_Flag==RS485_Address_Broad)||( Address_Flag==( RS485_Address_Self & 0xF0)))
         {           
             // 廣播類型數(shù)據(jù)包回復標志
             RS485_Answer_Set();
             // 發(fā)送回復包標志清0
             RS485_Answer_Broad_Subprogram();               // 調用發(fā)送點對廣播回復包子程序              
            //RS485_Answer_Subprogram();    
            led2=!led2;
            Check_Receive_Data_Flag=1;
         }                                                                                
            
      }
      
  }
  
}


    

//----------------------------------------------------------------------------------------------  
//
//串行接收處理函數(shù)
void RS485_Receive_Process(INT8U RecData)
{
 
  Receive_Status=GetCurrentRS485RxStatus();
  
  switch(Receive_Status)
  {
    case RS485_Receive_IDLE:
     
      if(RecData==Data_Head)                                // 在空閑狀態(tài)下接收到數(shù)據(jù),判斷是否數(shù)據(jù)包起始字節(jié)
      {        
        SetCurrentRS485RxStatus(RS485_Receive_RECEIVE);     // RS485總線狀態(tài)改為接收狀態(tài)              
        Receive_Count=0;                                    // 接收計數(shù)器清0
  //      Receive_CheckHead=0;                                // 準備進行對接收到的數(shù)據(jù)頭進行和校驗,簡單累加和
   //     Receive_CheckData=0;                                // 準備進行對接收到的數(shù)據(jù)進行和校驗,簡單累加和
        RS485_Bus_Status = RS485_Bus_BUSY;                  // 接收到0x7E時總線狀態(tài)為忙,不能發(fā)送數(shù)據(jù)   
      }
      break;
   
   case  RS485_Receive_RECEIVE:
      if(RecData==Data_Change)
      {
     
         SetCurrentRS485RxStatus(RS485_Receive_CHANGE);     // RS485總線狀態(tài)改為轉移狀態(tài)                
         break;
      }  
      if(RecData==Data_Head)
      {
         if(Receive_Count>0)                                // 當接收到0x7E且接收計數(shù)器大于0,接收結束
         {          
            RS485_Data_Handle();                      // 調用數(shù)據(jù)處理程序     
            SetCurrentRS485RxStatus(RS485_Receive_IDLE);       // 將485接收狀態(tài)改為空閑狀態(tài)
            RS485_Bus_Status=RS485_Bus_IDLE;  
            //RS485_Receive_Save_Data();  
            RS485_Receive_End=1;
           // RS485_Receive_Save_Data();          
            Receive_Count=0;                                   // 接收完畢,將接收數(shù)據(jù)計數(shù)器清0
         } 
//          else
//          {
//             SetCurrentRS485RxStatus(RS485_Receive_IDLE);       // 將485接收狀態(tài)改為空閑狀態(tài)      
//             RS485_Bus_Status=RS485_Bus_IDLE;                   // 接收完畢(無論正確與否,無論數(shù)據(jù)還是回復包)485總線狀態(tài)設置為空閑狀態(tài), 
//          }
         break;  
      
      }
      
      RS485_Receive_Buff[Receive_Count]= RecData; 
//       if(Receive_Count<7)
//       {
//          Receive_CheckHead += RS485_Receive_Buff[Receive_Count];       // 更新累加數(shù)據(jù)頭和校驗信息
//       }
//       
//       else if(Receive_Count>7)
//       {
//          Receive_CheckData += RS485_Receive_Buff[Receive_Count];       // 更新累加數(shù)據(jù)和校驗信息
//       }                                                                      
      Receive_Count++;                                                 // 接收計數(shù)器加1
      break;  
     
   case  RS485_Receive_CHANGE:       
      
      RS485_Receive_Buff[Receive_Count]= RecData^0x20;
//       if(Receive_Count<7)
//       {
//         Receive_CheckHead += RS485_Receive_Buff[Receive_Count];       // 更新累加數(shù)據(jù)頭和校驗信息
//       }
//       else if(Receive_Count>7)
//       {
//         Receive_CheckData += RS485_Receive_Buff[Receive_Count];       // 更新累加數(shù)據(jù)和校驗信息
//       }
     
      SetCurrentRS485RxStatus(RS485_Receive_RECEIVE);                 // 轉換之后將485改為接收狀態(tài),接收下一字節(jié)數(shù)據(jù)
      Receive_Count++;                                                //  接收計數(shù)器加1
      break; 
   
   default:
     break;       
  }

}
 


//----------------------------------------------------------------------------------------------   
//
//接收中斷程序
interrupt [USART_RXC] void usart_rx_isr(void)
{
//  INT8U  Receive_Data;
  led=!led;
  
  Receive_Data=UDR;
  RS485_Receive_Process(Receive_Data);
}


//----------------------------------------------------------------------------------------------
//
// 定時器0中斷程序
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{  
  switch(Delay_Status)
   { 
     case  Start_Send:
     {
        Delay_Status=Other_Delay;                    // 中斷延時結束,返回其他狀態(tài)
        RS485_Start_Send();     
     }
     break;
      

    case  Repeat_Send_Delay:                                // 重發(fā)延時10ms,1ms中斷一次  
    if(Repeat_Send_Time>0)                           // 延時尚未結束   
    {  

         
               if(RS485_Bus_Status == RS485_Bus_BUSY)       // 檢測到總線為不空閑, 
               {
                  if(Add_Time_Flag==1)                      // 首次不空閑時將加3ms延時
                  {
                     Repeat_Send_Time=Repeat_Send_Time+3;
                     Add_Time_Flag=0;            
                  }  
                  break;
               }  
               else                                         // 總線狀態(tài)為空閑時,將延時計數(shù)器減1 
               {
                  Repeat_Send_Time=Repeat_Send_Time-1;
                  Add_Time_Flag=1;
               }
               break;                                
    }      
    else                                             // 延時結束,    
    {
        if(RS485_Bus_Status == RS485_Bus_BUSY)       // 延時結束,發(fā)送前檢測到總線不為空閑,重新執(zhí)行延時程序
        {
                     Repeat_Delay_Program();                // 調用重發(fā)延時函數(shù),繼續(xù)執(zhí)行重發(fā)延時

                     break;      
        }                                          
        else                                         // 總線為空閑,即開始發(fā)送數(shù)據(jù)
        {  
   
                  ReSendCount++;                            // 重發(fā)計數(shù)器加1       
                  Delay_Status=Start_Send;

               }
           }        
           break;  
          
  
  case Long_Wait_Delay:                                  // 重發(fā)之間的超時等待延時350ms,50ms中斷一次        
  if(Long_Wait_Time>0)
  {
 
    Long_Wait_Time=Long_Wait_Time-1; 

    break;
 }
 else
 { 
    Delay_Status=Repeat_Send_Delay;

 }  
  break;
  
  
  case Send_Broad_Delay:                                 // 對廣播包競爭回復延時,1ms中斷一次
   
          if(Com_Revert_Time>0)                             // 延時未結束 
          {
               if(RS485_Bus_Status == RS485_Bus_BUSY)       // 檢測到總線為不空閑, 
               {
                  if(Add_Time_Flag==1)                      // 首次不空閑時將加3ms延時
                  {
                      Com_Revert_Time=Com_Revert_Time+3;   
                       Add_Time_Flag=0;

                  }  
                  break;
               }
               else                                         // 檢測到總線為空閑 
               {                                            
                  Add_Time_Flag=1;
                  if(RS485_Answer==0)                       // 還沒有收到回復包,計數(shù)器將減1
                  {
                      Com_Revert_Time=Com_Revert_Time-1;                      
                      break;      
                  }
                  else                                      // 已經(jīng)收到回復包,放棄對廣播包的回復
                  {
                      Delay_Status=Other_Delay;             // 中斷延時結束,返回其他狀態(tài)                     
                      break;
                  }
                                 
               }          
          }
       
          else                                              // 表示競爭回復延時結束
          {
               if(RS485_Bus_Status == RS485_Bus_BUSY)       // 延時結束,發(fā)送前檢測到總線不為空閑,重新執(zhí)行延時程序
               {
                  Com_Revert_Time=Delay_Time_Count[ RS485_Answer_Send_Buff[0]];    // 競爭回復延時間計數(shù)長度                
               }                                          
               else                                         // 總線為空閑,即開始發(fā)送數(shù)據(jù)
               {  
                   Delay_Status=Start_Send;                 // 中斷延時結束,返回其他狀態(tài)        
                   led3=0;
               }  
          }
          break;
  
  case Check_Delay:                                      // 檢測是否接收到回復包延時200ms,50ms中斷一次
      
          if(Check_Time>0)                                  // 200ms延時未結束,繼續(xù)延時
          {

               Check_Time=Check_Time-1;
               break;   
          }
          else                                              // 200ms延時結束
          {                   
              Send_Data_Flag=0;
               Delay_Status=Other_Delay;                    // 中斷延時結束,返回其他狀態(tài)
               if(RS485_Answer==0)                          // 定時中斷50ms后如果沒有回復包標志,將重發(fā)數(shù)據(jù)
               {
                   if(ReSendCount<2)                        // 重發(fā)數(shù)據(jù)小于2次時;
                   {
                      RS485_Send_Flag=1;                    // 啟動發(fā)送標志位
                      ReSendFlag=1;                         // 啟動重發(fā)標志
                      break;
                   }
                   else                                     // 重發(fā)超過兩次;  
                   {
                      ReSendCount=0;                        // 重發(fā)次數(shù)計數(shù)器清0
                   }    
               }
               else
               {
                 // RS485_Answer=0;                          // 接收到回復包,將重發(fā)計數(shù)器清0
                  ReSendCount=0;                        // 重發(fā)次數(shù)計數(shù)器清0
               }
          }     
          break;                
     
     default :
//          TCCR0=0x00;                                        // 關閉定時中斷
          break; 
    
    }
}
  
      
 
//----------------------------------------------------------------------------------------------
//
// 2 Wire bus interrupt service routine
interrupt [TWI] void twi_isr(void)
{
// Place your code here
    INT8U   IICStatus;    
    IICStatus = TWSR;
    IICStatus &= 0xF8;
    switch(IICStatus)
    {   
         //從機接收
        case  0x60:                   // 接收到自身SLA+W,返回ACK,并清除INT位           
        case  0x68:                   //自己作為主機的時候仲裁失敗,并收到自身的SLA+W,返回ACK了。這種情況不會出現(xiàn)            
            IICSendCount=0;
            IICChecksum=0;
            TWCR |= 0xC0;
            break;        
        //從機發(fā)送    
         case  0xA8:                  
         case  0xB0:
         case  0xB8:     
            

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色图片你懂的| 精品国产一二三区| 7878成人国产在线观看| 日韩欧美国产三级电影视频| 久久久精品日韩欧美| 亚洲美女在线国产| 美女一区二区在线观看| 成人激情文学综合网| 欧美日韩成人综合在线一区二区| 久久精品欧美日韩精品| 午夜电影网一区| 91麻豆蜜桃一区二区三区| 国产午夜精品一区二区三区视频| 午夜精品久久久久久久99水蜜桃 | 日韩理论片在线| 国产制服丝袜一区| 日韩欧美激情在线| 无码av免费一区二区三区试看 | 亚洲免费三区一区二区| 久久国产精品露脸对白| 欧美久久婷婷综合色| 一区二区三区在线不卡| 91污片在线观看| 国产精品福利在线播放| 懂色av一区二区三区蜜臀| 久久这里都是精品| 激情小说欧美图片| 日韩欧美一级片| 美女视频一区二区三区| 日韩一区二区视频| 亚洲国产色一区| 欧美日韩激情在线| 亚洲妇熟xx妇色黄| 欧美日韩视频在线一区二区| 一区二区激情小说| 精品视频123区在线观看| 亚洲精品视频免费观看| 色呦呦国产精品| 亚洲一区二区三区视频在线播放 | 国产一区二区三区免费看| 日韩一级二级三级| 精品一区二区综合| 2020国产精品| 成人免费视频视频| 亚洲精品菠萝久久久久久久| 色综合久久综合网欧美综合网| 一区二区国产盗摄色噜噜| 欧美日韩一级二级| 男人的j进女人的j一区| 欧美sm极限捆绑bd| 国产成人在线观看免费网站| 国产亚洲综合在线| 成人激情午夜影院| 亚洲超碰精品一区二区| 亚洲精品一区二区精华| 丁香六月久久综合狠狠色| 综合激情网...| 538prom精品视频线放| 加勒比av一区二区| 1000部国产精品成人观看| 在线观看中文字幕不卡| 日韩精品三区四区| 久久久久久久久岛国免费| 91在线观看一区二区| 天天操天天干天天综合网| 久久丝袜美腿综合| 色哟哟国产精品免费观看| 日韩国产精品91| 中文在线一区二区 | 亚洲高清不卡在线观看| 亚洲精品在线电影| 日本电影欧美片| 久久99国产精品尤物| 亚洲黄色尤物视频| 精品国产伦一区二区三区观看方式 | 日韩一二三四区| 99久久99久久精品国产片果冻 | 亚洲精品成人在线| 日韩欧美一二区| 日本道色综合久久| 九九国产精品视频| 亚洲成av人综合在线观看| 国产三级三级三级精品8ⅰ区| 91国偷自产一区二区开放时间| 久久99精品国产.久久久久| 一区二区激情小说| 国产精品久久三| 欧美电影免费观看高清完整版在线观看| 波多野结衣中文字幕一区| 蜜桃av一区二区| 亚洲卡通欧美制服中文| 久久久另类综合| 日韩一区二区在线观看视频| 色悠久久久久综合欧美99| 国产另类ts人妖一区二区| 日韩和的一区二区| 一区二区三区在线观看网站| 中国色在线观看另类| 日韩精品一区二区三区中文不卡| 在线精品视频免费播放| av亚洲精华国产精华精| 春色校园综合激情亚洲| 国产一区二区导航在线播放| 免费高清视频精品| 日韩电影网1区2区| 亚洲r级在线视频| 亚洲一区二区精品久久av| 亚洲黄色免费电影| 亚洲综合色网站| 亚洲裸体在线观看| 亚洲精品国产无天堂网2021| 亚洲欧洲另类国产综合| 国产日韩欧美电影| 国产嫩草影院久久久久| 久久久国产精品不卡| 久久久国产午夜精品| 国产网红主播福利一区二区| 国产日韩一级二级三级| 国产片一区二区| 国产精品剧情在线亚洲| 国产精品福利av| 一区二区欧美在线观看| 亚洲综合一二三区| 天堂在线亚洲视频| 人人爽香蕉精品| 极品美女销魂一区二区三区| 激情五月婷婷综合网| 国产高清不卡二三区| 国产a级毛片一区| 9i看片成人免费高清| 欧洲中文字幕精品| 欧美一级xxx| 国产欧美一区二区精品忘忧草 | 亚洲国产精品精华液网站| 亚洲www啪成人一区二区麻豆 | 亚洲自拍偷拍欧美| 日韩在线播放一区二区| 久国产精品韩国三级视频| 国产激情精品久久久第一区二区 | 亚洲色图另类专区| 午夜国产不卡在线观看视频| 九九久久精品视频| 成人av电影在线网| 欧美三级三级三级| 精品sm捆绑视频| 亚洲欧美日韩成人高清在线一区| 亚瑟在线精品视频| 国产在线精品不卡| 色一情一乱一乱一91av| 欧美一个色资源| 国产精品国产自产拍在线| 偷窥国产亚洲免费视频| 国产成人精品一区二区三区四区| 91蜜桃在线免费视频| 日韩欧美国产综合| 亚洲免费在线看| 国产一区二区三区四区在线观看| 91福利在线观看| 久久精品网站免费观看| 亚洲综合图片区| 国产高清亚洲一区| 欧美日韩1234| 国产精品乱码妇女bbbb| 日本成人在线不卡视频| 91色porny蝌蚪| 精品电影一区二区| 亚洲成在线观看| 成人黄色av网站在线| 日韩免费一区二区| 亚洲国产美国国产综合一区二区| 国产精品乡下勾搭老头1| 欧美伦理视频网站| 亚洲品质自拍视频| 粉嫩13p一区二区三区| 欧美成人一区二区三区片免费 | 欧美亚洲综合在线| 国产亚洲美州欧州综合国| 热久久一区二区| 色94色欧美sute亚洲13| 国产精品天天摸av网| 麻豆91精品91久久久的内涵| 欧美午夜精品久久久| 亚洲图片另类小说| 高清视频一区二区| 久久午夜羞羞影院免费观看| 天堂资源在线中文精品| 色综合天天狠狠| 日韩毛片一二三区| 99久久综合国产精品| 久久久久久久久久久黄色| 美女网站在线免费欧美精品| 日韩一区二区三区免费看| 日韩综合小视频| 欧美色网一区二区| 亚洲国产精品尤物yw在线观看| 色婷婷国产精品久久包臀| 亚洲男人电影天堂| 在线免费视频一区二区| 亚洲精品国产a久久久久久 | 国产成人av一区二区三区在线|