第7章MCS-51的串行口_第1頁
第7章MCS-51的串行口_第2頁
第7章MCS-51的串行口_第3頁
第7章MCS-51的串行口_第4頁
第7章MCS-51的串行口_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第7 7章章 MCS-51MCS-51的串行口的串行口全雙工全雙工的的異步異步通訊串行口通訊串行口4 4種工作方式種工作方式 , ,波特率由片內(nèi)定時器波特率由片內(nèi)定時器/ /計數(shù)器控制。計數(shù)器控制。每發(fā)送或接收一幀數(shù)據(jù),均可發(fā)出中斷請求。每發(fā)送或接收一幀數(shù)據(jù),均可發(fā)出中斷請求。除用于串行通訊,除用于串行通訊,還可用來擴(kuò)展并行還可用來擴(kuò)展并行I/OI/O口???。7.1 7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)串行口內(nèi)部結(jié)構(gòu)如下圖,兩個物理上獨(dú)立地接收和串行口內(nèi)部結(jié)構(gòu)如下圖,兩個物理上獨(dú)立地接收和發(fā)送緩沖器,可同時收、發(fā)數(shù)據(jù)。發(fā)送緩沖器,可同時收、發(fā)數(shù)據(jù)。兩個緩沖器共用一個特殊功能寄存器字節(jié)地址:兩個緩

2、沖器共用一個特殊功能寄存器字節(jié)地址:SBUFSBUF(99H99H)。)。 控制寄存器共兩個:特殊功能寄存器控制寄存器共兩個:特殊功能寄存器SCONSCON和和PCONPCON。 7.1.1 7.1.1 串行口控制寄存器串行口控制寄存器SCONSCON 字節(jié)地址字節(jié)地址9898H H,可位尋址,格式如圖所示可位尋址,格式如圖所示。 (1 1)SM0SM0、SM1SM1串行口串行口4種工作方式的選擇位種工作方式的選擇位 表表 串行口的串行口的4 4種工作方式種工作方式SM0 SM1 SM0 SM1 方式方式 功功 能能 說說 明明 0 0 0 0 0 0 同步移位寄存器方式(用于擴(kuò)展同步移位寄存

3、器方式(用于擴(kuò)展I/OI/O口)口) 0 1 1 8 0 1 1 8位異步收發(fā),波特率可變(由定時器控制)位異步收發(fā),波特率可變(由定時器控制) 1 0 2 9 1 0 2 9位異步收發(fā),波特率為位異步收發(fā),波特率為fosc/64fosc/64或或fosc/32fosc/32 1 1 3 1 1 3 9 9位異步收發(fā),波特率可變(由定時器控制)位異步收發(fā),波特率可變(由定時器控制)(2 2)SM2 SM2 多機(jī)通信控制位多機(jī)通信控制位 用于方式用于方式2 2或方式或方式3 3中。中。 當(dāng)串行口以當(dāng)串行口以方式方式2 2或方式或方式3 3接收接收時,時, 如果如果SM2=1SM2=1,只有當(dāng)接收

