多機通信(主從機程序成功)_第1頁
多機通信(主從機程序成功)_第2頁
多機通信(主從機程序成功)_第3頁
多機通信(主從機程序成功)_第4頁
多機通信(主從機程序成功)_第5頁
已閱讀5頁,還剩1頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、/-主機程序/-#include<reg52.h>#define uchar unsigned char#define uint unsigned int#define slave 0x03#define BN 4 uchar code tbufBN=0x3f,0x5b,0x66,0x7d;/uchar code tab=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;void init()/初始化TR1=1;TH1=0xf3;TL1=0xf3;TMOD=0x20;SM0=0;SM1=1;SM2=1;REN=1; void err

2、or() /錯誤TB8=1;SBUF=0xf0;while(TI!=1);TI=0;void send_date(unsigned char data1) SBUF = data1; /將待發送的字符送入發送緩沖器while(!TI); /等待發送完成TI = 0; /發送中斷標志請0/* /向串口發送一個字符串,strlen為該字符串長度 void send(uchar *str,uint strlen) uchar p=0;uint k; do for(k=0;k<strlen;k+) send_date(*(str + k); p+=*(str + k); send_date(p)

3、;while(!RI);RI=0; while(SBUF!=0);*/void send() /發送數據并校驗和uchar i;uint p;dop=0; for(i=0;i<BN;i+)send_date(tbufi);p+=tbufi;P1=0xf0;while(!RI);RI=0; send_date(p); P1=0x00;while(!RI);RI=0; while(SBUF!=0); void chuankou(uchar add,uchar command) /串口函數 (地址,命令)uchar a;while(1)send_date(add); while(!RI);RI

4、=0; if(SBUF!=add)error();elseTB8=0; send_date(command); while(!RI);RI=0; a=SBUF;if(a&0x80)=0x80)error();else if(a&0x01)=0x01) /從機準備好接收并主機發送數據P1=0xef;send(/*tbuf,BN*/);TB8=1; void main()init();chuankou(slave,0x01);while(1);/-從機程序/-#include<reg52.h>#define uchar unsigned char#define uint

5、 unsigned int#define slave 0x03#define BN 4 uchar code tab=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;uchar rbufBN;bit rready; void delay(void) /誤差 0us unsigned char a,b,c; for(c=167;c>0;c-) for(b=171;b>0;b-) for(a=16;a>0;a-);void init() /初始化 TR1=1;TH1=0xf3;TL1=0xf3;TMOD=0x20;SM0=0;S

6、M1=1;SM2=1;REN=1; EA =1; ES =1;P2=0xff; void error() /錯誤SM2=1;ES=1; void send_date(unsigned char data1) /發送字符SBUF = data1; /將待發送的字符送入發送緩沖器while(!TI); /等待發送完成TI = 0; /發送中斷標志請0void receive() /接收并校驗和uchar a,i,p;rready=0;while(1)p=0; for(i=0;i<BN;i+)while(!RI);RI=0;rbufi=SBUF;a=SBUF;P2=a;p+=rbufi;delay();send_date(0); P2=tab9; while(!RI);RI=0; if(SBUF=p)send_date(0x00);break;elsesend_date(0xff); void main()init();while(1)rready=1;void ssio()interrupt 4uchar a; ES=0; RI=0;if(SBUF!=slave)error(); goto reti; else send_date(slave);while(!RI);RI=0;a=SBUF;SM2=0;if(a!=0x01)&&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論