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

下載本文檔

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

文檔簡介

1、43/1第第7 7章章 MCS-51MCS-51的串行口的串行口7.17.1串行口的結(jié)構(gòu)串行口的結(jié)構(gòu)7.27.2串行口的串行口的4 4種方式種方式7.37.3多機(jī)通訊多機(jī)通訊7.47.4波特率的制定方法波特率的制定方法7.57.5串行口的編程和應(yīng)用串行口的編程和應(yīng)用43/2 全全雙工雙工的的異步異步通訊串行口。通訊串行口。 雙工雙工:接收、發(fā)送數(shù)據(jù)同時(shí)進(jìn)行。:接收、發(fā)送數(shù)據(jù)同時(shí)進(jìn)行。 異步異步通訊:收、發(fā)雙方?jīng)]有同步時(shí)鐘來控制收、發(fā)通訊:收、發(fā)雙方?jīng)]有同步時(shí)鐘來控制收、發(fā)雙方同步傳送,而雙方同步傳送,而靠各自的時(shí)鐘靠各自的時(shí)鐘來控制數(shù)據(jù)傳送。來控制數(shù)據(jù)傳送。 4 4種種工作方式工作方式 , ,

2、波特率波特率由片內(nèi)定時(shí)器由片內(nèi)定時(shí)器/ /計(jì)數(shù)器控制。計(jì)數(shù)器控制。 每發(fā)送或接收一幀數(shù)據(jù),均可發(fā)出中斷請求。每發(fā)送或接收一幀數(shù)據(jù),均可發(fā)出中斷請求。 除用于串行通訊,除用于串行通訊,還可用來擴(kuò)展并行還可用來擴(kuò)展并行I/OI/O口???。43/3 7.1 7.1 串行口的結(jié)構(gòu)串行口的結(jié)構(gòu) 串行口內(nèi)部結(jié)構(gòu)如下圖,兩個(gè)物理上獨(dú)立地接收和發(fā)送串行口內(nèi)部結(jié)構(gòu)如下圖,兩個(gè)物理上獨(dú)立地接收和發(fā)送緩沖器,可同時(shí)收、發(fā)數(shù)據(jù)。緩沖器,可同時(shí)收、發(fā)數(shù)據(jù)。 兩個(gè)兩個(gè)數(shù)據(jù)數(shù)據(jù)緩沖器緩沖器共用一個(gè)共用一個(gè)特殊功能寄存器字節(jié)特殊功能寄存器字節(jié)地址地址:SBUFSBUF(99H99H)。)。 控制控制寄存器共兩個(gè):特殊功能寄存

3、器寄存器共兩個(gè):特殊功能寄存器SCONSCON和和PCONPCON。43/47.1.1 7.1.1 串行口控制寄存器串行口控制寄存器SCONSCON 字節(jié)地址字節(jié)地址98H98H,可位尋址,格式如圖所示。,可位尋址,格式如圖所示。(1 1)SM0SM0、SM1SM1串行口串行口4 4種工作方式的選擇位種工作方式的選擇位 串行口的串行口的4 4種工作方式種工作方式SM0 SM1 SM0 SM1 方式方式 功功 能能 說說 明明 0 0 0 0 0 0 同步移位寄存器方式(用于擴(kuò)展同步移位寄存器方式(用于擴(kuò)展I/OI/O口)口) 0 1 1 80 1 1 8位異步收發(fā),波特率可變(由定時(shí)器控制)位

4、異步收發(fā),波特率可變(由定時(shí)器控制) 1 0 2 91 0 2 9位異步收發(fā),波特率為位異步收發(fā),波特率為fosc/64fosc/64或或fosc/32fosc/32 1 1 3 9 1 1 3 9位異步收發(fā),波特率可變(由定時(shí)器控制)位異步收發(fā),波特率可變(由定時(shí)器控制)43/5(2 2)SM2 SM2 多機(jī)通信控制位多機(jī)通信控制位 用于方式用于方式2 2或方式或方式3 3中。中。 當(dāng)串行口以當(dāng)串行口以方式方式2 2或方式或方式3 3接收接收時(shí),時(shí), 如果如果SM2=1SM2=1,并置,并置“1 1” RI RI,產(chǎn)生中斷請,產(chǎn)生中斷請求;當(dāng)接收到的第求;當(dāng)接收到的第9 9位數(shù)據(jù)(位數(shù)據(jù)(R

5、B8RB8)為)為“0 0”時(shí),則將接收到的時(shí),則將接收到的前前8 8位數(shù)據(jù)丟棄。位數(shù)據(jù)丟棄。 如果如果SM2=0SM2=0,則,則不論不論第第9 9位數(shù)據(jù)是位數(shù)據(jù)是“1 1”還是還是“0 0”,都將前,都將前8 8位數(shù)位數(shù)據(jù)送入據(jù)送入SBUFSBUF中,并置中,并置“1 1” RI RI,產(chǎn)生中斷請求。,產(chǎn)生中斷請求。 在方式在方式1 1時(shí),如果時(shí),如果SM2=1SM2=1,則只有收到停止位時(shí)才會(huì)激活,則只有收到停止位時(shí)才會(huì)激活RIRI。 在方式在方式0 0時(shí),時(shí),SM2SM2必須為必須為0 0。43/6(3 3)RENREN允許串行接收位允許串行接收位 由軟件置由軟件置“1 1”或清或清“