4、到的第只有當(dāng)接收到的第9 9位數(shù)據(jù)(位數(shù)據(jù)(RB8RB8)為為“1”“1”時,才將接收到的前時,才將接收到的前8 8位數(shù)據(jù)送入位數(shù)據(jù)送入SBUFSBUF,并置并置“1” “1” RIRI,產(chǎn)生中斷請求;當(dāng)接收到的第產(chǎn)生中斷請求;當(dāng)接收到的第9 9位數(shù)據(jù)位數(shù)據(jù)(RB8RB8)為為“0”“0”時,則將接收到的前時,則將接收到的前8 8位數(shù)據(jù)丟棄。位數(shù)據(jù)丟棄。 如果如果SM2=0SM2=0,則不論第,則不論第9 9位數(shù)據(jù)是位數(shù)據(jù)是“1”“1”還是還是“0”“0”,都將都將 前前8 8位數(shù)據(jù)送入位數(shù)據(jù)送入SBUFSBUF中,并置中,并置“1” “1” RIRI,產(chǎn)產(chǎn)生中斷請求。生中斷請求。在方式在方式

5、1 1時,如果時,如果SM2=1SM2=1,則只有收到停止位時才會激則只有收到停止位時才會激活活RIRI。在方式在方式0 0時,時,SM2SM2必須為必須為0 0。 (3 3)RENREN允許串行接收位允許串行接收位 由軟件置由軟件置“1”“1”或清或清“0”“0”。 REN=1 REN=1 允許串行口接收數(shù)據(jù)。允許串行口接收數(shù)據(jù)。 REN=0 REN=0 禁止串行口接收數(shù)據(jù)。禁止串行口接收數(shù)據(jù)。 (4 4)TB8TB8發(fā)送的第發(fā)送的第9 9位數(shù)據(jù)位數(shù)據(jù)方式方式2 2和和3 3時,時,TB8TB8是要發(fā)送的第是要發(fā)送的第9 9位數(shù)據(jù),可作為奇偶位數(shù)據(jù),可作為奇偶校驗(yàn)位使用,也可作為地址幀或數(shù)據(jù)

6、幀的標(biāo)志。校驗(yàn)位使用,也可作為地址幀或數(shù)據(jù)幀的標(biāo)志。 =1 =1為地址幀為地址幀, , =0 =0為數(shù)據(jù)幀為數(shù)據(jù)幀 (5 5)RB8RB8接收到的第接收到的第9 9位數(shù)據(jù)位數(shù)據(jù)方式方式2 2和和3 3時,時,RB8RB8存放接收到的第存放接收到的第9 9位數(shù)據(jù)。在方式位數(shù)據(jù)。在方式1 1,如果如果SM2=0SM2=0,RB8RB8是接收到的停止位。在方式是接收到的停止位。在方式0 0,不,不使用使用RB8RB8。 (6 6)TITI發(fā)送中斷標(biāo)志位發(fā)送中斷標(biāo)志位 方式方式0 0時時,串行發(fā)送第,串行發(fā)送第8 8位數(shù)據(jù)結(jié)束時由硬件置位數(shù)據(jù)結(jié)束時由硬件置“1”“1”,其它工作方式其它工作方式,串行口

7、發(fā)送停止位的開始時置,串行口發(fā)送停止位的開始時置“1”“1”。TI=1TI=1,表示一幀數(shù)據(jù)發(fā)送結(jié)束,可供軟件查詢,也表示一幀數(shù)據(jù)發(fā)送結(jié)束,可供軟件查詢,也可申請中斷。可申請中斷。CPUCPU響應(yīng)中斷后響應(yīng)中斷后, ,在中斷服務(wù)程序中向在中斷服務(wù)程序中向SBUFSBUF寫入要發(fā)送的下一幀數(shù)據(jù)。寫入要發(fā)送的下一幀數(shù)據(jù)。TITI必須由軟件清必須由軟件清0 0。(7 7)RIRI接收中斷標(biāo)志位接收中斷標(biāo)志位 方式方式0 0時時,接收完第,接收完第8 8位數(shù)據(jù)時,位數(shù)據(jù)時,RIRI由硬件置由硬件置1 1。其它工作方式其它工作方式,串行接收到停止位時,該位置,串行接收到停止位時,該位置“1”“1”。RI

8、=1RI=1,表示一幀數(shù)據(jù)接收完畢,并申請中斷表示一幀數(shù)據(jù)接收完畢,并申請中斷, ,要求要求CPUCPU從接收從接收SBUFSBUF取走數(shù)據(jù)。該位的狀態(tài)也可供軟件查取走數(shù)據(jù)。該位的狀態(tài)也可供軟件查詢。詢。RIRI必須由軟件清必須由軟件清“0”“0”。7.1.2 7.1.2 特殊功能寄存器特殊功能寄存器PCONPCON 字節(jié)地址為字節(jié)地址為87H,沒有位尋址功能沒有位尋址功能。 SMODSMOD:波特率選擇位波特率選擇位。 例如:方式例如:方式1 1的波特率的計算公式為:的波特率的計算公式為: 方式方式1 1波特率波特率= =(2 2SMODSMOD/32/32)定時器定時器T1T1的溢出率的溢

9、出率當(dāng)當(dāng)SMOD=1SMOD=1時,要比時,要比SMOD=0SMOD=0時的波特率加倍,也稱時的波特率加倍,也稱SMODSMOD位為位為波特率倍增位波特率倍增位。7.2 7.2 串行口的串行口的4 4種工作方式種工作方式7.2.1 7.2.1 方式方式0 0 同步移位寄存器輸入輸出方式,常用于外接移位寄存同步移位寄存器輸入輸出方式,常用于外接移位寄存器,以擴(kuò)展并行器,以擴(kuò)展并行I/OI/O口???。 8 8位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接收最低位。波特率固定為收最低位。波特率固定為fosc/12fosc/12。幀格式如下:幀格式如下:1 1

10、方式方式0 0發(fā)送發(fā)送 當(dāng)當(dāng)CPUCPU執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器SBUFSBUF的指令時,的指令時,產(chǎn)生一個正脈沖,串行口即把產(chǎn)生一個正脈沖,串行口即把SBUFSBUF中的中的8 8位數(shù)據(jù)以位數(shù)據(jù)以fosc/12fosc/12的固定波特率從的固定波特率從RXDRXD引腳串行輸出,低位在引腳串行輸出,低位在先先, ,TXDTXD引腳輸出同步移位脈沖引腳輸出同步移位脈沖,發(fā)送完,發(fā)送完8 8位數(shù)據(jù)置位數(shù)據(jù)置“1”“1”中斷標(biāo)志位中斷標(biāo)志位TITI。時序如圖所示。時序如圖所示。2 2方式方式0 0接收接收 方式方式0 0接收時,接收時,RENREN為串行口接收允許接收

11、控制位,為串行口接收允許接收控制位,REN=0REN=0,禁止接收。禁止接收。 REN=1REN=1,允許接收。當(dāng)允許接收。當(dāng)CPUCPU向串行口的向串行口的SCONSCON寄存器寫入寄存器寫入控制字(置為方式控制字(置為方式0 0,并置,并置“1”“1”RENREN位,同時位,同時RI=0RI=0)時,產(chǎn)生一個正脈沖,串行口即開始接收數(shù)據(jù)。時,產(chǎn)生一個正脈沖,串行口即開始接收數(shù)據(jù)。引腳引腳RXDRXD為數(shù)據(jù)輸入端,為數(shù)據(jù)輸入端,TXDTXD為移位脈沖信號輸出端為移位脈沖信號輸出端,接收,接收器也以器也以fosc/12fosc/12的固定波特率采樣的固定波特率采樣RXDRXD引腳的數(shù)據(jù)信息,引

12、腳的數(shù)據(jù)信息,當(dāng)接收到當(dāng)接收到8 8位數(shù)據(jù)時置位數(shù)據(jù)時置“1”“1”中斷標(biāo)志中斷標(biāo)志RIRI。表示一幀數(shù)表示一幀數(shù)據(jù)接收完畢,可進(jìn)行下一幀數(shù)據(jù)的接收。時序如下圖:據(jù)接收完畢,可進(jìn)行下一幀數(shù)據(jù)的接收。時序如下圖: 方式方式0 0下,下,SCONSCON中的中的TB8TB8、RB8RB8位沒有用到,發(fā)送或接收位沒有用到,發(fā)送或接收完完8 8位數(shù)據(jù)由硬件置位數(shù)據(jù)由硬件置“1”“1”TITI或或RIRI中斷標(biāo)志位,中斷標(biāo)志位,CPUCPU響響應(yīng)中斷。應(yīng)中斷。TITI或或RIRI標(biāo)志位須由用戶軟件清標(biāo)志位須由用戶軟件清“0”“0”,可采,可采用如下指令:用如下指令:CLR TICLR TI;TITI位清

13、位清“0”“0”CLR RI CLR RI ;RIRI位清位清“0”“0”方式方式0 0時,時,SM2SM2位(多機(jī)通訊控制位)必須為位(多機(jī)通訊控制位)必須為0 0。7.2.2 7.2.2 方式方式1 1 SM0SM0、SM1SM1=01=01。用于數(shù)據(jù)的串行發(fā)送和接收。用于數(shù)據(jù)的串行發(fā)送和接收。TXDTXD腳和腳和RXDRXD腳分別用于發(fā)送和接收數(shù)據(jù)。腳分別用于發(fā)送和接收數(shù)據(jù)。方式方式1 1收發(fā)一幀的數(shù)據(jù)為收發(fā)一幀的數(shù)據(jù)為1010位,位,1 1個起始位(個起始位(0 0),),8 8個個數(shù)據(jù)位,數(shù)據(jù)位,1 1個停止位(個停止位(1 1),先發(fā)送或接收最低位。幀),先發(fā)送或接收最低位。幀格式

14、如圖所示。格式如圖所示。 波特率由下式確定:波特率由下式確定:方式方式1 1波特率波特率= = (2 2SMODSMOD/32/32) 定時器定時器T1T1的溢出率的溢出率SMODSMOD為為PCONPCON寄存器的最高位的值(寄存器的最高位的值(0 0或或1 1)。)。 1 1方式方式1 1發(fā)送發(fā)送 方式方式1 1輸出時,數(shù)據(jù)位由輸出時,數(shù)據(jù)位由TXDTXD端輸出,端輸出,一幀信息為一幀信息為1010位,位,1 1位起始位位起始位0 0,8 8位數(shù)據(jù)位(先低位)位數(shù)據(jù)位(先低位)和和1 1位停止位位停止位1 1。當(dāng)當(dāng)CPUCPU執(zhí)行一條數(shù)據(jù)寫發(fā)送緩沖器執(zhí)行一條數(shù)據(jù)寫發(fā)送緩沖器SBUFSBUF

15、的指令,就啟的指令,就啟動發(fā)送。圖中動發(fā)送。圖中TXTX時鐘的頻率就是發(fā)送的波特率。發(fā)時鐘的頻率就是發(fā)送的波特率。發(fā)送開始時,內(nèi)部發(fā)送控制信號變?yōu)橛行?。將起始位送開始時,內(nèi)部發(fā)送控制信號變?yōu)橛行?。將起始位向向TXDTXD輸出,此后,每經(jīng)過一個輸出,此后,每經(jīng)過一個TXTX時鐘周期,便產(chǎn)時鐘周期,便產(chǎn)生一個移位脈沖,并由生一個移位脈沖,并由TXDTXD輸出一個數(shù)據(jù)位。輸出一個數(shù)據(jù)位。8 8位數(shù)位數(shù)據(jù)位全部發(fā)送完畢后,置據(jù)位全部發(fā)送完畢后,置“1”“1”中斷標(biāo)志位中斷標(biāo)志位TITI,然然后后 失效。方式失效。方式1 1發(fā)送數(shù)據(jù)的時序,如圖所示。發(fā)送數(shù)據(jù)的時序,如圖所示。 2方式方式1接收接收 數(shù)據(jù)

