您的位置:網(wǎng)站首頁 > 電器維修資料網(wǎng) > 正文 >
基于AT89S51的多機通信
★★★★★【文章導(dǎo)讀】:基于AT89S51的多機通信具體內(nèi)容是:多個at89s51單片機可利用串行口進行多機通信,經(jīng)常采用的是如下圖所示的主從式結(jié)構(gòu)。該多機系統(tǒng)中有1個主機(at89s51單片機或其他具有串行接口的微計算機)和3個(也可以為多個)at89s51單片機組成的從機系統(tǒng),如下圖…
來源: 日期:2013-12-18 14:01:01 人氣:標(biāo)簽:
多個at89s51單片機可利用串行口進行多機通信,經(jīng)常采用的是如下圖所示的主從式結(jié)構(gòu)。該多機系統(tǒng)中有1個主機(at89s51單片機或其他具有串行接口的微計算機)和3個(也可以為多個)at89s51單片機組成的從機系統(tǒng),如下圖所示。主機的rxd與所有從機的txd端相連,txd與所有從機的rxd端相連。從機的地址分別為01h、02h和03h。
所謂主從式是指在多個單片機組成的系統(tǒng)中,只有一個主機,其余全是從機。主機發(fā)送的信息可以被所有從機接收,任何一個從機發(fā)送的信息只能由主機接收。從機和從機之間不能進行相互的直接通信,從機和從機之間的通信只能經(jīng)主機才能實現(xiàn)。
下面介紹多機通信的工作原理。
要保證主機與所選擇的從機實現(xiàn)可靠通信,必須保證串行口具有識別功能。串行口控制寄存器scon中的sm2位就是為滿足這一條件而設(shè)置的多機通信控制位。其工作原理是在串行口以方式2(或方式3)接收時,若sm2=1,則表示進行多機通信,這時可能出現(xiàn)以下兩種情況:
(1)從機接收主機發(fā)來的第9位數(shù)據(jù)rb8=1時,前8位數(shù)據(jù)才裝入sbuf,并置中斷標(biāo)志ri=1,向cpu發(fā)出中斷請求。在中斷服務(wù)程序中,從機把接收的sbuf中的數(shù)據(jù)存人數(shù)據(jù)緩沖區(qū)中。
(2)如果從機接收主機發(fā)來的第9位數(shù)據(jù)rb8=o時,則不產(chǎn)生中斷標(biāo)志ri=1,不引起中斷,從機不接收主機發(fā)來的數(shù)據(jù)。
若sm2=0,則接收的第9位數(shù)據(jù)不論是o還是1,從機都將產(chǎn)生ri=1中斷標(biāo)志,接收的數(shù)據(jù)裝入sbuf中。
應(yīng)用at89s51單片機串行口的這一特性,可實現(xiàn)at89s51單片機的多機通信。多機通信的工作過程如下:
(1)各從機初始化程序允許從機的串行口中斷,將串行口編程為方式2或方式3接收,即9位異步通信方式,且sm2和ren位置l,使從機只處于多機通信且接收地址幀的狀態(tài)。
(2)在主機和某個從機通信之前,先將從機地址(即準(zhǔn)備接收數(shù)據(jù)的從機)發(fā)送給各個從機,接著才傳送數(shù)據(jù)(或命令),主機發(fā)出的地址幀信息的第9位為1,數(shù)據(jù)(或命令)幀的第9位為0。當(dāng)主機向各從機發(fā)送地址幀時,各從機的串行口接收到的第9位信息rb8為1,且由于各從機的sm2=1,則中斷標(biāo)志位ri置1,各從機響應(yīng)中斷。在中斷服務(wù)子程序中,各從機判斷主機送來的地址是否和本機地址相符合,若為本機地址,則該從機sm2位清0,準(zhǔn)備接收主機的數(shù)據(jù)或命令;若地址不相符,則保持sm2=1狀態(tài)。
(3)接著主機發(fā)送數(shù)據(jù)(或命令)幀,數(shù)據(jù)幀的第9位為0。此時各從機接收的rb8=0,只有與前面地址相符合的從機系統(tǒng)(即sm2位已清0的從機)才能激活中斷標(biāo)志位ri,從而進入中斷服務(wù)程序,在中斷服務(wù)程序中接收主機發(fā)來的數(shù)據(jù)(或命令);與主機發(fā)來的地址不相符的從機,由于sm2保持為1,又rb8=0,因此不能激活中斷標(biāo)志ri,也就不能接收主機發(fā)來的數(shù)據(jù)幀,從而保證了主機與從機間通信的正確性。此時主機與建立聯(lián)系的從機已經(jīng)設(shè)置為單機通信模式,即在整個通信中,通信的雙方都要保持發(fā)送數(shù)據(jù)的第9位(即tb8位)為0,防止其他的從機誤接收數(shù)據(jù)。
(4)結(jié)束數(shù)據(jù)通信并為下一次的多機通信做好準(zhǔn)備。在多機通信系統(tǒng)中每個從機都被賦予唯一的一個地址。例如,圖7-16中三個從機的地址可設(shè)為:oih、02h、03h,還要預(yù)留1~2個“廣播地址”,它是所有從機共有的地址,例如將“廣播地址”設(shè)為ooh。當(dāng)主機與從機的數(shù)據(jù)通信結(jié)束后,一定要將從機再設(shè)置為多機通信模式,以便進行下一次的多機通信。這時要求與主機正在進行數(shù)據(jù)傳輸?shù)膹臋C必須隨時注意,一旦接收的數(shù)據(jù)第9位(rb8)為l,說明主機傳送的不再是數(shù)據(jù),而是地址,這個地址就有可能是“廣播地址”。當(dāng)收到“廣播地址”后,便將從機的通信模式再設(shè)置成多機模式,為下一次的多機通信做好準(zhǔn)備。
【看看這篇文章在百度的收錄情況】
相關(guān)文章
- 上一篇: ARM寄存器基本概念
- 下一篇: 基于AT89S51的波特率制定方法