6、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時(shí),時(shí),TB8TB8是要發(fā)送的第是要發(fā)送的第9 9位數(shù)據(jù),標(biāo)志。位數(shù)據(jù),標(biāo)志。 =1=1為地址幀為地址幀, =0, =0為數(shù)據(jù)幀可作為奇偶校驗(yàn)為數(shù)據(jù)幀可作為奇偶校驗(yàn)位使用,也可作為地址幀或數(shù)據(jù)幀的位使用,也可作為地址幀或數(shù)據(jù)幀的(5 5)RB8RB8接收到的第接收到的第9 9位位數(shù)據(jù)數(shù)據(jù)方式方式2 2和和3 3時(shí),時(shí),RB8RB8存放接收到的第存放接收到的第9 9位數(shù)據(jù)。在方位

7、數(shù)據(jù)。在方式式1 1,如果,如果SM2=0SM2=0,RB8RB8是接收到的停止位。在方式是接收到的停止位。在方式0 0,不使用不使用RB8RB8。43/7(6 6)TITI發(fā)送中斷標(biāo)志位發(fā)送中斷標(biāo)志位 方式方式0 0時(shí)時(shí),串行發(fā)送第,串行發(fā)送第8 8位數(shù)據(jù)位數(shù)據(jù)結(jié)束結(jié)束時(shí)由硬件置時(shí)由硬件置“1 1”,其它工作方式其它工作方式,串行口發(fā)送,串行口發(fā)送停止位停止位的開始時(shí)置的開始時(shí)置“1 1”。 TI=1TI=1,表示一幀數(shù)據(jù)發(fā)送結(jié)束,可供軟件查詢,也可申請中斷。,表示一幀數(shù)據(jù)發(fā)送結(jié)束,可供軟件查詢,也可申請中斷。CPUCPU響應(yīng)中斷后響應(yīng)中斷后, ,在中斷服務(wù)程序中向在中斷服務(wù)程序中向SBUF

8、SBUF寫入要發(fā)送的下一幀數(shù)寫入要發(fā)送的下一幀數(shù)據(jù)。據(jù)。TITI必須由必須由軟件軟件清清0 0。(7 7)RIRI接收中斷標(biāo)志位接收中斷標(biāo)志位 方式方式0 0時(shí)時(shí),接收完第,接收完第8 8位數(shù)據(jù)時(shí),位數(shù)據(jù)時(shí),RIRI由硬件置由硬件置1 1。其它工作方式其它工作方式,串行接收到停止位時(shí),該位置,串行接收到停止位時(shí),該位置“1 1”。 RI=1RI=1,表示一幀數(shù)據(jù)接收完畢,并申請中斷,表示一幀數(shù)據(jù)接收完畢,并申請中斷, ,要求要求CPUCPU從接收從接收SBUFSBUF取走數(shù)據(jù)。該位的狀態(tài)也可供軟件查詢。取走數(shù)據(jù)。該位的狀態(tài)也可供軟件查詢。RIRI必須由必須由軟件軟件清清“0 0”。43/87.

9、1.2 7.1.2 特殊功能寄存器特殊功能寄存器PCONPCON 字節(jié)地址為字節(jié)地址為87H87H,沒有位尋址功能。,沒有位尋址功能。SMODSMOD:波特率選擇位。:波特率選擇位。 例如:方式例如:方式1 1的波特率的計(jì)算公式為:的波特率的計(jì)算公式為: 方式方式1 1波特率波特率= =(2 2SMODSMOD/32/32)定時(shí)器定時(shí)器T1T1的溢的溢出率出率當(dāng)當(dāng)SMOD=1SMOD=1時(shí),要比時(shí),要比SMOD=0SMOD=0時(shí)的波特率加倍,時(shí)的波特率加倍,也稱也稱SMODSMOD位為位為波特率倍增位波特率倍增位。43/97.2 7.2 串行口的串行口的4 4種工作方式種工作方式7.2.1 7