16、從數(shù)據(jù)從RXDRXD(P3.0P3.0)引腳輸入。當(dāng)檢測到起始位的負(fù)跳引腳輸入。當(dāng)檢測到起始位的負(fù)跳變時,則開始接收。定時控制信號有兩種(如圖所變時,則開始接收。定時控制信號有兩種(如圖所示),一種是接收移位時鐘(示),一種是接收移位時鐘(RXRX時鐘),它的頻率時鐘),它的頻率和傳送的波特率相同。另一種是位檢測器采樣脈沖,和傳送的波特率相同。另一種是位檢測器采樣脈沖,它的頻率是它的頻率是RXRX時鐘的時鐘的1616倍。也就是在倍。也就是在1 1位數(shù)據(jù)期間,位數(shù)據(jù)期間,有有1616個采樣脈沖,以波特率的個采樣脈沖,以波特率的1616倍的速率采樣倍的速率采樣RXDRXD引引腳狀態(tài),當(dāng)采樣到腳狀態(tài)

17、,當(dāng)采樣到RXDRXD端從端從1 1到到0 0的跳變時就啟動檢測的跳變時就啟動檢測器,器,接收的值是接收的值是3 3次連續(xù)采樣(第次連續(xù)采樣(第7 7、8 8、9 9個脈沖時采個脈沖時采樣)樣)取其中兩次相同的值,以確認(rèn)是否是真正的起始取其中兩次相同的值,以確認(rèn)是否是真正的起始位(負(fù)跳變)的開始。位(負(fù)跳變)的開始。當(dāng)一幀數(shù)據(jù)接收完畢以后,必須同時滿足以下兩個條件,當(dāng)一幀數(shù)據(jù)接收完畢以后,必須同時滿足以下兩個條件,這次接收才真正有效。這次接收才真正有效。 RI=0RI=0,即上一幀數(shù)據(jù)接收完成時,即上一幀數(shù)據(jù)接收完成時,RI=1RI=1發(fā)出的中斷發(fā)出的中斷請求已被響應(yīng),請求已被響應(yīng),SBUFS

