版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 多機通信系統(tǒng)</b></p><p> 單片機a,b,c. a為主機,bc為從機。a上有一個外部中斷0輸入,按第一次a的兩個LED亮500ms,再按一下,b機的兩個LED燈亮500ms,第三次按下c機的兩個LED燈亮500ms,然后周而復(fù)始。兩個數(shù)碼管分別顯示0/1/2, 和abc(bc由從機反饋)</p><p><b>
2、 /*</b></p><p><b> 主從通信基本步驟:</b></p><p> 1. 主機從機初始化為方式2或者3,從機都置SM2=1,允許中斷</p><p> 2. 主機置TB8=1,發(fā)送從機地址</p><p> 3. 所有從機均接收主機發(fā)送要尋址的從機地址</p><
3、;p> 4. 被尋址的從機確認地址后,置本機SM2=0,向主機返回地址,供主機核對</p><p> 5. 核對無誤后,主機向被尋址的從機發(fā)送命令,通知從機接受或者發(fā)送數(shù)據(jù)。</p><p> 6. 本次通信結(jié)束后,主從機重置SM2=1,主機可再對其他從機尋址</p><p><b> */</b></p><
4、p> ******************************************************************</p><p><b> 主機a:</b></p><p> ******************************************************************</p>
5、<p> #include <reg51.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> uchar leddata[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x
6、6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x00};</p><p> uchar Mode;</p><p> sbit P10 = P1^0;</p><p> sbit P13 = P1^3;</p><p> sbit P17 = P1^7;</p><p> sb
7、it P20 = P2^0;</p><p> sbit P21 = P2^1;</p><p> void UART_init()</p><p><b> {</b></p><p> TMOD = 0x20;</p><p> TH1 = 0xfd;</p><
8、p> TL1 = 0xfd;</p><p><b> TR1 = 1;</b></p><p> SCON = 0xd0;</p><p><b> ES = 1;</b></p><p><b> EX0 = 1;</b></p><p&
9、gt; IT0 = 1; //INT0下跳觸發(fā)</p><p><b> EA = 1;</b></p><p><b> TI = 0;</b></p><p><b> }</b></p><p> void DelayMs(int ms)</p>
10、<p><b> {</b></p><p><b> uchar i;</b></p><p> while(ms--) </p><p> for(i=0; i<120; i++);</p><p><b> }</b></p>&l
11、t;p> void putc_to_SerialPort(uchar c)</p><p><b> {</b></p><p><b> SBUF = c;</b></p><p> while(TI == 0);</p><p><b> TI = 0;</b&g
12、t;</p><p><b> }</b></p><p> void MasterControl(unsigned char Addr, unsigned char Comd)</p><p><b> {</b></p><p><b> TB8 = 1;</b>&
13、lt;/p><p> putc_to_SerialPort(Addr);</p><p> DelayMs(50);</p><p><b> TB8 = 0;</b></p><p> putc_to_SerialPort(Comd);</p><p> DelayMs(50);</
14、p><p><b> }</b></p><p> Ex0_int(void) interrupt 0</p><p><b> {</b></p><p> P0 = leddata[Mode];</p><p><b> P20 = 0;</b>
15、;</p><p> if(Mode == 0)</p><p><b> {</b></p><p> P2 = leddata[10];</p><p><b> P10 = 0;</b></p><p><b> P13 = 0;</b>
16、</p><p> DelayMs(500);</p><p><b> P10 = 1;</b></p><p><b> P13 = 1;</b></p><p> // MasterControl('b','C');</p>
17、<p> // MasterControl('c','C');</p><p><b> } </b></p><p> else if(Mode == 1)</p><p><b> {</b></p><p><b>
18、; P10 = 1;</b></p><p> P13 = 1; </p><p> MasterControl('b','O'); </p><p> // MasterControl('c','C');</p><p><b>
19、 }</b></p><p> else if(Mode == 2)</p><p><b> {</b></p><p><b> P10 = 1;</b></p><p> P13 = 1; </p><p> // MasterCo
20、ntrol('b','C');</p><p> MasterControl('c','O'); </p><p><b> }</b></p><p> Mode = (Mode + 1) % 3;</p><p><b> }
21、 </b></p><p> com_int(void) interrupt 4</p><p><b> {</b></p><p><b> if(RI)</b></p><p><b> {</b></p><p><b&
22、gt; RI = 0;</b></p><p> if(SBUF == 'b')</p><p><b> {</b></p><p> P2 = leddata[11];</p><p><b> }</b></p><p> if(
23、SBUF == 'c')</p><p><b> {</b></p><p> P2 = leddata[12];</p><p><b> }</b></p><p><b> }</b></p><p><b>
24、 }</b></p><p> void main(void)</p><p><b> {</b></p><p> P0 = 0x00;</p><p> P1 = 0xff;</p><p> P2 = 0x00;</p><p> UART_
25、init();</p><p><b> Mode = 0;</b></p><p><b> while(1);</b></p><p><b> }</b></p><p> *********************************************
26、*********************</p><p><b> 從機b:</b></p><p> ******************************************************************</p><p> #include <reg51.h></p><p
27、> #define uchar unsigned char</p><p> uchar RecData;</p><p> sbit P10 = P1^0;</p><p> sbit P13 = P1^3;</p><p> void UART_init()</p><p><b> {
28、</b></p><p> TMOD = 0x21;</p><p> TH1 = 0xfd;</p><p> TL1 = 0xfd;</p><p><b> TR1 = 1;</b></p><p> SCON = 0xf0;</p><p>&
29、lt;b> ES = 1;</b></p><p><b> PS = 1;</b></p><p><b> EA = 1;</b></p><p><b> }</b></p><p> void DelayMs(int ms)</p>
30、;<p><b> {</b></p><p><b> uchar i;</b></p><p> while(ms--) </p><p> for(i=0; i<120; i++);</p><p><b> }</b></p>
31、<p> void putc_to_SerialPort(uchar c)</p><p><b> {</b></p><p><b> SBUF = c;</b></p><p> while(TI == 0);</p><p><b> TI = 0;</
32、b></p><p><b> }</b></p><p> com_int(void) interrupt 4</p><p><b> {</b></p><p><b> if(RI)</b></p><p><b> {
33、</b></p><p> RecData = SBUF;</p><p><b> RI = 0;</b></p><p> if(RB8 == 1) //地址</p><p><b> {</b></p><p> if(RecData ==
34、39;b') //是自己的地址,置SM2=0,準備接受數(shù)據(jù)</p><p><b> {</b></p><p><b> SM2 = 0; </b></p><p> putc_to_SerialPort('b'); </p><p><b> }&
35、lt;/b></p><p> else //不是自己的地址</p><p><b> {</b></p><p><b> SM2 = 1;</b></p><p><b> } </b></p><p><b> }
36、</b></p><p> if(RB8 == 0) //數(shù)據(jù)</p><p><b> { </b></p><p> if(RecData=='O')</p><p><b> {</b></p><p><b> P10
37、 = 0;</b></p><p><b> P13 = 0;</b></p><p> DelayMs(500);</p><p><b> P10 = 1;</b></p><p><b> P13 = 1;</b></p><p&g
38、t;<b> }</b></p><p> if(RecData=='C')</p><p><b> {</b></p><p><b> P10 = 1;</b></p><p><b> P13 = 1;</b></p
39、><p><b> }</b></p><p><b> SM2 = 1;</b></p><p><b> } </b></p><p><b> } </b></p><p><b> }</b>
40、</p><p> void main(void)</p><p><b> {</b></p><p> P0 = 0xff;</p><p> P1 = 0xff;</p><p> UART_init();</p><p><b> while(
41、1);</b></p><p><b> }</b></p><p> ******************************************************************</p><p><b> 從機c:</b></p><p> ******
42、************************************************************</p><p> #include <reg51.h></p><p> #define uchar unsigned char</p><p> uchar RecData;</p><p> sbi
43、t P10 = P1^0;</p><p> sbit P13 = P1^3;</p><p> void UART_init()</p><p><b> {</b></p><p> TMOD = 0x21;</p><p> TH1 = 0xfd;</p><p
44、> TL1 = 0xfd;</p><p><b> TR1 = 1;</b></p><p> SCON = 0xf0;</p><p><b> ES = 1;</b></p><p><b> PS = 1;</b></p><p>
45、;<b> EA = 1;</b></p><p><b> }</b></p><p> void DelayMs(int ms)</p><p><b> {</b></p><p><b> uchar i;</b></p>
46、<p> while(ms--) </p><p> for(i=0; i<120; i++);</p><p><b> }</b></p><p> void putc_to_SerialPort(uchar c)</p><p><b> {</b></p>
47、;<p><b> SBUF = c;</b></p><p> while(TI == 0);</p><p><b> TI = 0;</b></p><p><b> }</b></p><p> com_int(void) interrupt 4
48、</p><p><b> {</b></p><p><b> if(RI)</b></p><p><b> {</b></p><p> RecData = SBUF;</p><p><b> RI = 0;</b>
49、;</p><p> if(RB8 == 1) //地址</p><p><b> {</b></p><p> if(RecData == 'c') //是自己的地址,置SM2=0,準備接受數(shù)據(jù)</p><p><b> {</b></p><p&g
50、t;<b> SM2 = 0; </b></p><p> putc_to_SerialPort('c'); </p><p><b> }</b></p><p> else //不是自己的地址</p><p><b> {</b></p&
51、gt;<p><b> SM2 = 1;</b></p><p><b> } </b></p><p><b> } </b></p><p> if(RB8 == 0) //數(shù)據(jù)</p><p><b> { </b>&l
52、t;/p><p> if(RecData=='O')</p><p><b> {</b></p><p><b> P10 = 0;</b></p><p><b> P13 = 0;</b></p><p> DelayMs(5
53、00);</p><p><b> P10 = 1;</b></p><p><b> P13 = 1;</b></p><p><b> SM2 = 1;</b></p><p><b> }</b></p><p>
54、if(RecData=='C')</p><p><b> {</b></p><p><b> P10 = 1;</b></p><p><b> P13 = 1;</b></p><p><b> SM2 = 1;</b><
55、;/p><p><b> } </b></p><p><b> } </b></p><p><b> }</b></p><p><b> }</b></p><p> void main(void)</p>
56、;<p><b> {</b></p><p> P0 = 0xff;</p><p> P1 = 0xff;</p><p> UART_init();</p><p><b> while(1);</b></p><p><b> }&
57、lt;/b></p><p><b> 多機通信系統(tǒng)</b></p><p><b> 實驗清單:</b></p><p> 排阻 (1K) 10片</p><p> 80C51芯片 10片</p><p> 按鍵開關(guān)(2腳) 5個</
58、p><p> 發(fā)光二極管 30個</p><p> 電容 10uF 15個</p><p> 30pF 30個</p><p> 數(shù)碼管 10個</p><p> 石英晶體(1.2—12MHZ) 15個</p><p> 電阻 8.2K歐 15個<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 通信系統(tǒng)課程設(shè)計
- 通信系統(tǒng)課程設(shè)計
- 通信系統(tǒng)綜合課程設(shè)計
- 集群通信系統(tǒng)課程設(shè)計
- fsk通信系統(tǒng)課程設(shè)計
- 模擬通信系統(tǒng)課程設(shè)計
- 通信課程設(shè)計---pcm通信系統(tǒng)設(shè)計
- 操作系統(tǒng)課程設(shè)計報告--多級文件系統(tǒng)
- 操作系統(tǒng)課程設(shè)計報告--多級文件系統(tǒng)
- 通信原理課程設(shè)計---systemview通信系統(tǒng)仿真
- 通信原理課程設(shè)計---單工通信系統(tǒng)
- 操作系統(tǒng)課程設(shè)計報告--多級文件系統(tǒng)
- 通信原理課程設(shè)計---單工通信系統(tǒng)
- 操作系統(tǒng)課程設(shè)計報告--多級文件系統(tǒng).doc
- 多級放大電路課程設(shè)計報告
- 通信課程設(shè)計--psk通信系統(tǒng)性能仿真
- 操作系統(tǒng)-管道通信課程設(shè)計
- linux仿qq通信系統(tǒng)課程設(shè)計
- 通信原理課程設(shè)計-- am系統(tǒng)仿真
- 通信綜合系統(tǒng)訓(xùn)練課程設(shè)計
評論
0/150
提交評論