10、.2.1 方式方式0 0 同步移位寄存器同步移位寄存器輸入輸出方式,常用于外接移位寄輸入輸出方式,常用于外接移位寄存器,以擴(kuò)展并行存器,以擴(kuò)展并行I/OI/O口???。 8 8位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接收最低位。波特率固定為收最低位。波特率固定為fosc/12fosc/12。幀格式如下:。幀格式如下:43/101 1方式方式0 0發(fā)送發(fā)送 當(dāng)當(dāng)CPUCPU執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器SBUFSBUF的指令時(shí),產(chǎn)生一個(gè)正脈沖,串行口即把的指令時(shí),產(chǎn)生一個(gè)正脈沖,串行口即把SBUFSBUF中的中的8 8位數(shù)據(jù)以

11、位數(shù)據(jù)以fosc/12fosc/12的固定波特率從的固定波特率從RXDRXD引腳串行輸出,低位在先引腳串行輸出,低位在先, ,TXDTXD引腳輸出引腳輸出同步移位脈沖同步移位脈沖,發(fā)送完,發(fā)送完8 8位數(shù)據(jù)置位數(shù)據(jù)置“1 1”中斷中斷標(biāo)志位標(biāo)志位TITI。43/112 2方式方式0 0接收接收 方式方式0 0接收時(shí),接收時(shí),RENREN為串行口接收允許接收控制位,為串行口接收允許接收控制位,RENREN=0=0,禁止接收;,禁止接收;REN=1REN=1,允許接收。,允許接收。當(dāng)當(dāng)CPUCPU向串行口的向串行口的SCONSCON寄存器寫入控制字(置為方式寄存器寫入控制字(置為方式0 0,并置并

12、置“1 1”RENREN位,同時(shí)位,同時(shí)RI=0RI=0)時(shí),產(chǎn)生一個(gè)正脈沖,串)時(shí),產(chǎn)生一個(gè)正脈沖,串行口即開始接收數(shù)據(jù)。引腳行口即開始接收數(shù)據(jù)。引腳RXDRXD為數(shù)據(jù)輸入端,為數(shù)據(jù)輸入端,TXDTXD為移為移位脈沖信號(hào)輸出端位脈沖信號(hào)輸出端,接收器也以,接收器也以fosc/12fosc/12的固定波特率的固定波特率采樣采樣RXDRXD引腳的數(shù)據(jù)信息,當(dāng)接收到引腳的數(shù)據(jù)信息,當(dāng)接收到8 8位數(shù)據(jù)時(shí)置位數(shù)據(jù)時(shí)置“1 1”中中斷標(biāo)志斷標(biāo)志RIRI。表示數(shù)據(jù)接收完畢,可接收下一幀數(shù)據(jù)的。表示數(shù)據(jù)接收完畢,可接收下一幀數(shù)據(jù)的。43/12方式方式0 0下:下:1 1)SCONSCON中的中的TB8TB

13、8、RB8RB8位沒有用到位沒有用到2 2)發(fā)送或接收完)發(fā)送或接收完8 8位數(shù)據(jù)由硬件置位數(shù)據(jù)由硬件置“1 1”TITI或或RIRI中斷中斷標(biāo)志位,標(biāo)志位,CPUCPU響應(yīng)中斷。響應(yīng)中斷。3 3)TITI或或RIRI標(biāo)志位須由用戶軟件清標(biāo)志位須由用戶軟件清“0 0” :CLR TICLR TI;TITI位清位清“0 0”CLR RI CLR RI ;RIRI位清位清“0 0”4 4)方式)方式0 0時(shí),時(shí),SM2SM2位(多機(jī)通訊控制位)必須為位(多機(jī)通訊控制位)必須為0 0。43/13方式方式0 0下:下:接收、發(fā)送的移位時(shí)鐘接收、發(fā)送的移位時(shí)鐘均由單片機(jī)均由單片機(jī)TXDTXD端輸出端輸出

14、43/14例:利用串行口例:利用串行口工作方式工作方式0 0擴(kuò)展出擴(kuò)展出8 8位并行位并行I/OI/O口,口,驅(qū)動(dòng)共陽驅(qū)動(dòng)共陽LEDLED數(shù)碼管顯示數(shù)碼管顯示0 09 9。A AB BCLKCLKh g f e d c b ah g f e d c b aCLRCLR+5V+5VVCCVCCTxDTxDRxDRxD51單片機(jī)單片機(jī)74LS164共陽共陽LEDLED數(shù)碼管數(shù)碼管43/15根據(jù)上圖編寫的通過串行口和根據(jù)上圖編寫的通過串行口和74LS164 74LS164 驅(qū)動(dòng)共陽驅(qū)動(dòng)共陽LEDLED數(shù)碼管數(shù)碼管( (查表查表) )顯示顯示0-90-9數(shù)字的子程序:數(shù)字的子程序:DSPLY:MOV

