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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2551|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)相互之間的串口通訊程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:107593 發(fā)表于 2016-3-11 01:16 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define SLAVE 0x00
  4. #define BN 16
  5. uchar idata tdata[16];
  6. uchar idata rdata[16];
  7. bit trdy;
  8. bit rrdy;
  9. void main(void)
  10. {
  11.   TMOD=0x20;                        //定時(shí)器T1為模式2
  12.   TL1=0xfd;                        //定時(shí)器初值
  13.   TH1=0xfd;
  14.   PCON=0x00;
  15.   TR1=1;
  16.   SCON=0xf0;                        //串行口方式3
  17.   ES=1;EA=1;                        //開(kāi)串行口中斷
  18.   while(1){trdy=1;rrdy=1;}                //準(zhǔn)備好發(fā)送和接收
  19. }
  20. void slave(void) interrupt 4 using 1
  21. {
  22.   void str(void);
  23.   void sre(void);
  24.   uchar a;
  25.   RI=0;                            //關(guān)串行口中斷
  26.   ES=0;
  27.   if(SBUF!=SLAVE){ES=1;goto reti;}        //非本機(jī)地址,繼續(xù)監(jiān)聽(tīng)
  28.   SM2=0;                            //取笑監(jiān)聽(tīng)狀態(tài)
  29. SBUF=SLAVE;                    //發(fā)回從機(jī)地址
  30. while(TI!=1);TI=0;
  31. while(RI!=1);RI=0;
  32. if(RB8==1){SM2=1;ES=1;goto reti;}        //確認(rèn)地址不符,從機(jī)復(fù)位
  33. a=SBUF;                        //接收命令
  34. if(a==1){                        //從機(jī)接收主機(jī)的數(shù)據(jù)
  35. if(rrdy==1) SBUF=0x01;            //接收準(zhǔn)備好,發(fā)回0x01
  36. else
  37. SBUF=0x00;
  38. while(TI!=1);TI=0;
  39. while(RI!=1);RI=0;
  40. if(RB8==1){SM2=1;ES=1;goto reti;}
  41. sre();                        //接收數(shù)據(jù)
  42. }
  43. else
  44. {
  45. if(a==0x02)                    //從機(jī)向主機(jī)發(fā)送數(shù)據(jù)
  46. {
  47. if(trdy==1) SBUF=0x02;        //發(fā)送準(zhǔn)備好
  48. else
  49. SBUF=0x00;
  50. while(TI!=1);TI=0;
  51. while(RI!=1);RI=0;
  52. if(RB8==1){SM2=1;ES=1;goto reti;}
  53. str( );                    //發(fā)送數(shù)據(jù)
  54. }
  55. else
  56. {
  57. SBUF=0x80;                //命令非法
  58. while(TI!=1);TI=0;
  59. SM2=1;ES=1;                //恢復(fù)監(jiān)聽(tīng)
  60. }
  61. }
  62. reti:;
  63. }
  64. void str(void)                        //發(fā)送數(shù)據(jù)函數(shù)
  65. {uchar p,i;
  66. trdy=0;
  67. do{p=0;                            //初始校驗(yàn)和為0
  68.     for(i=0;i<BN;i++)
  69.      {SBUF=tdata[i];                    //發(fā)送數(shù)據(jù)
  70.       p+=tdata[i];
  71.       while(TI!=1);TI=0;
  72.      }
  73.   SBUF=p;                        //發(fā)送校驗(yàn)和
  74. while(TI!=1);TI=0;
  75. while(RI!=1);RI=0;
  76. }while(SBUF!=0);                    //主機(jī)接收不正確,重新發(fā)送

  77. SM2=1;ES=1;
  78. }
  79. void sre(void)                        //接收數(shù)據(jù)函數(shù)
  80. {uchar p,i;
  81. rrdy=0;
  82. while(1)
  83. {p=0;                                //初始化校驗(yàn)和為0
  84.    for(i=0;i<BN;i++)
  85. {while(RI!=1);RI=0;
  86.    tdata[i]=SBUF;                    //接收數(shù)據(jù)
  87.    p+=rdata[i];
  88.   }
  89.   while(RI!=1);RI=0;
  90. if(SBUF==p){SBUF=0x00;break;}        //校驗(yàn)和相同,發(fā)00H
  91. else{
  92. SBUF=0xFF;while(TI!=1);TI=0;        //校驗(yàn)和不同,發(fā)FFH,重新接收
  93. }
  94. }
  95. SM2=1;ES=1;
  96. }
復(fù)制代碼


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

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久综合桃花 | 91精品中文字幕一区二区三区 | 欧美国产日韩成人 | 国产一区二区三区在线 | 欧美精品网站 | 99久久精品国产一区二区三区 | 亚洲精品日韩精品 | 人操人免费视频 | 国外成人免费视频 | 国产精产国品一二三产区视频 | 91免费高清 | 国产自产21区 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 欧美成人影院 | 亚洲精品一区在线 | 日韩一级在线 | 精品日韩一区二区 | 欧美理伦片在线播放 | 超碰免费在 | 国产精品自拍啪啪 | 亚洲精品综合一区二区 | 日韩一二区在线观看 | 欧美成人久久 | 中文一区 | 亚州国产 | 韩国av影院 | 精品91久久久 | 免费人成激情视频在线观看冫 | 日韩亚洲一区二区 | 福利视频网 | 精品欧美乱码久久久久久1区2区 | 视频一区二区中文字幕 | 欧美成人a∨高清免费观看 欧美日韩中 | 成人二区| 日日操夜夜操天天操 | 亚洲欧美日韩精品久久亚洲区 | 日日草天天干 | 亚洲精品欧美一区二区三区 | 久久激情网 | 亚洲精品黄色 | 亚洲国产视频一区二区 |