久久成人国产精品一区二区,在线观看成人网站,精品久久久久久成人AV,国产成人无码免费网站

電子開發網

電子開發網電子設計 | 電子開發網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 個字
[ 查看全部 ] 網友評論
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
久久成人国产精品一区二区,在线观看成人网站,精品久久久久久成人AV,国产成人无码免费网站
    <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. 主站蜘蛛池模板: 1769国内精品视频在线播放| 欧美日韩日本国产亚洲在线| 久久亚洲私人国产精品va| 午夜日韩av| 久久er精品视频| 久久久久国产精品www| 另类av一区二区| 欧美福利一区二区| 欧美日韩高清一区| 国产精品国产自产拍高清av王其| 欧美天天影院| 国产精品视频久久| 国产在线一区二区三区四区| 黄色免费成人| 亚洲日本电影| 99re成人精品视频| 国产精品久久久久aaaa樱花| 国产精品一区久久| 国外成人性视频| 亚洲欧洲精品一区二区三区| 国产日韩综合| 黑人极品videos精品欧美裸| 亚洲国产mv| 在线一区二区三区做爰视频网站| 亚洲欧美在线另类| 久久这里只有| 欧美日韩免费观看中文| 国产精品一区二区视频| 激情久久久久久久| 亚洲国产午夜| 亚洲一区视频在线| 欧美在线观看视频一区二区三区| 米奇777在线欧美播放| 欧美日韩黄色一区二区| 国产精品网站在线播放| 在线观看国产一区二区| 一级成人国产| 久久精品欧洲| 欧美日韩国产欧美日美国产精品| 国产伦精品一区二区三区| 国产精品久久久久久亚洲调教|