15、DPTR, #TABLEDSPLY:MOV DPTR, #TABLE MOVC A, MOVC A, A+DPTRA+DPTR MOV SBUF, A MOV SBUF, A JNB TI, $ JNB TI, $ CLR TI CLR TI RET RETTABLE:DB 0C0H,0F9H,0A4HTABLE:DB 0C0H,0F9H,0A4H DB 0B0H,99H,92H DB 0B0H,99H,92H DB 82H,0F8H,80H,90H DB 82H,0F8H,80H,90Hh g f e d c b ah g f e d c b a累加器累加器 A1 1 0 0 0 0 0 0

16、1 1 0 0 0 0 0 00C0H = 0C0H = “0 0”1 0 1 1 0 0 0 01 0 1 1 0 0 0 00B0H = 0B0H = “3 3”共陽極共陽極h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh h43/167.2.2 7.2.2 方式方式1 1 SM0 SM0、SM1=01SM1=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個(gè)起始位(個(gè)起始

17、位(0 0),),8 8個(gè)數(shù)據(jù)位,個(gè)數(shù)據(jù)位,1 1個(gè)停止位(個(gè)停止位(1 1),先發(fā)送或接收最低位。幀),先發(fā)送或接收最低位。幀格式如圖所示。格式如圖所示。波特率由下式確定:波特率由下式確定:方式方式1 1波特率波特率= = (2 2SMODSMOD/32/32) 定時(shí)器定時(shí)器T1T1的溢出率的溢出率SMODSMOD為為PCONPCON寄存器的最高位的值(寄存器的最高位的值(0 0或或1 1)。)。 43/17 1 1方式方式1 1發(fā)送發(fā)送 方式方式1 1輸出時(shí),數(shù)據(jù)位由輸出時(shí),數(shù)據(jù)位由TXDTXD端輸出,端輸出, 一幀信息為一幀信息為1010位,位,1 1位起始位位起始位0 0,8 8位數(shù)據(jù)

18、位位數(shù)據(jù)位(先低位)和(先低位)和1 1位停止位位停止位1 1。 當(dāng)當(dāng)CPUCPU執(zhí)行一條數(shù)據(jù)寫發(fā)送緩沖器執(zhí)行一條數(shù)據(jù)寫發(fā)送緩沖器SBUFSBUF的指令,的指令,就就啟動(dòng)啟動(dòng)發(fā)送。圖中發(fā)送。圖中TXTX時(shí)鐘的頻率就是發(fā)送的波特率。時(shí)鐘的頻率就是發(fā)送的波特率。發(fā)送開始時(shí),內(nèi)部發(fā)送控制信號(hào)變?yōu)橛行?。將起始發(fā)送開始時(shí),內(nèi)部發(fā)送控制信號(hào)變?yōu)橛行?。將起始位向位向TXDTXD輸出,此后,每經(jīng)過一個(gè)輸出,此后,每經(jīng)過一個(gè)TXTX時(shí)鐘周期,便時(shí)鐘周期,便產(chǎn)生一個(gè)移位脈沖,并由產(chǎn)生一個(gè)移位脈沖,并由TXDTXD輸出一個(gè)數(shù)據(jù)位。輸出一個(gè)數(shù)據(jù)位。8 8位位數(shù)據(jù)位全部發(fā)送完畢后,置數(shù)據(jù)位全部發(fā)送完畢后,置“1 1”中

19、斷標(biāo)志位中斷標(biāo)志位TITI,然,然后失效。后失效。43/18 1 1方式方式1 1發(fā)送發(fā)送 方式方式1 1發(fā)送數(shù)據(jù)的時(shí)序,發(fā)送數(shù)據(jù)的時(shí)序,如圖所如圖所示。示。43/192 2方式方式1 1接收接收 數(shù)據(jù)從數(shù)據(jù)從RXDRXD(P3.0P3.0)引腳輸入。當(dāng)檢測到起始位的負(fù)跳變)引腳輸入。當(dāng)檢測到起始位的負(fù)跳變時(shí),則開始接收。時(shí),則開始接收。定時(shí)控制信號(hào)有兩種:定時(shí)控制信號(hào)有兩種: 一種一種是接收移位時(shí)鐘(是接收移位時(shí)鐘(RXRX時(shí)鐘),它的頻率和傳送的時(shí)鐘),它的頻率和傳送的波特率相同。波特率相同。 另一種另一種是位檢測器采樣脈沖,它的頻率是是位檢測器采樣脈沖,它的頻率是RXRX時(shí)鐘的時(shí)鐘的16