18、BUF中的數(shù)據(jù)已被取走,說明中的數(shù)據(jù)已被取走,說明“接收接收SBUF”SBUF”已空。已空。 SM2=0SM2=0或收到的停止位或收到的停止位=1=1(方式(方式1 1時,停止位已進(jìn)入時,停止位已進(jìn)入RB8RB8),),則收到的數(shù)據(jù)裝入則收到的數(shù)據(jù)裝入SBUFSBUF和和RB8RB8(RB8RB8裝入停止裝入停止位),且置位),且置“1”“1”中斷標(biāo)志中斷標(biāo)志RIRI。若這兩個條件不同時滿足,收到的數(shù)據(jù)不能裝入若這兩個條件不同時滿足,收到的數(shù)據(jù)不能裝入SBUFSBUF,該幀數(shù)據(jù)將丟失。該幀數(shù)據(jù)將丟失。 7.2.3 7.2.3 方式方式2 29 9位異步通信接口。位異步通信接口。每幀數(shù)據(jù)均為每幀

19、數(shù)據(jù)均為1111位位,1 1位起始位位起始位0 0,8 8位數(shù)據(jù)位(先低位),位數(shù)據(jù)位(先低位),1 1位可程控的第位可程控的第9 9位數(shù)據(jù)和位數(shù)據(jù)和1 1位停止位。幀格式見下圖。位停止位。幀格式見下圖。方式方式2 2的波特率由下式確定:的波特率由下式確定:方式方式2 2波特率波特率= = (2 2SMODSMOD/64/64)foscfosc 1方式方式2發(fā)送發(fā)送發(fā)送前,先根據(jù)通訊協(xié)議由軟件發(fā)送前,先根據(jù)通訊協(xié)議由軟件設(shè)置設(shè)置TB8TB8(例如,雙機(jī)例如,雙機(jī)通訊時的奇偶校驗(yàn)位或多機(jī)通訊時的地址通訊時的奇偶校驗(yàn)位或多機(jī)通訊時的地址/ /數(shù)據(jù)的標(biāo)數(shù)據(jù)的標(biāo)志位)。志位)。方式方式2 2發(fā)送數(shù)據(jù)波

