久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機多機通訊從機程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:208520 發表于 2017-6-6 19:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
從機程序:http://m.zg4o1577.cn/bbs/dpj-87068-1.html
主機程序:http://m.zg4o1577.cn/bbs/dpj-87067-1.html

  1. #include<reg51.h>
  2. #include<string.h>
  3. #define addr     0x01//從機1的地址
  4. #define _SUCC_   0x0f//數據傳送成功
  5. #define _ERR_    0xf0//數據傳送失敗
  6. unsigned char aa=0xff;//主機與從機之間通信標志
  7. unsigned char Buff[20];//數據緩沖區
  8. //串口初始化函數
  9. void serial_init()
  10. {
  11. TMOD=0x20; //定時器1工作于方式2
  12. TH1=0xfd;  
  13. TL1=0xfd; //波特率為9600
  14. PCON=0;
  15. SCON=0xd0;  //串口工作于方式3
  16. TR1=1;  //開啟定時器
  17. TI=0;
  18. RI=0;
  19. }
  20. //接收數據函數
  21. unsigned char RECE_data(unsigned char *Buff)
  22. {
  23. unsigned char i,temp;
  24. unsigned char lenth;
  25. unsigned char check;
  26. RI=0;     //接收數據長度
  27. while(!RI);
  28. if(RB8==1)    //若接收到地址幀,則返回0xfe
  29.   return 0xfe;
  30. lenth=SBUF;
  31. RI=0;     

  32. check=lenth;
  33. for(i=0;i<lenth;i++) //接收數據
  34. {
  35.   while(!RI);
  36.   if(RB8==1)   //若接收到地址幀,則返回0xfe
  37.    return 0xfe;
  38.   Buff[i]=SBUF;   
  39.   check=check^(Buff[i]);
  40.   RI=0;
  41. }
  42. while(!RI);    //接收校驗字節
  43. if(RB8==1)    //若接收到地址幀,則返回0xfe
  44.   return 0xfe;
  45. temp=SBUF;
  46. RI=0;

  47. check=temp^check;  //將從主機接收到的校驗碼與自己計算的校驗碼比對
  48. if(check!=0)   //校驗碼不一致,表明數據接收錯誤,向主機發送錯誤信號,函數返回0xff
  49. {
  50.   TI=0;
  51.   TB8=0;
  52.   SBUF=_ERR_;
  53.   while(!TI);
  54.   TI=0;
  55.   return 0xff;
  56. }
  57. TI=0;           //校驗碼一致,表明數據接收正確,向主機發送成功信號,函數返回0x00
  58. TB8=0;
  59. SBUF=_SUCC_;
  60. while(!TI);
  61. TI=0;
  62. return 0;
  63. }
  64. void main()
  65. {
  66. serial_init();
  67. while(1)
  68. {
  69.   SM2=1;              //接收地址幀
  70.   while(aa!=addr)  //從機等待主機請求自己的地址
  71.   {
  72.    RI=0;
  73.    while(!RI);
  74.    aa=SBUF;
  75.    RI=0;
  76.   }
  77.   TI=0;     //一旦被請求,從機返回自己的地址作為應答,等待接收數據
  78.   TB8=0;
  79.   SBUF=addr;
  80.   while(!TI);
  81.   TI=0;
  82.   SM2=0;                  //接收數據幀
  83.   aa=0xff;    //從機接收數據,并將數據保存到數據緩沖區
  84.   while(aa==0xff)
  85.   {
  86.    aa=RECE_data(Buff);
  87.   }
  88.   if(aa==0xfe)
  89.    continue;
  90.   P1=Buff[1];      //查看接收到的數據
  91. }
  92. }

復制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久夜色精品国产欧美乱极品 | 中文字幕亚洲综合 | 中文字幕免费在线观看 | 人人草av | 九九九久久久 | 成年人网站在线免费观看 | 久久久久国产精品夜夜夜夜夜 | 成人午夜视频在线观看 | 亚洲视频在线观看免费 | 日韩精品在线一区二区 | 成人福利在线 | 日韩中文在线视频 | 日本美女毛茸茸 | 在线理论片 | 日本一级一片免费视频 | 日韩一区不卡 | 免费三片在线观看网站v888 | 逼逼操 | 午夜久久精品 | 在线日韩视频 | 亚洲特黄| av天天操| 国产成人91| a毛片大片 | 亚洲国产精品久久 | 夜夜av | 日韩精品在线免费观看 | 放几个免费的毛片出来看 | 日韩视频精品 | 91视频亚洲| 日日夜夜精品免费 | 成人少妇影院yyyy | 国产欧美精品一区二区色综合 | 日狠狠| 精品一区二区三区四区五区 | 欧美日韩在线一区二区 | 在线观看日韩视频 | 成人三级晚上看 | 亚洲激情在线视频 | av超碰在线| 中文字幕一级片 |