20、16倍。也就是在倍。也就是在1 1位數(shù)據(jù)期間,有位數(shù)據(jù)期間,有1616個(gè)采樣脈沖,以波特率個(gè)采樣脈沖,以波特率的的1616倍的速率倍的速率采樣采樣RXDRXD引腳狀態(tài),當(dāng)采樣到引腳狀態(tài),當(dāng)采樣到RXDRXD端從端從1 1到到0 0的的跳變時(shí)就啟動(dòng)檢測器,跳變時(shí)就啟動(dòng)檢測器,接收的值是接收的值是3 3次連續(xù)采樣(第次連續(xù)采樣(第7 7、8 8、9 9個(gè)脈沖時(shí)采樣)個(gè)脈沖時(shí)采樣)取其中兩次相同的值,以取其中兩次相同的值,以確認(rèn)確認(rèn)是否是真是否是真正的起始位(負(fù)跳變)的開始。正的起始位(負(fù)跳變)的開始。43/202 2方式方式1 1接收接收 43/2143/22當(dāng)一幀數(shù)據(jù)接收完畢以后,必須同時(shí)滿足以

21、下兩個(gè)條件,當(dāng)一幀數(shù)據(jù)接收完畢以后,必須同時(shí)滿足以下兩個(gè)條件,這次接收才真正有效。這次接收才真正有效。 RI=0RI=0,即上一幀數(shù)據(jù)接收完成時(shí),即上一幀數(shù)據(jù)接收完成時(shí),RI=1RI=1發(fā)出的中斷請發(fā)出的中斷請求已被響應(yīng),求已被響應(yīng),SBUFSBUF中的數(shù)據(jù)已被取走,說明中的數(shù)據(jù)已被取走,說明“接收接收SBUFSBUF”已空。已空。 SM2=0SM2=0或或 SM2=1SM2=1且且收到的收到的停止位停止位=1=1(方式(方式1 1時(shí),停止位已進(jìn)入時(shí),停止位已進(jìn)入RB8RB8),則收到的數(shù)據(jù)裝入),則收到的數(shù)據(jù)裝入SBUFSBUF和和RB8RB8(RB8RB8裝入停止位),裝入停止位),且置且

22、置“1 1”中斷標(biāo)志中斷標(biāo)志RIRI。若這兩個(gè)條件不同時(shí)滿足,收到的數(shù)據(jù)不能裝入若這兩個(gè)條件不同時(shí)滿足,收到的數(shù)據(jù)不能裝入SBUFSBUF,該幀數(shù)據(jù)將丟失。該幀數(shù)據(jù)將丟失。43/237.2.3 7.2.3 方式方式2 29 9位異步通信接口。位異步通信接口。每幀數(shù)據(jù)均為每幀數(shù)據(jù)均為1111位位,1 1位起始位位起始位0 0,8 8位數(shù)據(jù)位(先低位),位數(shù)據(jù)位(先低位),1 1位可程控的第位可程控的第9 9位數(shù)據(jù)位數(shù)據(jù)和和1 1位停止位。幀格式見下圖。位停止位。幀格式見下圖。 (TB8TB8)方式方式2 2的波特率由下式確定:的波特率由下式確定:方式方式2 2波特率波特率= = (2 2SMOD

23、SMOD/64/64)foscfosc43/241 1方式方式2 2發(fā)送發(fā)送發(fā)送前,先根據(jù)通訊協(xié)議由軟件發(fā)送前,先根據(jù)通訊協(xié)議由軟件設(shè)置設(shè)置TB8TB8(例如,(例如,雙機(jī)通訊時(shí)的雙機(jī)通訊時(shí)的奇偶奇偶校驗(yàn)位或多機(jī)通訊時(shí)的校驗(yàn)位或多機(jī)通訊時(shí)的地址地址/ /數(shù)數(shù)據(jù)據(jù)的標(biāo)志位)。的標(biāo)志位)。方式方式2 2發(fā)送數(shù)據(jù)波形如圖所示。發(fā)送數(shù)據(jù)波形如圖所示。43/25例例7-1 7-1 方式方式2 2發(fā)送在雙機(jī)通訊中的應(yīng)用。發(fā)送在雙機(jī)通訊中的應(yīng)用。在雙機(jī)通訊中,以在雙機(jī)通訊中,以TB8TB8作為奇偶校驗(yàn)位,處理方法為數(shù)據(jù)作為奇偶校驗(yàn)位,處理方法為數(shù)據(jù)寫入寫入SBUFSBUF之前,先將數(shù)據(jù)的奇偶校驗(yàn)位寫入之前,