20、形如圖所示。發(fā)送數(shù)據(jù)波形如圖所示。 例例7-17-1 方式方式2 2發(fā)送在雙機(jī)通訊中的應(yīng)用。發(fā)送在雙機(jī)通訊中的應(yīng)用。下面的發(fā)送中斷服務(wù)程序,是在雙機(jī)通訊中,以下面的發(fā)送中斷服務(wù)程序,是在雙機(jī)通訊中,以TB8TB8作為奇偶校驗(yàn)位,處理方法為數(shù)據(jù)寫入作為奇偶校驗(yàn)位,處理方法為數(shù)據(jù)寫入SBUFSBUF之前,之前,先將數(shù)據(jù)的奇偶校驗(yàn)位寫入先將數(shù)據(jù)的奇偶校驗(yàn)位寫入TB8TB8,以保證采用偶校以保證采用偶校驗(yàn)發(fā)送。驗(yàn)發(fā)送。 PIPTIPIPTI: PUSH PSW PUSH PSW ;現(xiàn)場保護(hù)現(xiàn)場保護(hù) PUSH AccPUSH Acc SETB RS1 SETB RS1 ;選擇第選擇第2 2組工作寄存器區(qū)

21、組工作寄存器區(qū) CLR RS0CLR RS0 CLR TI CLR TI ;發(fā)送中斷標(biāo)志清發(fā)送中斷標(biāo)志清“0”“0” MOV AMOV A,R0R0;取數(shù)據(jù)取數(shù)據(jù) MOV C,P MOV C,P ;校驗(yàn)位送校驗(yàn)位送TB8,TB8,采用偶校驗(yàn)采用偶校驗(yàn) MOV TB8 ,CMOV TB8 ,C MOV SBUF ,A MOV SBUF ,A ;啟動發(fā)送啟動發(fā)送 INC R0 INC R0 ;數(shù)據(jù)指針加數(shù)據(jù)指針加1 1 POP Acc POP Acc ;恢復(fù)現(xiàn)場恢復(fù)現(xiàn)場 POP PSW POP PSW RETI RETI ;中斷返回中斷返回 2 2方式方式2 2接收接收 SM0SM0、SM1SM1

22、=10=10,且,且REN=1REN=1。數(shù)據(jù)由。數(shù)據(jù)由RXDRXD端輸入,接收端輸入,接收1111位位信息。當(dāng)位檢測邏輯采樣到信息。當(dāng)位檢測邏輯采樣到RXDRXD引腳從引腳從1 1到到0 0的負(fù)跳變,的負(fù)跳變,并判斷起始位有效后,便開始接收一幀信息。在接并判斷起始位有效后,便開始接收一幀信息。在接收器完第收器完第9 9位數(shù)據(jù)后,需滿足以下兩個條件,才能將位數(shù)據(jù)后,需滿足以下兩個條件,才能將接收到的數(shù)據(jù)接收到的數(shù)據(jù)送入送入SBUFSBUF。 (1 1)RI=0RI=0,意味著接收緩沖器為空。意味著接收緩沖器為空。(2 2)SM2=0SM2=0或接收到的第或接收到的第9 9位數(shù)據(jù)位位數(shù)據(jù)位RB8

