資源描述:
《片機原理及應(yīng)用多機通信》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、單片機原理及應(yīng)用北京化工大學(xué)信息科學(xué)與技術(shù)學(xué)院主講教師:林偉國E-mail:linwg@mail.buct.edu,cn多機通信MCS-51系列單片機的串行通訊方式2和方式3是有多機通訊功能,可構(gòu)成多種分布式通訊系統(tǒng)。一個全雙工主從方式多機通訊系統(tǒng)的原理框圖如下:TXDRXD主機0#機1#機N#機理論上來說,一臺主機可以接256臺從機。但實際上做不到,因為其受限于串口的驅(qū)動能力。而且,上述這種接法其通訊距離<=1m。、為了實現(xiàn)遠距離通信,也為了增加驅(qū)動能力(帶負(fù)載能力),一般采用RS-485總線進行串行通訊,這時要變成半雙工通訊。不同的RS-485總線驅(qū)動芯
2、片的帶負(fù)載能力不同,有的可以帶32個從機,也有的可以帶64個從機,帶128個從機等等。上圖中,主機可以與任何一臺從機實現(xiàn)通訊,從機之間的通訊必須通過主機轉(zhuǎn)發(fā)。多機通訊的基本原理在多機通訊系統(tǒng)中,為了保證主機與從機之間能可靠通訊,串行通訊必須是具備識別能力的。在MCS-51單片機中,其串行通訊控制寄存器SCON中設(shè)有多機通訊選擇位SM2。當(dāng)主機的SM2無要求時,SM0、SM1=10或11時,其工作于方式2或方式3,即多機通訊方式。主機通過對TB8的設(shè)置以區(qū)別發(fā)送的是地址幀(TB8=1)還是數(shù)據(jù)幀(TB8=0)。多機通訊的基本原理從機對接收到的RB8進行識別:當(dāng)
3、從機的SM2=1時,如果接收到的RB8=1,則確認(rèn)為呼叫地址幀,將該幀內(nèi)容裝入SBUF中,并置位RI,向CPU請求中斷,進行地址比較。如果RB8=0則為數(shù)據(jù)幀,將不予以理睬,接收的信息被丟棄。當(dāng)從機的SM2=0時,則無論是地址幀還是數(shù)據(jù)幀均接手,并置位RI=1,向CPU請求中斷,將該幀內(nèi)容裝入SBUF中。多機通訊的過程1、置全部從機的SM2=1,處于只接收地址幀的狀態(tài);2、主機首先發(fā)送呼叫地址幀信息,將其中的TB8設(shè)置為1,以表示發(fā)送的是呼叫地址幀;3、所有從機接收到呼叫地址幀后,各自將接收到的主機呼叫的地址幀與自身的地址相比較;若比較結(jié)果相等,則為需要尋址
4、的從機,清除SM2,準(zhǔn)備接收主機發(fā)送的數(shù)據(jù)幀,直到全部的數(shù)據(jù)傳輸完畢;多機通訊的過程4、若比較不相等,則為非尋址的從機,仍然維持SM2=1不變,對其后發(fā)送過來的數(shù)據(jù)不予以理睬,即接收到的數(shù)據(jù)幀內(nèi)容不裝入SUBF中,不置位RI=0,不會產(chǎn)生中斷請求指導(dǎo)正確的尋址為止。5、主機發(fā)送完呼叫地址幀之后,即?發(fā)送一連串?dāng)?shù)據(jù)幀,其中的TB8=0,以示為數(shù)據(jù)幀。6、當(dāng)主機尋呼其他從機時,通過分析得知在尋呼其他從機后,維持其SM2=1,對其后主機發(fā)送的數(shù)據(jù)不予以理睬。多機通訊協(xié)議1、主從多機通訊系統(tǒng),允許配置255臺從機,各從機的地址00H~FEH.2、約定地址FFH為全部
5、從機的控制命令,命令各從機恢復(fù)SM2=1狀態(tài),準(zhǔn)備接收主機的地址呼叫。3、主機和從機的聯(lián)絡(luò)過程約定:主機首先發(fā)送地址呼叫幀,被尋址的從機回送本機地址給主機,經(jīng)驗證地址相等后再向被尋址的從機發(fā)送命令字,被尋址的從機根據(jù)命令字要求回送本機數(shù)據(jù)及狀態(tài)多機通訊協(xié)議4、約定主機發(fā)送的命令字為:01H:要求從機發(fā)送數(shù)據(jù)塊其他:非法命令5、從機的數(shù)據(jù)格式約定:D7D6D5D4D3D2D1D0ERRCON1CON20XXXX定義:若ERR=1,從機接收到非法命令,0為正常若CON1=1,從機狀態(tài)1異常,0為正常若CON2=1,從機狀態(tài)2異常,0為正常D7D6D5D4D3D2
6、D1D0Xxxxxxxx高4位數(shù)據(jù)主機程序:呼叫從機號在60H中數(shù)據(jù)塊首地址為30H波特率為2400H禁止串口中斷FLAGBIT00HSLADDBYTE60HORG0000HAJMPMAINORG0030HMAIN:MOVSP,#70HMOVTMOD,#20H;T1方式2,8位自動重裝載MOVPCON,#80HMOVSCON,#D8H;SM0SM1SM2RENTB8RB8TIRI;11011000;SM2對主機沒有要求MOVTH1,#0F3HMOVTL1,#0F3H;波特率為2400HCLRFLAGSETBTR1NEXTLP:MOVR0,#30HMOVR6,
7、#10HLOOP:MOVR7,#02HCALLAddRJBCFLAG,NEXTSCALLRDDATAAJMPNEXTANEXTS:INCR0INCR0NEXTA:INCSLADDDJNZR6,LOOPAJMPNEXTLPADDR:MOVA,SLADD;取從機號MOVSBUF,A;發(fā)送從機號JNBTI,$;等待發(fā)送結(jié)束CLRTI;清TI標(biāo)志JNBRI,$;等待從機回答本機地址CLRRI;清RI標(biāo)志MOVA,SUBF;讀取從機回答地址CJNEA,SLADD,RETN;地址不符,返回CLRTB8;地址相等,清TB8準(zhǔn)備發(fā)送命令RETRETN:SETBFLAGRET
8、RDDATA:MOVA,#01HMOVSBUF,AJ