多機(jī)通信舉例_第1頁
多機(jī)通信舉例_第2頁
多機(jī)通信舉例_第3頁
多機(jī)通信舉例_第4頁
多機(jī)通信舉例_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

多機(jī)通信舉例:

例8—4現(xiàn)有1臺主機(jī)與10臺從機(jī)進(jìn)行雙向通信。從機(jī)地址為:00H——09H。設(shè)主、從機(jī)以方式3進(jìn)行串行通信,波特率為1200,F(xiàn)晶振為6MHZ。下面以主機(jī)發(fā)送數(shù)據(jù),從機(jī)接收數(shù)據(jù)為例說明。

主機(jī)設(shè)定有關(guān)寄存器的內(nèi)容如下:

R1——存放主機(jī)發(fā)送的數(shù)據(jù)塊首地址R2——存放尋址的從機(jī)地址

R3——存放主機(jī)發(fā)送數(shù)據(jù)塊的長度

通信命令約定:“01H”:表示主機(jī)發(fā)送數(shù)據(jù),從機(jī)接收數(shù)據(jù);

“02H”:表示主機(jī)接收數(shù)據(jù),從機(jī)發(fā)送數(shù)據(jù)。主機(jī)通信程序流程圖如圖8—8所示:

開始

定時器T1初始化

串行口初始化

向從機(jī)發(fā)送地址

發(fā)送無效地址FFH

接收從機(jī)返回的地址

N

從機(jī)地址相符?

Y

向從機(jī)發(fā)送命令

延時

發(fā)送數(shù)據(jù)塊

結(jié)束

圖8—8主機(jī)通信程序流程圖

由圖8—8流程圖可得主機(jī)通信程序清單如下:

MAIN:MOVTMOD,#20H;定時器T1設(shè)置工作方式2。

MOVTL1,#0F3H;T1置初值。

MOVTH1,#0F3H

SETBTR1;啟動T1。

MOVPCON,#00H;波特率不倍增。

MOVSCON,#0D8H;串行口設(shè)置工作方式3,TB8置1,表示發(fā)送地址。

SADDR:MOVA,R2;取出從機(jī)地址。

MOVSBUF,A;發(fā)送從機(jī)地址。

JNBRI,$;等待從機(jī)應(yīng)答。

CLRRI;接收到從機(jī)應(yīng)答,RI清零。

MOVA,SBUF;取出從機(jī)應(yīng)答數(shù)據(jù)(從機(jī)地址)。

XRLA,R2;核對應(yīng)答地址。

JZMSEND;若地址相符轉(zhuǎn)發(fā)送命令。

SETBTB8;地址不相符,置地址標(biāo)志,以便重發(fā)地址。

CLRTI

MOVSBUF,#0FFH;發(fā)送無效地址,使所有從機(jī)SM2置1。

SJMPSADDR;重發(fā)地址。

MSEND:CLRTB8;地址相符,準(zhǔn)備發(fā)送命令、數(shù)據(jù)等。

MOVSBUF,#01H;發(fā)送命令,要求從機(jī)接收數(shù)據(jù)。

LCALLDELAY10;延遲10MS。

MAGAIN:MOVSBUF,@R1;主機(jī)發(fā)送數(shù)據(jù)。

JNBTI,$;等待一個字符發(fā)送完。

CLRTI

;本字符發(fā)送完畢,準(zhǔn)備發(fā)送下一個字符。

INCR1

;發(fā)送數(shù)據(jù)區(qū)地址指針加一,指向下一單元。

DJNZR3,

MAGAIN

;數(shù)據(jù)快未發(fā)送完,繼續(xù)發(fā)送。

RET;發(fā)送完畢,返回。

以#08H號從機(jī)接收為例,設(shè)定:R1:存放從機(jī)接收數(shù)據(jù)塊首地址;R2:存放從機(jī)接收數(shù)據(jù)塊長度。

從機(jī)通信程序流程圖如圖8—9所示:

開始

定時器T1初始化

串行口初始化

本機(jī)SM2置1

接收主機(jī)發(fā)送的地址

N

是本機(jī)地址?

Y