23、=1RB8=1時。時。當(dāng)上述兩個條件滿足時,接收到的數(shù)據(jù)送入當(dāng)上述兩個條件滿足時,接收到的數(shù)據(jù)送入SBUFSBUF(接接收緩沖器),第收緩沖器),第9 9位數(shù)據(jù)送入位數(shù)據(jù)送入RB8RB8,并置并置“1”“1”RIRI。若不滿足這兩個條件,接收的信息將被丟棄。若不滿足這兩個條件,接收的信息將被丟棄。 串行口方式串行口方式2 2接收數(shù)據(jù)的時序波形如圖所示。接收數(shù)據(jù)的時序波形如圖所示。 例例7-27-2 方式方式2 2接收在雙機(jī)通訊中的應(yīng)用。接收在雙機(jī)通訊中的應(yīng)用。本例與上例相對應(yīng)。若附加的第本例與上例相對應(yīng)。若附加的第9 9位數(shù)據(jù)為校驗(yàn)位,在位數(shù)據(jù)為校驗(yàn)位,在接收程序中應(yīng)作偶校驗(yàn)處理,設(shè)接收程序中

24、應(yīng)作偶校驗(yàn)處理,設(shè)1 1組寄存器區(qū)的組寄存器區(qū)的R0R0為為數(shù)據(jù)緩沖器指針。數(shù)據(jù)緩沖器指針。 PIRI: PIRI: PUSH PSWPUSH PSW PUSH AccPUSH AccSETB RS0 SETB RS0 ;選擇選擇1 1組寄存器區(qū)組寄存器區(qū)CLR RS1CLR RS1CLR RI CLR RI MOV A,SBUF MOV A,SBUF ;收到數(shù)據(jù)送收到數(shù)據(jù)送A AMOV C,PMOV C,PJNC L1JNC L1JNB RB8,ERP JNB RB8,ERP ;ERPERP為出錯處理程序?yàn)槌鲥e處理程序 AJMP L2AJMP L2 L1: JB RB8,ERP L1: JB

25、 RB8,ERP L2: MOV R0,A L2: MOV R0,A INC R0 INC R0 POP Acc POP Acc POP PSW POP PSW ERP: ERP: ;出錯處理程序段出錯處理程序段 RETIRETI7.2.4 7.2.4 方式方式3 3 當(dāng)當(dāng)SM0SM0、SM1SM1=11=11,串行口工作在方式,串行口工作在方式3 3。方式。方式3 3為波為波特率可變的特率可變的9 9位異步通訊方式,除波特率外,方式位異步通訊方式,除波特率外,方式3 3和和方式方式2 2相同。方式相同。方式3 3發(fā)送和接收數(shù)據(jù)的時序波形見方式發(fā)送和接收數(shù)據(jù)的時序波形見方式2 2的圖。的圖。方

26、式方式3 3的波特率由下式確定:的波特率由下式確定: 方式方式3 3波特率波特率= =(2 2SMODSMOD/32/32)定時器定時器T1T1的溢出率的溢出率7.3 7.3 多機(jī)通訊多機(jī)通訊多個多個MCS-51MCS-51單片機(jī)可利用串行口可進(jìn)行多機(jī)通訊。要單片機(jī)可利用串行口可進(jìn)行多機(jī)通訊。要保證主機(jī)與所選擇的從機(jī)實(shí)現(xiàn)可靠地通訊,必須保保證主機(jī)與所選擇的從機(jī)實(shí)現(xiàn)可靠地通訊,必須保證串行口具有識別功能。證串行口具有識別功能。串行口控制寄存器串行口控制寄存器SCONSCON中的中的SM2SM2位就是滿足這一條件而位就是滿足這一條件而設(shè)置的設(shè)置的多機(jī)通訊控制位多機(jī)通訊控制位。原理是在串行口以方式。