24、先將數(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ū)組工作寄存器區(qū) CLR RS0CLR RS0 CLR TI CLR TI ;發(fā)送中斷標(biāo)志清;發(fā)送中斷標(biāo)志清“0 0” MOV A MOV 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 MO

25、V SBUF ,A ;啟動(dòng)發(fā)送;啟動(dòng)發(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 ;中斷返回;中斷返回43/262 2方式方式2 2接收接收 SM0SM0、SM1=10SM1=10,且,且REN=1REN=1。數(shù)據(jù)由。數(shù)據(jù)由RXDRXD端輸入,接收端輸入,接收1111位位信息。當(dāng)位檢測邏輯采樣到信息。當(dāng)位檢測邏輯采樣到RXDRXD引腳從引腳從1 1到到0 0的負(fù)跳變,的負(fù)跳變,并判斷起始位有效后,便開始接收一幀信息。在接收器并判斷起始位有效后,便開始接收一幀信息。在接收

26、器完第完第9 9位數(shù)據(jù)后,需滿足以下兩個(gè)條件,才能將接收到位數(shù)據(jù)后,需滿足以下兩個(gè)條件,才能將接收到的數(shù)據(jù)送入的數(shù)據(jù)送入SBUFSBUF。 (1 1)RI=0RI=0,意味著接收緩沖器為空。,意味著接收緩沖器為空。(2 2)SM2=0SM2=0或當(dāng)或當(dāng)SM2=1SM2=1時(shí),接收到第時(shí),接收到第9 9位數(shù)據(jù)位位數(shù)據(jù)位RB8=1RB8=1。當(dāng)上述兩個(gè)條件滿足時(shí),接收到的數(shù)據(jù)送入當(dāng)上述兩個(gè)條件滿足時(shí),接收到的數(shù)據(jù)送入SBUFSBUF(接收(接收緩沖器),第緩沖器),第9 9位數(shù)據(jù)送入位數(shù)據(jù)送入RB8RB8,并置,并置“1 1”RIRI。若不滿足。若不滿足這兩個(gè)條件,接收的信息將被丟棄。這兩個(gè)條件,

27、接收的信息將被丟棄。43/272 2方式方式2 2接收接收 串行口方式串行口方式2 2接收數(shù)據(jù)的時(shí)序波形如圖所示。接收數(shù)據(jù)的時(shí)序波形如圖所示。43/28例例7-2 7-2 方式方式2 2接收在雙機(jī)通訊中的應(yīng)用。接收在雙機(jī)通訊中的應(yīng)用。若附加的第若附加的第9 9位數(shù)據(jù)為校驗(yàn)位,位數(shù)據(jù)為校驗(yàn)位,偶偶校驗(yàn)處理,校驗(yàn)處理,R0R0為數(shù)據(jù)指為數(shù)據(jù)指針。針。 PIRI: PIRI: PUSH PSWPUSH PSWPUSH AccPUSH AccSETB RS0 SETB RS0 ;選擇;選擇1 1組寄存器區(qū)組寄存器區(qū)CLR RS1CLR RS1CLR RICLR RI MOV A,SBUF MOV A,

28、SBUF ;收到數(shù)據(jù)送;收到數(shù)據(jù)送A AMOV C,PMOV C,P ;P=1 P=1 奇數(shù),奇數(shù),P=0 P=0 偶數(shù)偶數(shù)JNC L1JNC L1JNB RB8,JNB RB8,ERPERP ;ERPERP為出錯(cuò)處理程序?yàn)槌鲥e(cuò)處理程序AJMP L2AJMP L2 L1: L1: JB RB8,JB RB8,ERPERP L2: L2: MOV R0,AMOV R0,A INC R0INC R0 POP AccPOP Acc POP PSWPOP PSW ERP:ERP: ;出錯(cuò)處理程序段;出錯(cuò)處理程序段RETIRETI43/297.2.4 7.2.4 方式方式3 3 當(dāng)當(dāng)SM0SM0、SM1

29、=11SM1=11,串行口工作在方式,串行口工作在方式3 3。方式方式3 3為波特率為波特率可變可變的的9 9位異步通訊方式,除位異步通訊方式,除波特率外,方式波特率外,方式3 3和方式和方式2 2相同。方式相同。方式3 3發(fā)送和發(fā)送和接收數(shù)據(jù)的時(shí)序波形見方式接收數(shù)據(jù)的時(shí)序波形見方式2 2的圖。的圖。方式方式3 3的波特率由下式確定:的波特率由下式確定: 方式方式3 3波特率波特率= =(2 2SMODSMOD/32/32)定時(shí)器定時(shí)器T1T1的的溢出率溢出率43/30多個(gè)多個(gè)MCS-51MCS-51單片機(jī)可利用串行口可進(jìn)行多機(jī)通訊。單片機(jī)可利用串行口可進(jìn)行多機(jī)通訊。要保證主機(jī)與所選擇的從機(jī)實(shí)

