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