27、原理是在串行口以方式2 2(或方式(或方式3 3)接收時,若)接收時,若SM2=1SM2=1,表示置多機(jī)通訊功表示置多機(jī)通訊功能位,這時出現(xiàn)兩種可能情況:能位,這時出現(xiàn)兩種可能情況: (1 1)接收到的第)接收到的第9 9位數(shù)據(jù)為位數(shù)據(jù)為1 1時,數(shù)據(jù)才裝入時,數(shù)據(jù)才裝入SBUFSBUF,并置中斷標(biāo)志并置中斷標(biāo)志RI=1RI=1向向CPUCPU發(fā)出中斷請求;發(fā)出中斷請求; (2 2)接收到的第)接收到的第9 9位數(shù)據(jù)為位數(shù)據(jù)為0 0時,則不產(chǎn)生中斷標(biāo)時,則不產(chǎn)生中斷標(biāo)志,信息將拋棄。志,信息將拋棄。若若SM2=0SM2=0,則接收的第則接收的第9 9位數(shù)據(jù)不論是位數(shù)據(jù)不論是0 0還是還是1 1

28、,都產(chǎn)生,都產(chǎn)生RI=1RI=1中斷標(biāo)志,接收到的數(shù)據(jù)裝入中斷標(biāo)志,接收到的數(shù)據(jù)裝入SBUFSBUF中。中。應(yīng)用上述特性,便可實(shí)現(xiàn)應(yīng)用上述特性,便可實(shí)現(xiàn)MCS-51MCS-51的多機(jī)通訊。的多機(jī)通訊。 設(shè)多機(jī)系統(tǒng)中有一主機(jī)和設(shè)多機(jī)系統(tǒng)中有一主機(jī)和3 3個個80318031從機(jī),如下圖。從機(jī),如下圖。 主機(jī)的主機(jī)的RXDRXD與所有從機(jī)的與所有從機(jī)的TXDTXD端相連,端相連,TXDTXD與所有從與所有從機(jī)的機(jī)的RXDRXD端相連。從機(jī)的地址分別為端相連。從機(jī)的地址分別為0000H H、01H01H和和0202H H。 多機(jī)通訊工作過程:多機(jī)通訊工作過程:(1 1)從機(jī)串行口編程為方式)從機(jī)串行

29、口編程為方式2 2或方式或方式3 3接收,且置接收,且置“1”“1”SM2SM2和和RENREN位,使從機(jī)只處于多機(jī)通訊且接收地位,使從機(jī)只處于多機(jī)通訊且接收地址幀的狀態(tài)。址幀的狀態(tài)。(2 2)在主機(jī)先將從機(jī)地址(即準(zhǔn)備接收數(shù)據(jù)的從機(jī))在主機(jī)先將從機(jī)地址(即準(zhǔn)備接收數(shù)據(jù)的從機(jī))發(fā)送給各從機(jī)發(fā)送給各從機(jī), ,接著才傳送數(shù)據(jù)或命令,主機(jī)發(fā)出的接著才傳送數(shù)據(jù)或命令,主機(jī)發(fā)出的地址信息的第地址信息的第9 9位為位為1 1,數(shù)據(jù)(包括命令)信息的第,數(shù)據(jù)(包括命令)信息的第9 9位為位為0 0。當(dāng)主機(jī)向各從機(jī)發(fā)送地址時,各從機(jī)的串行。當(dāng)主機(jī)向各從機(jī)發(fā)送地址時,各從機(jī)的串行口接收到的第口接收到的第9 9位

30、信息位信息RB8RB8為為1 1,且由于,且由于SM2=1SM2=1,則置則置“1”“1”中斷標(biāo)志位中斷標(biāo)志位RIRI,各從機(jī)各從機(jī)80318031響應(yīng)中斷,執(zhí)行中響應(yīng)中斷,執(zhí)行中斷服務(wù)程序。在中斷服務(wù)子程序中,判主機(jī)送來的地斷服務(wù)程序。在中斷服務(wù)子程序中,判主機(jī)送來的地址是否和本機(jī)地址相符合,若為本機(jī)地址,則該從機(jī)址是否和本機(jī)地址相符合,若為本機(jī)地址,則該從機(jī)清清“0”“0”SM2SM2位,準(zhǔn)備接收主機(jī)的數(shù)據(jù)或命令;若地址位,準(zhǔn)備接收主機(jī)的數(shù)據(jù)或命令;若地址不相符,則保持不相符,則保持SM2=1SM2=1狀態(tài)。狀態(tài)。(3 3)接著主機(jī)發(fā)送數(shù)據(jù)幀,此時各從機(jī)串行口接收到)接著主機(jī)發(fā)送數(shù)據(jù)幀,此