30、現(xiàn)可靠地通訊,必須保證串要保證主機(jī)與所選擇的從機(jī)實(shí)現(xiàn)可靠地通訊,必須保證串行口具有行口具有識(shí)別功能識(shí)別功能。串行口控制寄存器串行口控制寄存器SCONSCON中的中的SM2SM2位就是滿足這一條位就是滿足這一條件而設(shè)置的件而設(shè)置的多機(jī)通訊控制位多機(jī)通訊控制位。原理是在串行口以方式。原理是在串行口以方式2 2(或方式(或方式3 3)接收時(shí),)接收時(shí),若若SM2=1SM2=1,表示置多機(jī)通訊功能位,表示置多機(jī)通訊功能位,這時(shí)出現(xiàn)兩種可能情況:這時(shí)出現(xiàn)兩種可能情況: (1 1)接收到的第接收到的第9 9位數(shù)據(jù)為位數(shù)據(jù)為1 1時(shí),數(shù)據(jù)才裝入時(shí),數(shù)據(jù)才裝入SBUFSBUF,并置中斷標(biāo)志并置中斷標(biāo)志RI=1

31、RI=1向向CPUCPU發(fā)出中斷請求;發(fā)出中斷請求; (2 2)接收到的第接收到的第9 9位數(shù)據(jù)為位數(shù)據(jù)為0 0時(shí),則不產(chǎn)生中斷標(biāo)志,時(shí),則不產(chǎn)生中斷標(biāo)志,信息將信息將拋棄拋棄。若若SM2=0SM2=0,則接收的第則接收的第9 9位數(shù)據(jù)不論是位數(shù)據(jù)不論是0 0還是還是1 1,都產(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ī)通訊7.3 多機(jī)通訊多機(jī)通訊43/31 主機(jī)的主機(jī)的RXDRXD與所有從機(jī)的與所有從機(jī)的TXDTXD端相連,端相連,TXDTXD與與所

32、有從機(jī)的所有從機(jī)的RXDRXD端相連。從機(jī)的地址分別為端相連。從機(jī)的地址分別為00H00H、01H01H和和02H02H。多機(jī)通訊工作過程:多機(jī)通訊工作過程:(1 1)從機(jī)串行口編程為方式)從機(jī)串行口編程為方式2 2或方式或方式3 3接收,且接收,且置置“1 1”SM2SM2和和RENREN位,使從機(jī)只處于多機(jī)通訊且接位,使從機(jī)只處于多機(jī)通訊且接收地址幀的狀態(tài)。收地址幀的狀態(tài)。主機(jī):主機(jī):SM2=0SM2=0,TB8=1TB8=1(都能收到)(都能收到)從機(jī):從機(jī): SM2=1SM2=143/32 (2 2)在主機(jī)先將)在主機(jī)先將從機(jī)地址從機(jī)地址(即準(zhǔn)備接收數(shù)據(jù)的從機(jī))(即準(zhǔn)備接收數(shù)據(jù)的從機(jī))

33、發(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ā)送地址時(shí),各從機(jī)的串行當(dāng)主機(jī)向各從機(jī)發(fā)送地址時(shí),各從機(jī)的串行口接收到的第口接收到的第9 9位信息位信息RB8RB8為為1 1,且由于,且由于SM2=1SM2=1,則置,則置“1 1”中斷標(biāo)志位中斷標(biāo)志位RIRI,各從機(jī),各從機(jī)80318031響應(yīng)中斷,執(zhí)行中響應(yīng)中斷,執(zhí)行中斷服務(wù)程序。在中斷服務(wù)子程序中,斷服務(wù)程序。在中斷服務(wù)子程序中,判斷判斷主機(jī)送來的主機(jī)送來的地址是否

