![單片機(jī)第七章串行通信_(tái)第1頁(yè)](http://file4.renrendoc.com/view/d24492bdf06bd8c3d967e81eb93f54e6/d24492bdf06bd8c3d967e81eb93f54e61.gif)
![單片機(jī)第七章串行通信_(tái)第2頁(yè)](http://file4.renrendoc.com/view/d24492bdf06bd8c3d967e81eb93f54e6/d24492bdf06bd8c3d967e81eb93f54e62.gif)
![單片機(jī)第七章串行通信_(tái)第3頁(yè)](http://file4.renrendoc.com/view/d24492bdf06bd8c3d967e81eb93f54e6/d24492bdf06bd8c3d967e81eb93f54e63.gif)
![單片機(jī)第七章串行通信_(tái)第4頁(yè)](http://file4.renrendoc.com/view/d24492bdf06bd8c3d967e81eb93f54e6/d24492bdf06bd8c3d967e81eb93f54e64.gif)
![單片機(jī)第七章串行通信_(tái)第5頁(yè)](http://file4.renrendoc.com/view/d24492bdf06bd8c3d967e81eb93f54e6/d24492bdf06bd8c3d967e81eb93f54e65.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
單片機(jī)第七章串行通信第一頁(yè),共六十七頁(yè),2022年,8月28日7.1串行通信的基本知識(shí)1、通信方式 1)并行通信各數(shù)據(jù)位同時(shí)傳送,其傳送速度快、效率高。但并行數(shù)據(jù)傳送有多少數(shù)據(jù)位就需要多少根數(shù)據(jù)線,成本高,比較適合近距離通信。2)串行通信則是數(shù)據(jù)傳送按位順序進(jìn)行,最少只需一根傳輸線即可,成本低、速度慢。計(jì)算機(jī)與遠(yuǎn)程終端或終端與終端之間的數(shù)據(jù)傳送通常部是串行的。圖7-1所示為兩種通信方式示意圖。第二頁(yè),共六十七頁(yè),2022年,8月28日(1)并行通信(2)串行通信第三頁(yè),共六十七頁(yè),2022年,8月28日 2、異步通信與同步通信方式
異步通信是指通信的發(fā)送與接收設(shè)備使用各自的時(shí)鐘控制數(shù)據(jù)的發(fā)送和接收過程。為使雙方的收發(fā)協(xié)調(diào),要求發(fā)送和接收設(shè)備的時(shí)鐘盡可能一致。
同步通信時(shí)要建立發(fā)送方時(shí)鐘對(duì)接收方時(shí)鐘的直接控制,使雙方達(dá)到完全同步。此時(shí),傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時(shí)傳送的字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。發(fā)送方對(duì)接收方的同步可以通過這兩種方法實(shí)現(xiàn)。
第四頁(yè),共六十七頁(yè),2022年,8月28日異步通信是以字符(構(gòu)成的幀)為單位進(jìn)行傳輸,字符與字符之間的間隙(時(shí)間間隔)是任意的,但每個(gè)字符中的各位是以固定的時(shí)間傳送的,即字符之間是異步的(字符之間不一定有“位間隔”的整數(shù)倍的關(guān)系),但同一字符內(nèi)的各位是同步的(各位之間的距離均為“位間隔”的整數(shù)倍)。第五頁(yè),共六十七頁(yè),2022年,8月28日異步傳送的字符幀格式如圖所示。一幀字符格式包括1位起始位、5~8位數(shù)據(jù)位、奇偶校驗(yàn)位和1位停止位。起始位為0,用于表示一個(gè)字符的開始。起始位之后傳送數(shù)據(jù)位。在數(shù)據(jù)位中,低位在前(左),高位在后(右)。數(shù)據(jù)位可以是5、6、7或8位。奇偶校驗(yàn)位用于對(duì)字符傳送作正確性檢查。有3種可能供選擇:奇校驗(yàn)、偶校驗(yàn)和無(wú)校驗(yàn)。由用戶根據(jù)需要選定。停止位在最后,用以標(biāo)志一個(gè)字符傳送的結(jié)束,它對(duì)應(yīng)于1狀態(tài)。停止位可能是1、1.5或2位,在實(shí)際使用根據(jù)需要確定。異步傳送可以是連續(xù)的,也可以是斷續(xù)的,且間隔時(shí)間可任意改變,間隔用空閑位1填充。在89S51單片機(jī)系統(tǒng)中,第九位數(shù)據(jù)D8可以用作奇偶校驗(yàn)位,也可以用作地址/數(shù)據(jù)幀標(biāo)志。第六頁(yè),共六十七頁(yè),2022年,8月28日?qǐng)D7-2串行異步通信字符幀格式異步通信有固定的字符幀,通信雙方只需按約定的幀格式進(jìn)行發(fā)送和接收數(shù)據(jù),硬件結(jié)構(gòu)比較簡(jiǎn)單。當(dāng)平時(shí)不發(fā)送數(shù)據(jù)時(shí),發(fā)送端應(yīng)保持為1。數(shù)據(jù)接收端將不斷檢測(cè)接收的數(shù)據(jù),若連續(xù)檢測(cè)到1之后檢測(cè)到0,則為新發(fā)送來(lái)的數(shù)據(jù),應(yīng)立即接收。在同步串行通信中,每一數(shù)據(jù)塊開頭時(shí)發(fā)送1至2個(gè)同步字符,使發(fā)送方與接收方保持同步。數(shù)據(jù)塊的各個(gè)字符間去掉了起始位和停止位,其通信速度比較高,但其硬件結(jié)構(gòu)也比較復(fù)雜。同步通信時(shí),如果發(fā)送的數(shù)據(jù)塊之間有間隔時(shí)間,則發(fā)送同步字符填充第七頁(yè),共六十七頁(yè),2022年,8月28日 2.數(shù)據(jù)傳送方向
1、單工單工是指數(shù)據(jù)傳輸僅能沿一個(gè)方向,不能實(shí)現(xiàn)反向傳輸。2、半雙工半雙工是指數(shù)據(jù)傳輸可以沿兩個(gè)方向,但需要分時(shí)進(jìn)行。3、全雙工全雙工是指數(shù)據(jù)可以同時(shí)進(jìn)行雙向傳輸。
第八頁(yè),共六十七頁(yè),2022年,8月28日4、串行通信的傳送速率比特率是每秒鐘傳輸二進(jìn)制代碼的位數(shù),單位是:位/秒(bps)。如每秒鐘傳送240個(gè)字符,而每個(gè)字符格式包含10位(1個(gè)起始位、1個(gè)停止位、8個(gè)數(shù)據(jù)位),這時(shí)的比特率為:
10位×240個(gè)/秒=2400bps波特率表示每秒鐘調(diào)制信號(hào)變化的次數(shù),單位是:波特(Baud)。)。波特率和比特率不總是相同的,對(duì)于將數(shù)字信號(hào)1或0直接用兩種不同電壓表示的所謂基帶傳輸,比特率和波特率是相同的。所以,我們也經(jīng)常用波特率表示數(shù)據(jù)的傳輸速率。第九頁(yè),共六十七頁(yè),2022年,8月28日在串行通信中,數(shù)據(jù)位的發(fā)送和接收分別由發(fā)送時(shí)鐘脈沖和接收時(shí)鐘脈沖進(jìn)行定時(shí)控制。時(shí)鐘頻率高,則波特率也高,通信速度就快;反之,時(shí)鐘頻率低,則波特率也低,通信速度就慢。第十頁(yè),共六十七頁(yè),2022年,8月28日7.2MCS-51單片機(jī)串行口的結(jié)構(gòu)與工作原理 1、串行口的結(jié)構(gòu)
MCS-51單片機(jī)內(nèi)部的串行接口是全雙工的,即它能同時(shí)發(fā)送和接收數(shù)據(jù)。發(fā)送緩沖器只能寫入不能讀出,接收緩沖器只能讀出不能寫入。串行口還有接收緩沖作用,即從接收寄存器中讀出前一個(gè)已收到的字節(jié)之前就能開始接收第二字節(jié)。兩個(gè)串行口數(shù)據(jù)緩沖器(實(shí)際上是兩個(gè)寄存器)通過特殊功能寄存器SBUF來(lái)訪問。寫入SBUF的數(shù)據(jù)儲(chǔ)存在發(fā)送緩沖器,用于串行發(fā)送;從SBUF讀出的數(shù)據(jù)來(lái)自接收緩沖器。兩個(gè)緩沖器共用一個(gè)地址99H(特殊功能寄存器SBUF的地址)。
第十一頁(yè),共六十七頁(yè),2022年,8月28日
在串行口發(fā)送數(shù)據(jù)時(shí),將CPU送來(lái)的并行數(shù)據(jù)轉(zhuǎn)換成一定格式的串行數(shù)據(jù),從引腳TXD(P3.1)上按規(guī)定的波特率逐位輸出;接收數(shù)據(jù)時(shí),外部信號(hào)通過引腳RXD(P3.0)輸入,再將發(fā)送來(lái)的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù),等待CPU讀入。它的幀格式有8位、10位和11位,可以設(shè)置為固定波特率和可變波特率,給使用者帶來(lái)很大的靈活性。在單片機(jī)中,主要適用異步傳送方式
第十二頁(yè),共六十七頁(yè),2022年,8月28日?qǐng)D7-3串行口結(jié)構(gòu)框圖第十三頁(yè),共六十七頁(yè),2022年,8月28日
7.3串行口控制寄存器SCON和電源控制寄存器PCON 1、串行口控制寄存器SCON
串行口控制寄存器SCON決定串行口通信工作方式,控制數(shù)據(jù)的接收和發(fā)送,并標(biāo)示串行口的工作狀態(tài)等。其位格式為:第十四頁(yè),共六十七頁(yè),2022年,8月28日(1)SM0、SM1:串行口工作方式控制位,兩位對(duì)應(yīng)四種工作方式,如表7-1所示(fosc是晶振頻率)。第十五頁(yè),共六十七頁(yè),2022年,8月28日(2)SM2——多機(jī)通信控制位因多機(jī)通信是在方式2和方式3下進(jìn)行,因此SM2位主要用于方式2和方式3SM2=1RB8=1將接收到的前8位數(shù)據(jù)送SBUF,并置位RI產(chǎn)生中斷請(qǐng)求;SM2=1RB8=0將接收到的前8位數(shù)據(jù)丟棄。SM2=0RB8=1都將前8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷請(qǐng)求。SM2=0RB8=0都將前8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷請(qǐng)求。當(dāng)串行口以方式2或方式3接收時(shí),如果SM2=1,則只有當(dāng)接收到的第九位數(shù)據(jù)(RB8)為1,才將接收到的前8位數(shù)據(jù)送SBUF,并置位RI產(chǎn)生中斷請(qǐng)求;否則,將接收到的前8位數(shù)據(jù)丟棄。而當(dāng)SM2=0,則不論第九位數(shù)據(jù)為0還是1,都將前8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷請(qǐng)求。在方式1時(shí),當(dāng)處于接收時(shí),若SM2=1,則只有收到有效的停止位時(shí),RI才置1。在方式0時(shí),SM2必須為0。第十六頁(yè),共六十七頁(yè),2022年,8月28日(3)REN——允許串行口接收位REN=0,禁止串行口接收數(shù)據(jù)REN=1,允許串行口接收數(shù)據(jù)該位由軟件置位或復(fù)位。(4)TB8——發(fā)送數(shù)據(jù)第9位在方式2和方式3時(shí),TB8的內(nèi)容是要發(fā)送的第9位數(shù)據(jù)。在雙機(jī)通信時(shí),TB8一般作為奇偶校驗(yàn)位使用;在多機(jī)通信中,以TB8位的狀態(tài)表示主機(jī)發(fā)送的是地址幀還是數(shù)據(jù)幀,且一般約定:TB8=0為數(shù)據(jù)幀,TB8=1為地址幀。該位由軟件置位或復(fù)位。(5)RB8——接收數(shù)據(jù)位8在方式2或方式3時(shí),RB8存放接收到的第9位數(shù)據(jù),代表著接收數(shù)據(jù)的某種特征(與TB8的功能類似),故應(yīng)根據(jù)其狀態(tài)對(duì)接收數(shù)據(jù)進(jìn)行操作。第十七頁(yè),共六十七頁(yè),2022年,8月28日6)TI——發(fā)送中斷標(biāo)志當(dāng)方式0時(shí),發(fā)送完第8位數(shù)據(jù)后,該位由硬件置位。在其它方式下,于發(fā)送停止位之前,該位由硬件置位。因此TI=1,表示幀發(fā)送結(jié)束。其狀態(tài)既可供軟件查詢使用,也可請(qǐng)求中斷。TI位須由軟件清0。(7)RI—接收中斷標(biāo)志當(dāng)方式0時(shí),接收完第8位數(shù)據(jù)后,該位由硬件置位。在其它方式下,當(dāng)接收到停止位時(shí),該位由硬件置位。因此RI=1,表示幀接收結(jié)束。其狀態(tài)既可供軟件查詢使用,也可以請(qǐng)求中斷。RI須由軟件清0。第十八頁(yè),共六十七頁(yè),2022年,8月28日 2、電源控制寄存器PCON
電源控制寄存器PCON中只有一位SMOD與串行口工作有關(guān),它的位格式為:
SMOD:波特率倍增位。串行口工作在方式1、方式2、方式3時(shí),若SMOD=1,則波特率提高一倍;若SMOD=0,則波特率不提高一倍。單片機(jī)復(fù)位時(shí),SMOD=0。第十九頁(yè),共六十七頁(yè),2022年,8月28日 7.4串行口工作方式89S51/S52單片機(jī)中的異步通信串行接口能方便地與其他計(jì)算機(jī)或傳送信息的外圍設(shè)備(如串行打印機(jī)、CPU終端等)實(shí)現(xiàn)雙機(jī)、多機(jī)通信。單片機(jī)的串行口共有4種工作方式。工作方式0移位寄存器方式,可以通過外接移位寄存器芯片實(shí)現(xiàn)擴(kuò)展并行I/O接口的功能。工作方式1、工作方式2、工作方式3都是異步通信方式。工作方式1是8位異步通信接口。一幀信息由10位組成,用于雙機(jī)串行通信。工作方式2、工作方式3都是9位異步通信接口、一幀信息中包括9位數(shù)據(jù),1位起始位,1位停止位,工作方式2、工作方式3的區(qū)別在于波特率不同,主要用于多機(jī)通信,也可用于雙機(jī)通信。
第二十頁(yè),共六十七頁(yè),2022年,8月28日7.4.1工作方式0在方式0下,串行口是作為同步移位寄存器使用。主要用于擴(kuò)展并行I/O口。波特率固定為fosc/12。這時(shí)數(shù)據(jù)由RXD(P3.0)端輸入和輸出,由TXD(P3.1)端提供移位時(shí)鐘脈沖。移位數(shù)據(jù)的發(fā)送和接收以8位為一幀,低位在前高位在后,不設(shè)起始位和停止位。
1.數(shù)據(jù)發(fā)送與接收在使用方式0進(jìn)行數(shù)據(jù)的發(fā)送時(shí),CPU將一個(gè)字節(jié)寫入發(fā)送緩沖器SBUF,TXD端輸出同步時(shí)鐘信號(hào),串行口即以fosc/12的波特率將8位數(shù)據(jù)從RXD口輸出(低位在前,高位在后),發(fā)送完后置位中斷標(biāo)志TI,在繼續(xù)發(fā)送之前須由軟件將中斷標(biāo)志位清0。第二十一頁(yè),共六十七頁(yè),2022年,8月28日在使用方式0進(jìn)行數(shù)據(jù)的接收時(shí),數(shù)據(jù)從RXD端輸入,TXD端輸出同步時(shí)鐘信號(hào),接收緩沖器以fosc/12的波特率接收數(shù)據(jù),當(dāng)接收緩沖器接收完8位數(shù)據(jù)后置位中斷標(biāo)志RI,在繼續(xù)接收之前須由軟件將中斷標(biāo)志位清0。REN位用于允許接收的控制,REN=0,禁止接收數(shù)據(jù);REN=l,允許接收數(shù)據(jù)。在方式0下不使用串行口控制寄存器SCON中的TB8位和RB8位,即發(fā)送或接收數(shù)據(jù)的第9位,且SM2位必須為0。第二十二頁(yè),共六十七頁(yè),2022年,8月28日
方式0接收和發(fā)送電路第二十三頁(yè),共六十七頁(yè),2022年,8月28日波特率的計(jì)算在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對(duì)單片機(jī)串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率來(lái)決定。串行口的四種工作方式對(duì)應(yīng)三種波特率。由于輸入的移位時(shí)鐘的來(lái)源不同,所以,各種方式的波特率計(jì)算公式也不相同。方式0時(shí),移位操作的波特率是固定的,為fosc/12,即一個(gè)機(jī)器周期進(jìn)行一次移位,發(fā)送或接收一位數(shù)據(jù)。如fosc=12MHz,則波特率為1M(bps),即1μs移位一次。方式0下波特率不受SMOD位的影響。第二十四頁(yè),共六十七頁(yè),2022年,8月28日7.4.2工作方式1方式l是10位為一幀的串行異步通信方式。共包括1個(gè)起始位,8個(gè)數(shù)據(jù)位和l個(gè)停止位。外部數(shù)據(jù)從引腳RXD輸入,送入到接收緩沖器,需要發(fā)送的數(shù)據(jù)經(jīng)過引腳TXD輸出。第二十五頁(yè),共六十七頁(yè),2022年,8月28日方式1輸出1.數(shù)據(jù)發(fā)送與接收方式l的數(shù)據(jù)發(fā)送將數(shù)據(jù)寫入發(fā)送緩沖器SBUF,隨后在串行口由硬件自動(dòng)加入起始位和停止位,構(gòu)成一個(gè)完整的幀格式,然后在移位脈沖的作用下,由TXD端串行輸出。一個(gè)字符幀發(fā)送完后,將SCON寄存器的TI置l。在中斷方式下將申請(qǐng)中斷,通知CPU可以發(fā)送下一個(gè)字符幀。第二十六頁(yè),共六十七頁(yè),2022年,8月28日接收數(shù)據(jù)時(shí),SCON的REN位應(yīng)處于允許接收數(shù)據(jù)狀態(tài)下。串行口采樣引腳RXD端,當(dāng)采樣到從l到0的狀態(tài)跳變時(shí),就認(rèn)定是接收到起始位。隨后在移位脈沖的控制下,把接收到的數(shù)據(jù)位移入接收緩沖器SBUF中。直到停止位到來(lái)之后將停止位送入到RB8中,并置位中斷標(biāo)志位RI,在中斷方式下將申請(qǐng)中斷,通知CPU從接收緩沖器SBUF取走接收到的一個(gè)字符。不管中斷方式還是查詢方式,硬件都不會(huì)自動(dòng)清除RI和TI中斷標(biāo)志,須由用戶用軟件清0。方式1輸入第二十七頁(yè),共六十七頁(yè),2022年,8月28日 2、方式2的波特率 工作方式2時(shí),移位脈沖由振蕩頻率fosc的第二節(jié)拍P2時(shí)鐘(即fosc/2)給出,所以,方式2波特率取決于PCON中的SMOD位的值,當(dāng)SMOD=0時(shí),波特率為fosc的1/64;當(dāng)SMOD=1時(shí),波特率為fosc的1/32,用公式表示為;工作方式2波特率=(2SMOD/64)×fosc第二十八頁(yè),共六十七頁(yè),2022年,8月28日2.波特率方式l的波特率則是可變的,以定時(shí)器T1作為波特率發(fā)生器使用,其波特率值由定時(shí)器1的計(jì)數(shù)溢出率來(lái)決定,其公式為:串行口方式1的波特率=×定時(shí)器T1的溢出率其中SMOD為電源控制寄存器PCON的最高位,是串行口波特率的倍增位,當(dāng)SMOD=1時(shí),串行口波特率加倍。定時(shí)器T1的溢出率取決于計(jì)數(shù)速率和定時(shí)器的初值。計(jì)數(shù)速率與特殊功能寄存器TMOD中的C/位的狀態(tài)有關(guān)。當(dāng)C/=0時(shí),T1作為定時(shí)器,計(jì)數(shù)速率=fosc/12,當(dāng)C/=1時(shí),T1作為計(jì)數(shù)器使用,計(jì)數(shù)速率取決于外部輸入脈沖時(shí)鐘頻率。第二十九頁(yè),共六十七頁(yè),2022年,8月28日當(dāng)定時(shí)器T1作波特率發(fā)生器使用時(shí),通常選用工作方式2,即8位自動(dòng)重加載方式,方便為定時(shí)器T1賦初值。在方式2下,TL1作為計(jì)數(shù)器使用,而預(yù)置初值放在TH1中,設(shè)計(jì)數(shù)初值為X,則每過(256-X)個(gè)機(jī)器周期,定時(shí)器T1就產(chǎn)生一次溢出。此時(shí)應(yīng)禁止T1中斷。則計(jì)數(shù)溢出周期為:
×(256一X)溢出率為溢出周期的倒數(shù),則波特率為:波特率=×實(shí)際使用時(shí),需要先確定波特率,再根據(jù)波特率計(jì)算定時(shí)器T1的計(jì)數(shù)初值,然后進(jìn)行定時(shí)器的初始化。根據(jù)上述波特率計(jì)算公式,得出計(jì)數(shù)初值的計(jì)算公式為X=256-第三十頁(yè),共六十七頁(yè),2022年,8月28日選擇定時(shí)器T1工作在方式2下,是因?yàn)榉绞?具有自動(dòng)重載入功能,可避免通過程序反復(fù)裝入初值所引起的定時(shí)誤差。使波特率更加穩(wěn)定,也更方便。表7-5列出了在選擇定時(shí)器T1作為波特率發(fā)生器使用時(shí),各種常用的波特率以及相應(yīng)的控制位和時(shí)間常數(shù)表7-5定時(shí)器T1的常用波特率C/波特率/bpsfosc/MHzSMOD定時(shí)器T1工作方式初值1920011.059102FDH960011.059002FDH480011.059002FAH240011.059002F4H120011.059002E8H60011.059002D0H30011.059002A0H15011.05900240H第三十一頁(yè),共六十七頁(yè),2022年,8月28日7.4.3工作方式2工作方式2是11位為一字符幀的串行異步通信方式,幀格式包括1個(gè)起始位、9個(gè)數(shù)據(jù)位和1個(gè)停止位。在方式2下,字符還是8個(gè)數(shù)據(jù)位。而第9數(shù)據(jù)位既可作奇偶校驗(yàn)位使用,也可作控制位使用。發(fā)送之前應(yīng)先在串行口控制寄存器SCON的TB8位中準(zhǔn)備好,其波特率與SMOD位有關(guān)。第三十二頁(yè),共六十七頁(yè),2022年,8月28日當(dāng)將第9位數(shù)據(jù)寫入TB8之后,向SBUF寫入字符幀的8個(gè)數(shù)據(jù)位,啟動(dòng)串行口發(fā)送數(shù)據(jù)。一個(gè)字符幀發(fā)送完畢后,將TI位置1。方式2的接收過程與方式1基本類似,所不同的是在第9位數(shù)據(jù)上,串行口把接收到的8個(gè)數(shù)據(jù)送入SBUF,而把接收的第9數(shù)據(jù)送到RB8。根據(jù)SM2的狀態(tài)和RB8的值確定串行口是否會(huì)置位中斷標(biāo)志位RI。第三十三頁(yè),共六十七頁(yè),2022年,8月28日如果SM2=0,則不論第九位數(shù)據(jù)為0還是1,都將前8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷請(qǐng)求。
如果SM2=1,且接收到的第九位數(shù)據(jù)RB8=1時(shí),將接收到的前8位數(shù)據(jù)送SBUF,并置位RI產(chǎn)生中斷請(qǐng)求。這表示在多機(jī)通信時(shí),接收到的信息為地址幀,此時(shí)將RI置1,接收發(fā)來(lái)的地址幀。
如果SM2=1,且接收到的第九位數(shù)據(jù)RB8=0時(shí),將接收到的前8位數(shù)據(jù)丟棄。這表示接收到的信息為數(shù)據(jù)幀,但不是發(fā)給本機(jī)的,此時(shí)RI不置1。
串行口工作在方式2和方式3時(shí)會(huì)在多機(jī)通信一節(jié)講述。在工作方式2和工作方式3時(shí)的情況如下表7-6所示。SM2=1RB8=1將接收到的前8位數(shù)據(jù)送SBUF,并置位RI產(chǎn)生中斷請(qǐng)求SM2=1RB8=0將接收到的前8位數(shù)據(jù)丟棄。SM2=0RB8=1都將前8位數(shù)據(jù)裝入SBUF中,并置位RI產(chǎn)生中斷請(qǐng)求。SM2=0RB8=0都將前8位數(shù)據(jù)裝入SBUF中,并置位RI產(chǎn)生中斷請(qǐng)求。第三十四頁(yè),共六十七頁(yè),2022年,8月28日2.波特率方式2的波特率是固定的,且有兩種。這與電源控制寄存器PCON中波特率倍增位SMOD的值有關(guān)。當(dāng)SMOD=1時(shí),波特率為晶振頻率的1/32;當(dāng)SMOD=0時(shí),波特率為晶振頻率1/64。用公式表示為:波特率=×7.4.4工作方式3方式3同樣是11位為一幀的串行通信方式,其通信過程與方式2完全相同,所不同的僅在于波特率。方式2的波特率只有固定的兩種,而方式3的波特率則可由用戶根據(jù)需要設(shè)定。其設(shè)定方法與方式l是一樣的,即通過設(shè)置定時(shí)器T1的初值和波特率倍增位SMOD來(lái)設(shè)定波特率。第三十五頁(yè),共六十七頁(yè),2022年,8月28日7.5串行口應(yīng)用舉例【例7.1】設(shè)計(jì)一個(gè)發(fā)送程序,將片內(nèi)RAM中50H~5FH中的數(shù)據(jù)串行發(fā)送,串行口設(shè)定為方式2狀態(tài),TB8作奇偶校驗(yàn)位。在數(shù)據(jù)寫入發(fā)送緩沖器之前,先將數(shù)據(jù)的奇偶位P寫入TB8,這時(shí)第9位數(shù)據(jù)作奇偶校驗(yàn)用。程序清單如下TRT:MOVSCON,#80H;方式2設(shè)定MOVPCON,#80H;取波特率為fosc/32MOVR0,#50HMOVR7,#10H;數(shù)據(jù)長(zhǎng)度10HLOOP:MOVA,@R0;取數(shù)據(jù)送AMOVC,PSW.0;MOVTB8,CMOVSBUF,A;數(shù)據(jù)送SBUF,啟動(dòng)發(fā)送WAIT:JBCTI,CONT;判斷發(fā)送中斷標(biāo)志SJMPWAITCONT:INCR0DJNZR7,LOOPRET第三十六頁(yè),共六十七頁(yè),2022年,8月28日【例7.2】設(shè)計(jì)一個(gè)接收程序,將接收的16個(gè)字節(jié)數(shù)據(jù)送入片內(nèi)RAM中50H~5FH單元中。設(shè)串行口方式3狀態(tài)工作,波特率為2400。定時(shí)器/計(jì)數(shù)器1作波特率發(fā)生器時(shí),SMOD=0,計(jì)數(shù)常數(shù)為0F4H。程序清單如下:RVE:MOVTMOD,#20H;T1編程為方式2定時(shí)狀態(tài)MOVTH1,#0F4H;計(jì)數(shù)常數(shù)送T1MOVT11,#0F4HSETBTR1;啟動(dòng)T1MOVR0,#50HMOVR7,#10H;數(shù)據(jù)長(zhǎng)度lOH-R7MOVSCON,#0D0H;串行口編程方式3接收MOVPCON,#00H;置SMOD=0WAIT:JBCRI,PRI;等待接收到數(shù)據(jù)SJMPWAIT第三十七頁(yè),共六十七頁(yè),2022年,8月28日PRI:MOVA,SBUF;奇偶校驗(yàn)判P=RB8?JNBPSW.0,PNPJNBRB8,PERSJMPRIGHTPNP:JBRB8,PERRIGHT:MOV@R0,A;數(shù)據(jù)送緩沖器INCR0DJNZR7,WAIT;判斷數(shù)據(jù)塊接收完否?CLRPSW.5;正確接收完16個(gè)字節(jié)置標(biāo)志位RET第三十八頁(yè),共六十七頁(yè),2022年,8月28日
串行通信實(shí)例
有兩臺(tái)8031單片機(jī)相距很近,直接將它們的串行口相連,1#機(jī)的TXD接2#機(jī)的RXD,2#機(jī)的TXD接1#機(jī)的RXD,二機(jī)的GND相連。二機(jī)的晶振頻率均為11.0592MHZ,通信的波特率為4800bps?,F(xiàn)將第一臺(tái)8031單片機(jī)片內(nèi)RAM40H~5FH單元內(nèi)的數(shù)據(jù),串行發(fā)送到第二臺(tái)8031單片機(jī)片內(nèi)RAM60H~7FH單元中。第三十九頁(yè),共六十七頁(yè),2022年,8月28日
發(fā)送與接收的參考程序如下:1#單片機(jī)發(fā)送程序:
ORG1000H TX:
MOVTMOD,#02H
MOVTH1,#0FAH
MOVTL1,#0FAH MOVSCON,#80H ;設(shè)定工作方式2
MOVPCON,#00H; 波特率為fosc/64
SETBTR0 第四十頁(yè),共六十七頁(yè),2022年,8月28日
MOVR0,#40H ;設(shè)發(fā)送數(shù)據(jù)的地址指針
MOVR2,#20H ;設(shè)發(fā)送數(shù)據(jù)長(zhǎng)度LOOP: MOVA,@R0 ;取發(fā)送數(shù)據(jù)送A
MOVC,PSW.0
MOVTB8,C ;奇偶位送TB8
MOVSBUF,A ;啟動(dòng)發(fā)送WAIT: JBCTI,LL1
;判發(fā)送中斷標(biāo)志
SJMPWAIT
第四十一頁(yè),共六十七頁(yè),2022年,8月28日LL1:
INCR0
DJNZR2,LOOP
RET2#單片機(jī)接收程序:
ORG1000HRX:
MOVTMOD,#02H
MOVTH1,#0FAH
MOVTL1,#0FAH
MOVSCON,#90H ;設(shè)定工作方式2,并允許接收第四十二頁(yè),共六十七頁(yè),2022年,8月28日
MOVPCON,#00H
SETBTR0
MOVR0,#60H
MOVR2,#20H
LOOP: JBCRI,MM1 ;等待接收數(shù)據(jù)
SJMPLOOP
MM1: MOVA,SBUF ;讀入一幀數(shù)據(jù)
JBPSW.0,PP1 ;判接收端奇偶
JBRB8,ERROR ;判發(fā)送端奇偶
SJMPRIGHT
第四十三頁(yè),共六十七頁(yè),2022年,8月28日PP1:
JNBRB8,ERROR ;接收出錯(cuò)RIGHT: MOV@R0,A ;接收正確
INCR0
DJNZR2,LOOP
ERROR: SETBPSW.5 ;置出錯(cuò)標(biāo)志
RET第四十四頁(yè),共六十七頁(yè),2022年,8月28日7.6多機(jī)通信單片機(jī)的多機(jī)通信是指一臺(tái)主機(jī)和多臺(tái)從機(jī)之間的通信,其連接如圖7-12所示。89S51/S52單片機(jī)串行口方式2與方式3專門應(yīng)用于多機(jī)通信。主機(jī)發(fā)送的信息可傳送到各個(gè)從機(jī)或指定的從機(jī),而各從機(jī)發(fā)送的信息只能被主機(jī)接收。各從機(jī)應(yīng)當(dāng)編址,以便主機(jī)能按地址尋找從機(jī)。多機(jī)通信主要靠主、從機(jī)之間正確地設(shè)置與判斷多級(jí)通信控制位SM2和發(fā)送、接收到的第9位數(shù)據(jù)。多機(jī)通信時(shí),主機(jī)向從機(jī)發(fā)送的信息分地址和數(shù)據(jù)兩類。以第9數(shù)據(jù)位作區(qū)分標(biāo)志,為0時(shí)表示數(shù)據(jù),為1時(shí)表示地址。多機(jī)通信之前,需要給各個(gè)從機(jī)編址,以方便主機(jī)尋址。第四十五頁(yè),共六十七頁(yè),2022年,8月28日1、硬件連接單片機(jī)構(gòu)成的多機(jī)系統(tǒng)常采用總線型主從式結(jié)構(gòu)。所謂主從式,即在數(shù)個(gè)單片機(jī)中,有一個(gè)是主機(jī),其余的是從機(jī),從機(jī)要服從主機(jī)的調(diào)度、支配。80C31單片機(jī)的串行口方式2和方式3適于這種主從式的通信結(jié)構(gòu)。當(dāng)然采用不同的通信標(biāo)準(zhǔn)時(shí),還需進(jìn)行相應(yīng)的電平轉(zhuǎn)換,有時(shí)還要對(duì)信號(hào)進(jìn)行光電隔離。在實(shí)際的多機(jī)應(yīng)用系統(tǒng)中,常采用RS-485串行標(biāo)準(zhǔn)總線進(jìn)行數(shù)據(jù)傳輸。第四十六頁(yè),共六十七頁(yè),2022年,8月28日通信開始,當(dāng)主機(jī)欲與某個(gè)從機(jī)之間通信時(shí),首先發(fā)送一個(gè)地址幀,主機(jī)發(fā)送時(shí),通過設(shè)置TB8位的狀態(tài)來(lái)表明發(fā)送的是地址還是數(shù)據(jù),當(dāng)TB8=1時(shí),表示地址幀,當(dāng)TB8=0時(shí),表示數(shù)據(jù)幀。而在從機(jī)方面,為了接收信息,初始化時(shí)應(yīng)把SCON的SM2位置l。由于SM2=1,此時(shí)接收到的第9數(shù)據(jù)位(即為主機(jī)發(fā)出的TB8)狀態(tài)為1,即RB8=1,所以各從機(jī)都分別將數(shù)據(jù)送SBUF,并置位RI,發(fā)出中斷請(qǐng)求,通過中斷服務(wù)程序來(lái)判斷主機(jī)發(fā)送的地址與本從機(jī)地址是否相符。若相符,則把該從機(jī)的SM2位清0,以準(zhǔn)備接收其后傳送來(lái)的數(shù)據(jù)。其余從機(jī)由于地址不符,則仍然保持SM2=1狀態(tài)。此后主機(jī)發(fā)送數(shù)據(jù)幀,使TB8=0,雖然各從機(jī)都能接收到,但只有SM2=0的那個(gè)被尋址的從機(jī)才把數(shù)據(jù)送接收緩沖器SBUF。其余各從機(jī)皆因SM2=l和RB8=0,表示接收的信息為主機(jī)發(fā)給其他從機(jī)的數(shù)據(jù),而將數(shù)據(jù)舍棄。這就是多機(jī)通信中主從機(jī)的通信情況。通信只能在主從機(jī)之間進(jìn)行,如若進(jìn)行兩個(gè)從機(jī)之間的通信,需通過主機(jī)作中介才能實(shí)現(xiàn)。第四十七頁(yè),共六十七頁(yè),2022年,8月28日綜上所述,把多機(jī)通信的過程總結(jié)如下:(1)全部主、從機(jī)均初始化為工作方式2或方式3,置位SM2=1,允許串行口中斷。(2)主機(jī)置位TB8=1,發(fā)送要尋址的從機(jī)地址。(3)所有從機(jī)均接收主機(jī)發(fā)送的地址,并各自進(jìn)入中斷服務(wù)程序,進(jìn)行地址比較。(4)被尋址的從機(jī)確認(rèn)地址后,置本機(jī)SM2=0,并向主機(jī)返回地址供主機(jī)核對(duì)。如果地址不符合,該從機(jī)SM2位不變。(5)主機(jī)核對(duì)無(wú)誤后,向被尋址的從機(jī)發(fā)送命令,通知從機(jī)是進(jìn)行數(shù)據(jù)接收或者數(shù)據(jù)發(fā)送。(6)主從機(jī)之間進(jìn)行數(shù)據(jù)通信。(7)通信結(jié)束后,主、從機(jī)重置SM2=1,再進(jìn)行下一次多機(jī)通信。第四十八頁(yè),共六十七頁(yè),2022年,8月28日2、軟件實(shí)現(xiàn)主機(jī)程序清單:設(shè)從機(jī)地址號(hào)存于40H單元,命令存于41H單元。
MAIN:MOVTMOD,#20H;T1方式2 MOVTH1,#0FDH;初始化波特率9600 MOVTL1,#0FDH MOVPCON,#00H SETBTR1 MOVSCON,#0F0H;串口方式3,多機(jī),準(zhǔn)備接收應(yīng)答LOOP1:SETBTB8MOVSBUF,40H;發(fā)送預(yù)通信從機(jī)地址
JNBTI,$ CLRTIJNBRI,$;等待從機(jī)對(duì)聯(lián)絡(luò)應(yīng)答
CLRRIMOVA,SBUF;接收應(yīng)答,讀至A XRLA,40H;判應(yīng)答的地址是否正確
JZAD_OK第四十九頁(yè),共六十七頁(yè),2022年,8月28日
AD_ERR:MOVSBUF,#0FFH;應(yīng)答錯(cuò)誤,發(fā)命令FFHJNBTI,$CLRTISJMPLOOP1;返回重新發(fā)送聯(lián)絡(luò)信號(hào)
AD_OK:CLRTB8;應(yīng)答正確
MOVSBUF,41H;發(fā)送命令字
JNBTI,$ CLRTIJNBRI,$ ;等待從機(jī)對(duì)命令應(yīng)答
CLRRIMOVA,SBUF;接收應(yīng)答,讀至A XRLA,#80H;判斷應(yīng)答是否正確
JNZCO_OK SETBTB8SJMPAD_ERR;錯(cuò)誤處理第五十頁(yè),共六十七頁(yè),2022年,8月28日CO_OK:MOVA,SBUF;應(yīng)答正確,判是發(fā)送還是接收命令
XRLA,#01H JZSE_DATA;從機(jī)準(zhǔn)備好接收,可以發(fā)送
MOVA,SBUF XRLA,#02H JZRE_DATA;從機(jī)準(zhǔn)備好發(fā)送,可以接收
LJMPSE_DATARE_DATA:MOVR6,#00H;清校驗(yàn)和接收16個(gè)字節(jié)數(shù)據(jù)
MOVR0,#30H MOVR7,#10H第五十一頁(yè),共六十七頁(yè),2022年,8月28日LOOP2:JNBRI,$CLRRIMOVA,SBUF MOV@R0,A INCR0 ADDA,R6 MOVR6,ADJNZR7,LOOP2JNBRI,$ CLRRIMOVA,SBUF;接收校驗(yàn)和并判斷
XRLA,R6 JZXYOK;校驗(yàn)正確
MOVSBUF,#0FFH;校驗(yàn)錯(cuò)誤
JNBTI,$ CLRTILJMPRE_DATA第五十二頁(yè),共六十七頁(yè),2022年,8月28日XYOK:MOVSBUF,#00H;校驗(yàn)和正確,發(fā)00HJNBTI,$ CLRTISETBTB8;置地址標(biāo)志
LJMPRETENDSE_DATA:MOVR6,#00H;發(fā)送16個(gè)字節(jié)數(shù)據(jù)
MOVR0,#30H MOVR7,#10HLOOP3:MOVA,@R0 MOVSBUF,AJNBTI,$ CLRTIINCR0 ADDA,R6 MOVR6,A DJNZR7,LOOP3第五十三頁(yè),共六十七頁(yè),2022年,8月28日
MOVA,R6 MOVSBUF,A;發(fā)校驗(yàn)和
JNBTI,$ CLRTIJNBRI,$ CLRRIMOVA,SBUF XRLA,#00H JZRET_END;從機(jī)接收正確
SJMPSE_DATA;從機(jī)接收不正確,重新發(fā)送
RET_END:RET第五十四頁(yè),共六十七頁(yè),2022年,8月28日從機(jī)程序清單:設(shè)本機(jī)號(hào)存于40H單元,41H單元存放“發(fā)送”命令,42H單元存放“接收”命令。
MAIN:MOVTMOD,#20H;初始化串行口
MOVTH1,#0FDH MOVTL1,#0FDHMOVPCON,#00H SETBTR1MOVSCON,#0F0HLOOP1:SETBEA;開中斷
SETBES SETBRRDY;發(fā)送與接收準(zhǔn)備就緒
SETBTRDY SJMPLOOP1第五十五頁(yè),共六十七頁(yè),2022年,8月28日SERVE:PUSHPSW;中斷服務(wù)程序
PUSHACC CLRESCLRRI MOVA,SBUF XRLA,40H;判斷是否本機(jī)地址
JZSER_OK LJMPENDI;非本機(jī)地址,繼續(xù)監(jiān)聽SER_OK:CLRSM2;是本機(jī)地址,取消監(jiān)聽狀態(tài)
MOVSBUF,40H;本機(jī)地址發(fā)回
JNBTI,$ CLRTIJNBRI,$ CLRRIJBRB8,ENDII;是復(fù)位命令,恢復(fù)監(jiān)聽
MOVA,SBUF;不是復(fù)位命令,判是“發(fā)送”還是“接收”
XRLA,41H JZSERISE;收到“發(fā)送”命令,發(fā)送處理
MOVA,SBUF XRLA,42H JZSERIRE;收到“接收”命令,接收處理
SJMPFFML;非法命令,轉(zhuǎn)非法處理第五十六頁(yè),共六十七頁(yè),2022年,8月28日SERISE:JBTRDY,SEND;從機(jī)發(fā)送是否準(zhǔn)備好
MOVSBUF,#00HSJMPWAIT01SEND:MOVSBUF,#02H;返回“發(fā)送準(zhǔn)備好”
WAIT01:JNBTI,$ CLRTIJNBRI,$ CLRRIJBRB8,ENDII;主機(jī)接收是否準(zhǔn)備就緒
LCALLSE_DATA;發(fā)送數(shù)據(jù)
LJMPENDFFML:MOVSBUF,#80H;發(fā)非法命令,恢復(fù)監(jiān)聽
JNBTI,$ CLRTILJMPENDIISERIRE:JBRRDY,RECE;從機(jī)接收是否準(zhǔn)備好
MOVSBUF,#00H SJMPWAIT02第五十七頁(yè),共六十七頁(yè),2022年,8月28日RECE:MOVSBUF,#01H;返回“接收準(zhǔn)備好”WEIT02:JNBTI,$CLRTIJNBRI,$ CLRRIJBRB8,ENDII;主機(jī)發(fā)送是否就緒
LCALLRE_DATA;接收數(shù)據(jù)
LJMPENDENDII:SETBSM2ENDI:SETBESEND:POPACC POPPSW RETI第五十八頁(yè),共六十七頁(yè),2022年,8月28日SE_DATA:CLRTRDY;發(fā)送數(shù)據(jù)塊子程序
MOVR6,#00H MOVR0,#30HMOVR7,#10HLOOP2:MOVA,@R0 MOVSBUF,AJNBTI,$ CLRTIINCR0 ADDA,R6 MOVR6,A DJNZR7,LOOP2;數(shù)據(jù)塊發(fā)送完畢?
MOVA,R6 MOVSBUF,AJNBTI,$;發(fā)送校驗(yàn)和
CLRTIJNBRI,$ CLRRIMOVA,SBUF XRLA,#00H;判發(fā)送是否正確
JZSEND_OK SJMPSE_DATA;發(fā)送錯(cuò)誤,重發(fā)第五十九頁(yè),共六十七頁(yè),2022年,8月28日SEND_OK:SETBSM2;發(fā)送正確,繼續(xù)監(jiān)聽
SETBES RETRE_DATA:CLRRRDY;接收數(shù)據(jù)塊子程序
MOVR6,#00HMOVR0,#30HMOVR7,#10H第六十頁(yè),共六十七頁(yè),2022年,8月28日LOOP3:JNBRI,$ CLRRIMOVA,SBUFMOV@R0,A INCR0 ADDA,R6 MOVR6,A DJNZR7,LOOP3;接收數(shù)據(jù)塊完畢?
JNBRI,$;接收校驗(yàn)和
CLRRIMOVA,SBUF XRLA,R6;判斷校驗(yàn)和是否正確
JZRECE_OK MOVSBUF,#0FFH;校驗(yàn)和錯(cuò)誤,發(fā)FFHJNBTI,$ CLRTILJMPRE_DATA;重新接收第六十一頁(yè),共六十七頁(yè),2022年,8月28日RECE_O
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代家居設(shè)計(jì)與生活品質(zhì)的提升
- 現(xiàn)代辦公環(huán)境中營(yíng)銷自動(dòng)化策略的實(shí)施
- Unit2 An Accident(說(shuō)課稿)-2024-2025學(xué)年北師大版(三起)英語(yǔ)六年級(jí)上冊(cè)
- 3-1《百合花》(說(shuō)課稿)高一語(yǔ)文同步高效課堂(統(tǒng)編版 必修上冊(cè))
- 2023二年級(jí)數(shù)學(xué)上冊(cè) 七 分一分與除法第5課時(shí) 小熊開店說(shuō)課稿 北師大版
- 3 天窗(說(shuō)課稿)2023-2024學(xué)年部編版語(yǔ)文四年級(jí)下冊(cè)
- 《8和9的加、減法的應(yīng)用》(說(shuō)課稿)-2024-2025學(xué)年一年級(jí)上冊(cè)數(shù)學(xué)人教版
- Unit 1 Art Using language 2 說(shuō)課稿 -2023-2024學(xué)年高中英語(yǔ)人教版(2019)選擇性必修第三冊(cè)
- Unit 5 Colours Lesson 1(說(shuō)課稿)-2024-2025學(xué)年人教新起點(diǎn)版英語(yǔ)一年級(jí)上冊(cè)
- 2023四年級(jí)數(shù)學(xué)上冊(cè) 1 大數(shù)的認(rèn)識(shí)第4課時(shí) 億以內(nèi)數(shù)的大小比較說(shuō)課稿 新人教版
- 偶函數(shù)講課課件
- 中醫(yī)治療“濕疹”醫(yī)案72例
- 《X公司應(yīng)收賬款管理研究14000字(論文)》
- 交通工程公司乳化瀝青儲(chǔ)油罐拆除工程安全協(xié)議書
- YS/T 441.1-2014有色金屬平衡管理規(guī)范第1部分:銅選礦冶煉
- GB/T 23791-2009企業(yè)質(zhì)量信用等級(jí)劃分通則
- 員工自主報(bào)告和舉報(bào)事故隱患獎(jiǎng)勵(lì)匯總表
- 清代文學(xué)緒論
- 阿里云數(shù)字化轉(zhuǎn)型生態(tài)介紹課件
- 《控軋控冷》課件
- KET詞匯表(英文中文完整版)
評(píng)論
0/150
提交評(píng)論