31、時各從機(jī)串行口接收到 的的RB8=0RB8=0,只有與前面地址相符合的從機(jī)系統(tǒng)(即只有與前面地址相符合的從機(jī)系統(tǒng)(即 已清已清“0”“0”SM2SM2位的從機(jī))才能激活中斷標(biāo)志位位的從機(jī))才能激活中斷標(biāo)志位RIRI, 從而進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中接收從而進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序中接收 主機(jī)的數(shù)據(jù)(或命令);主機(jī)的數(shù)據(jù)(或命令); 其它的從機(jī)其它的從機(jī)因因SM2SM2保持為保持為1 1,又,又RB8=0RB8=0不激活中斷標(biāo)志不激活中斷標(biāo)志RIRI,不能進(jìn)入中斷,所接收的數(shù)據(jù)丟失不作處理,不能進(jìn)入中斷,所接收的數(shù)據(jù)丟失不作處理,從而保證主機(jī)和從機(jī)間通訊的正確性。從而保證主機(jī)和從

32、機(jī)間通訊的正確性。 前圖所示的多機(jī)系統(tǒng)是主從式,由主機(jī)控制多機(jī)之間前圖所示的多機(jī)系統(tǒng)是主從式,由主機(jī)控制多機(jī)之間 的通訊,從機(jī)和從機(jī)的通訊只能經(jīng)主機(jī)才能實(shí)現(xiàn)。的通訊,從機(jī)和從機(jī)的通訊只能經(jīng)主機(jī)才能實(shí)現(xiàn)。7.4 7.4 波特率的制定方法波特率的制定方法方式方式0 0和方式和方式2 2的波特率是固定的;方式的波特率是固定的;方式1 1和方式和方式3 3波特波特 率可由定時器率可由定時器T1T1的溢出率來確定。的溢出率來確定。7.4.1 7.4.1 波特率的定義波特率的定義定義:定義:串行口每秒鐘發(fā)送(或接收)的位數(shù)稱為波特串行口每秒鐘發(fā)送(或接收)的位數(shù)稱為波特 率。率。對于定時器的不同工作方式,

33、得到的波特率的范圍不對于定時器的不同工作方式,得到的波特率的范圍不一樣,因?yàn)?,計?shù)位數(shù)的不同。一樣,因?yàn)椋嫈?shù)位數(shù)的不同。7.4.2 7.4.2 定時器定時器T1T1產(chǎn)生波特率的計算產(chǎn)生波特率的計算(1 1)方式)方式0 0,波特率固定為時鐘頻率,波特率固定為時鐘頻率foscfosc的的1/121/12,且,且不受不受SMODSMOD位的值的影響。若位的值的影響。若fosc=12MHzfosc=12MHz,波特率為波特率為fosc/12fosc/12即即1 1Mb/sMb/s。(2 2)方式)方式2 2,波特率與,波特率與SMODSMOD位的值有關(guān)。位的值有關(guān)。 方式方式2 2波特率波特率=

34、= (2 2SMODSMOD/64/64)foscfosc 若若fosc=12MHz: SMOD=0 fosc=12MHz: SMOD=0 波特率波特率=187.5=187.5kb/skb/s; SMOD=1 SMOD=1 波特率波特率=375=375kb/skb/s (3 3)串行口工作在方式)串行口工作在方式1 1或方式或方式3 3時,常用定時器時,常用定時器T1T1作為波特率發(fā)生器,其波特率為:作為波特率發(fā)生器,其波特率為:波特率波特率= = (2 2SMODSMOD/64/64)T1T1的溢出率的溢出率實(shí)際設(shè)定波特率時,實(shí)際設(shè)定波特率時,T1T1常設(shè)置為方式常設(shè)置為方式2 2定時(自動裝定時(自動裝初值)這種方式不僅操作方便,也可避免因軟件重初值)這種方式不僅操作方便,也可避免因軟件重裝初值而帶來的定時誤差。裝初值而帶來的定時誤差。實(shí)際使用時,經(jīng)常根據(jù)已知波特率和時鐘頻率來計算實(shí)際使用時,經(jīng)常根據(jù)已知波特率和時鐘頻率來計算T1T1的初值的初值X X。為避免煩雜的初值計算,常用的波特為避免煩雜

溫馨提示

  • 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

提交評論