34、和本機(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)。主機(jī):主機(jī):SM2=0SM2=0,TB8=1 SBUFTB8=1 SBUF:通訊從機(jī)地址:通訊從機(jī)地址從機(jī):從機(jī): SM2=1 SM2=1 所有從機(jī)均可以接收所有從機(jī)均可以接收43/33(3 3)接著主機(jī)發(fā)送數(shù)據(jù)幀,此時(shí)各從機(jī)串行口接收到)接著主機(jī)發(fā)送數(shù)據(jù)幀,此時(shí)各從機(jī)串行口接收到 的的RB8=0RB8=0,只有與前面地址相符合的從機(jī)系統(tǒng)(即,只有與前

35、面地址相符合的從機(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ī)和從機(jī)間通訊的正確性。主機(jī):主機(jī):SM2=0SM2=0,TB8=0 TB8=0 符合地址從機(jī):符

36、合地址從機(jī):SM2=0 SM2=0 可以接收主機(jī)數(shù)據(jù)可以接收主機(jī)數(shù)據(jù) 不符合地址從機(jī):不符合地址從機(jī): SM2=1 SM2=1 所有從機(jī)均不能接收所有從機(jī)均不能接收 前圖所示的多機(jī)系統(tǒng)是前圖所示的多機(jī)系統(tǒng)是主從式主從式,由主機(jī)控制多機(jī)之間,由主機(jī)控制多機(jī)之間 的通訊,從機(jī)和從機(jī)的通訊只能經(jīng)主機(jī)才能實(shí)現(xiàn)。的通訊,從機(jī)和從機(jī)的通訊只能經(jīng)主機(jī)才能實(shí)現(xiàn)。43/347.4 7.4 波特率的制定方法波特率的制定方法方式方式0 0和方式和方式2 2的波特率是固定的;方式的波特率是固定的;方式1 1和方式和方式3 3波特波特 率可由定時(shí)器率可由定時(shí)器T1T1的溢出率來確定。的溢出率來確定。7.4.1 7.4.

37、1 波特率的定義波特率的定義 定義:定義:串行口每秒鐘發(fā)送(或接收)的位數(shù)稱為波串行口每秒鐘發(fā)送(或接收)的位數(shù)稱為波特率。特率。 對于定時(shí)器的不同工作方式,得到的波特率的范圍對于定時(shí)器的不同工作方式,得到的波特率的范圍不一樣,因?yàn)?,?jì)數(shù)位數(shù)的不同。不一樣,因?yàn)椋?jì)數(shù)位數(shù)的不同。43/357.4 7.4 波特率的制定方法波特率的制定方法7.4.2 7.4.2 定時(shí)器定時(shí)器T1T1產(chǎn)生波特率的計(jì)算產(chǎn)生波特率的計(jì)算 (1 1)方式)方式0 0,波特率固定為時(shí)鐘頻率,波特率固定為時(shí)鐘頻率foscfosc的的1/121/12,且不受且不受SMODSMOD位的值的影響。若位的值的影響。若fosc=12M

38、Hzfosc=12MHz,波特率為,波特率為fosc/12fosc/12即即1Mb/s1Mb/s。 (2 2)方式)方式2 2,波特率與,波特率與SMODSMOD位的值有關(guān)。位的值有關(guān)。 方式方式2 2波特率波特率= = (2 2SMODSMOD/64/64)foscfosc 若若fosc=12MHz: SMOD=0 fosc=12MHz: SMOD=0 波特率波特率=187.5kb/s=187.5kb/s; SMOD=1 SMOD=1 波特率波特率=375kb/s=375kb/s43/36(3 3)串行口工作在方式)串行口工作在方式1 1或方式或方式3 3時(shí),常用定時(shí)器時(shí),常用定時(shí)器T1T1

39、作作為波特率發(fā)生器,其波特率為:為波特率發(fā)生器,其波特率為:波特率波特率= = (2 2SMODSMOD/32/32)T1T1的溢出率的溢出率實(shí)際設(shè)定波特率時(shí),實(shí)際設(shè)定波特率時(shí),T1T1常設(shè)置為方式常設(shè)置為方式2 2定時(shí)(自動(dòng)裝初定時(shí)(自動(dòng)裝初值)這種方式值)這種方式不僅不僅操作方便,也可操作方便,也可避免避免因軟件重裝初因軟件重裝初值而帶來的值而帶來的定時(shí)誤差定時(shí)誤差。實(shí)際使用時(shí),經(jīng)常根據(jù)已知波特率和時(shí)鐘頻率來計(jì)算實(shí)際使用時(shí),經(jīng)常根據(jù)已知波特率和時(shí)鐘頻率來計(jì)算T1T1的的初值初值X X。公式:公式:為避免煩雜的初值計(jì)算,常用的波特率和初值為避免煩雜的初值計(jì)算,常用的波特率和初值X X間的關(guān)間的關(guān)系列成表系列成表7-2(P148)7-2(P148),以供查用。,以供查用。SMOD/12232256oscfX波特率43/37表表7-27-2有兩點(diǎn)需要注意:有兩點(diǎn)需要注意:(1)(1) 時(shí)鐘振蕩頻率為時(shí)鐘振蕩頻率為12

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論