<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發網

      電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
      搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

      單片機雙機點對點通信的從機程序

      作者:佚名    文章來源:本站原創    點擊數:    更新時間:2011-5-22

      /* 雙機點對點通信的從機部分 */
      #ifndef __P2P_S_C__
      #define __P2P_S_C__

      #include <AT89X51.H>
      #include <STRING.H>

      #define __MAX_LEN_ 64    // 數據最大長度
      #define _MHZ_ 11    // 設置單片機使用的晶振頻率(11.0592MHz)

      /* 以下為程序協議中使用的握手信號 */
      #define __RDY_ 0x06    // 主機開始通信時發送的呼叫信號
      #define __BUSY_ 0x15    // 從機忙應答
      #define __OK_ 0x00    // 從機準備好
      #define __SUCC_ 0x0f    // 數據傳送成功
      #define __ERR_ 0xf0    // 數據傳送錯誤

      void init_serial();    // 串口初始化
      unsigned char recv_data(unsigned char *buf);    // 接收數據
      void Beep_ok();    // 蜂鳴表示數據接收ok,該函數代碼未給出

      void main()
      {
       char buf[__MAX_LEN_];
       unsigned char i = 0;
       unsigned char tmp = 0xff;

       /* 串口初始化 */
       init_serial();    // 初始化串口
       EA = 0;    // 關閉所有中斷

       /* 進入設備應答階段 */
       while(1)
       {
        /* 如果接收到的數據不是握手信號__RDY_,則繼續等待 */
        while(tmp != __RDY_)
        {
         RI = 0;
         while(!RI);
         tmp = SBUF;
         RI = 0;
        }
        /* 程序通過檢測P0口數據判斷當前設備狀態,若P0=0xab,表示當前設備忙 */
        P0 = 0xff;
        tmp = P0;
        if(tmp == 0xab)    // 如果P0口數據為0x,則當前設備忙,發送__BUSY_信號
        {
         TI = 0;
         SBUF = __BUSY_;
         while(!TI);
         TI = 0;
         continue;
        }
        TI = 0;    // 否則發送__OK_信號表示可以接收數據
        SBUF = __OK_;
        while(!TI);
        TI = 0;
        /* 數據接收 */
        tmp = 0xff;
        while(tmp == 0xff)
        {
         tmp = recv_data(buf);    // 校驗失敗返回0xff,接收成功則返回0
        }
        Beep_ok();    // 蜂鳴表示數據接收成功 
       }
      }

      /* 初始化串口 */
      void init_serial()
      {
       TMOD = 0x20; //定時器T1使用工作方式2
       TH1 = 250;    // 設置初值
       TL1 = 250;
       TR1 = 1;    // 開始計時
       PCON = 0x80;    // SMOD = 1
       SCON = 0x50; //工作方式1,波特率9600bps,允許接收
      }

      /* 接收數據,注意該函數使用buf指向的緩沖區保存數據,在數據末尾使用’\0’表示數據結束
       * 返回值為0,數據校驗成功,返回值為0xff,數據校驗失敗  
       */
      unsigned char recv_data(unsigned char *buf)
      {
       unsigned char len;    // 該字節用于保存數據長度
       unsigned char ecc;    // 該字節用于保存校驗字節
       unsigned char i,tmp;
       /* 接收數據長度 */
       RI = 0;
       while(!RI);
       len = SBUF;
       RI = 0;
       /* 使用len的值為校驗字節ecc賦初值 */
       ecc = len;
       /* 接收數據 */
       for(i=0; i<len; i++)
       {
        while(!RI);
        *buf = SBUF;    // 接收數據
        ecc = ecc^(*buf);    // 進行字節校驗
        RI = 0;
        buf++;
       }
       *buf = 0;    // 表示數據結束
       /* 接收校驗字節 */
       while(!RI);
       tmp = SBUF;
       RI = 0;
       /* 進行數據校驗 */
       ecc = tmp^ecc;
       if(ecc != 0)    // 校驗失敗
       {
        *(buf-len) = 0;    // 清空數據緩沖區
        TI = 0;    // 發送校驗失敗信號
        SBUF = __ERR_;
        while(!TI);
        TI = 0;
        return 0xff;    // 返回0xff表示校驗錯誤
       }
       TI = 0;    // 校驗成功
       SBUF = __SUCC_;
       while(!TI);
       TI = 0;
       return 0;    // 校驗成功,返回0
      }


      #endif

      Tags:單片機,c語言,通信  
      責任編輯:admin
      請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 九九综合VA免费看| 综合网日日天干夜夜久久| 麻豆精品久久精品色综合| 伊人不卡久久大香线蕉综合影院| 婷婷六月久久综合丁香76 | 一本一本久久a久久精品综合麻豆| 久久久久久久综合综合狠狠| 亚洲VA综合VA国产产VA中| 一本久久a久久精品vr综合| 亚洲综合成人婷婷五月网址| 五月综合激情婷婷六月色窝 | 天天干天天色综合网| 久久久久亚洲AV综合波多野结衣| 久久综合香蕉久久久久久久| 狠狠色狠狠色很很综合很久久| 久久婷婷五月综合色高清| 日韩综合无码一区二区| 亚洲AⅤ优女AV综合久久久| 韩国亚洲伊人久久综合影院| 五月丁香综合激情六月久久| 亚洲 自拍 另类小说综合图区| 伊人色综合久久天天| 精品综合久久久久久97| 亚洲综合av永久无码精品一区二区| 久久婷婷色香五月综合激情| 69国产成人综合久久精品91| 伊人久久大香线蕉综合电影 | 色综合小说久久综合图片| 久久久久AV综合网成人| 狠狠色丁香婷婷综合精品视频| 色婷婷色综合激情国产日韩| 亚洲AV综合色区无码一二三区| 久久婷婷五月综合97色一本一本 | 欧美日韩色另类综合| 色妞色综合久久夜夜| 91在线亚洲综合在线| 色综合久久天天综合观看| 久久狠狠一本精品综合网| 一97日本道伊人久久综合影院| 国产综合精品蜜芽| 国产综合久久久久|