本機(jī)SM2位清零

接收主機(jī)命令

命令識別

N

N

Y

主機(jī)接收,從機(jī)發(fā)送?

主機(jī)發(fā)送,從機(jī)接收?

接收數(shù)據(jù)塊

Y

發(fā)送數(shù)據(jù)塊(略)

結(jié)束

圖8—9從機(jī)通信程序流程圖由圖8—9可得從機(jī)通信程序清單如下:

MOV

TMOD,

#20H

;T1設(shè)置工作方式2。

MOV

TL1,

#0F3H

;置初值。

MOV

TH1,

#0F3H

SETB

TR1

;啟動T1。

MOV

PCON,

#00H

;波特率不倍增。

MOV

SCON,

#0F0H

;本機(jī)串行口設(shè)置工作方式3,SM2置1,準(zhǔn)備接收地址信息。

WAIT:JNBRI,$;等待主機(jī)聯(lián)絡(luò)。

CLRRI;接收到主機(jī)地址信息,清RI,準(zhǔn)備接收下一數(shù)據(jù)。

MOVA,SBUF;取出接收到的地址信息。

XRLA,#08H;與本機(jī)比較。

JZSADDR;是本機(jī)地址,轉(zhuǎn)發(fā)送本機(jī)地址程序。

SETBSM2;本機(jī)SM2置1,以便重新接收地址。

AJMPWAIT;不是本機(jī)地址,再重新聯(lián)絡(luò)。

SADDR:MOVSBUF,#08H;發(fā)送本地址,供主機(jī)核對。

CLRTI

CLRSM2;準(zhǔn)備接收命令。

JNBRI,$;接收主機(jī)發(fā)送的命令。

CLRRI

MOV70H,SBUF

MOVA,70H;取出命令。

XRLA,#01H;檢查命令。

JZRECIV;若為本機(jī)接收數(shù)據(jù)命令,轉(zhuǎn)接收程序。

XRLA,#02H;再次檢查命令。

JZSEND;若為本機(jī)發(fā)送數(shù)據(jù)命令,轉(zhuǎn)發(fā)送程序。

AJMPWAIT;命令無效,返回待命狀態(tài)。

RECIV:JNBRI,$;接收一個字符。

CLR

RI

;準(zhǔn)備下次接收。

MOV

@R1,SBUF

;存接收數(shù)據(jù)。

INC

R1

;修改接收數(shù)據(jù)區(qū)指針。

DJNZ

R2,RECIV

;若數(shù)據(jù)接收未完,繼續(xù)接收。

SETB

SM2

;數(shù)據(jù)接收完畢,SM2重新置1。

LJMP

WAIT

;返回待命狀態(tài)。

SEND:(略)

應(yīng)當(dāng)指出,以上介紹了多機(jī)通信的一個簡單示例,實際應(yīng)用時還應(yīng)考慮命令校核、數(shù)據(jù)校核等問題,以求提高通信的可靠性。同時波特率的設(shè)定還要考慮所選擇的通信介質(zhì)等,篇幅有限,不再細(xì)述。

思考題與習(xí)題

8—1什么是串行通信的波特率?

8—2若8051單片機(jī)F晶振=11.059MHZ,需用波特率2400,試計算定時器T1的記數(shù)初值。

8—3MCS—51單片機(jī)的串行口四種工作方式各有哪些特點?8—4MCS—51單片機(jī)串行口四種工作方式的波特率如何確定?

8—5試用8051串行口工作方式0與移位寄存器組成6位LED靜態(tài)電路,并編程輸出字符”89C51P”。

8—6試編寫程序,設(shè)串行口為工作方式1,波特率為1200,禁止中斷,用查詢法將甲機(jī)從外部RAM2000H開始的10個數(shù)傳送到乙機(jī)從2000H開始的外部RAM中去,已知晶振頻率F晶振=11.0592MHZ。

8—7甲乙兩機(jī)進(jìn)行串行通信,數(shù)據(jù)區(qū)均為內(nèi)部RAM的50H—5FH,串行口以方式2工作,要求用TB8作奇偶校驗位一起傳送,波特率為1200,F(xiàn)

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論