第五章串行接口_第1頁
第五章串行接口_第2頁
第五章串行接口_第3頁
第五章串行接口_第4頁
第五章串行接口_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第五章串行接口

第一節(jié)串行通信概述

第二節(jié)MCS-51單片機(jī)的串行接口

第三節(jié)串行口應(yīng)用舉例

第一節(jié)串行通信概述

一、數(shù)據(jù)通信的概念

基本的數(shù)據(jù)通信方式有兩種,即并行通信和串行通信:并行通信數(shù)據(jù)的各位同時(shí)進(jìn)行傳送(發(fā)送或接收)的通信方式。其優(yōu)點(diǎn)是數(shù)據(jù)傳送速度快;缺點(diǎn)是數(shù)據(jù)有多少位,就需要多少根傳送線。串行通信數(shù)據(jù)的各位一位一位順序傳送的通信方式。其優(yōu)點(diǎn)是數(shù)據(jù)傳送線少.缺點(diǎn)是傳送速度較低.二、串行通信中數(shù)據(jù)的傳送方向串行通信中數(shù)據(jù)的傳送方向有三種:1.單向(或單工)配置:只允許數(shù)據(jù)向一個(gè)方向傳送;2.半雙向(或半雙工)配置:允許數(shù)據(jù)向兩個(gè)方向中的任一方向傳送,但每次只允許一個(gè)方向傳送;3.全雙向(全雙工)配置:允許數(shù)據(jù)同時(shí)雙向傳送.三、異步通信和同步通信1.異步通信在異步通信中,數(shù)據(jù)是一幀一幀(包含一個(gè)字符代碼或一字節(jié)數(shù)據(jù))傳送的,每一串行幀的數(shù)據(jù)格式如圖5-3所示。在幀格式中,一個(gè)字符由四個(gè)部分組成:起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位。即首先是一個(gè)起始位“0”,然后是5~8位數(shù)據(jù)(規(guī)定低位在前,高位在后),接下來是奇偶校驗(yàn)位(可省略),最后是停止位“1”。2.同步通信在同步通信中,數(shù)據(jù)開始傳送前用同步字符來指示(常約定1~2個(gè)),并由時(shí)鐘來實(shí)現(xiàn)發(fā)送端和接收端同步,即檢測到規(guī)定的同步字符后,下面就連續(xù)按順序傳送數(shù)據(jù),直到通信告一段落。在同步傳送時(shí),要求用時(shí)鐘來實(shí)現(xiàn)發(fā)送端與接收端之間的同步。為了保證接收正確無誤,發(fā)送方除了傳送數(shù)據(jù)外,還要把時(shí)鐘信號同時(shí)傳送。四、串-并轉(zhuǎn)換問題

在MCS-51單片機(jī)中,串-并、并-串轉(zhuǎn)換是由串行口的移位寄存器來自動完成的五、串行通信協(xié)議

通信協(xié)議是對數(shù)據(jù)傳送方式的規(guī)定,包括數(shù)據(jù)格式定義和數(shù)據(jù)位定義等。通信方式必須遵從統(tǒng)一的通信協(xié)議。1.起始位:當(dāng)通信線上沒有數(shù)據(jù)被傳送時(shí),通信線應(yīng)處于邏輯“1”狀態(tài)(高電平)。當(dāng)發(fā)送設(shè)備要發(fā)送一個(gè)字符數(shù)據(jù)時(shí),首先發(fā)出一個(gè)邏輯“0”信號(低電平),這個(gè)邏輯低電平就是起始位。2.?dāng)?shù)據(jù)位:當(dāng)接收設(shè)備收到起始位后,緊接著就會收到數(shù)據(jù)位。

3.奇偶校驗(yàn)位:。奇偶校驗(yàn)用于有限差錯(cuò)檢測,通信雙方應(yīng)約定一致的奇偶校驗(yàn)方式.如果選擇偶校驗(yàn),那么組成數(shù)據(jù)位和奇偶位的邏輯“1”的個(gè)數(shù)必須是偶數(shù);如果選擇奇校驗(yàn),那么邏輯“1”的個(gè)數(shù)必須是奇數(shù)。4.停止位約定:停止位是一個(gè)字符數(shù)據(jù)的結(jié)束標(biāo)志,可以是1位或多位的高電平。5.波特率設(shè)置:每秒傳送多少個(gè)二進(jìn)制位,叫波特率,它的單位是位/秒(b/s或bps)。6.允許的波特率誤差:對于常用的8位、9位和11位一幀的串行傳送,其最大的波特率允許誤差分別為6.25%、5.56%和4.5%。六、串行通信的校驗(yàn)

(1)奇偶校驗(yàn)(2)和校驗(yàn)(3)循環(huán)冗余碼校驗(yàn)

第二節(jié)MCS-51單片機(jī)的串行接口

一、MCS-51串行口的結(jié)構(gòu)

MCS-51單片機(jī)內(nèi)部的串行口有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器SBUF,可同時(shí)接收和發(fā)送數(shù)據(jù)。發(fā)送緩沖器只能寫入不能讀出,接收緩沖器只能讀出不能寫入。兩個(gè)緩沖器占用同一個(gè)地址(99H)??刂芃CS-51單片機(jī)串行口的控制寄存器共有兩個(gè),即特殊功能寄存器SCON和PCON。

1.串行口控制寄存器SCON

(字節(jié)地址為98H)

D7D6D5D4D3D2D1D0SCONSM0SM1SM2RENTB8RB8TIRI位地址9F9E9D9C9B9A9998SCON中的各位含義如下:

M0、SM1:串行口的工作方式選擇位

SM0SM1工作方式功能說明波特率000110110123移位寄存器方式(用于擴(kuò)展I/O口)10位異步收發(fā)方式11位異步收發(fā)方式11位異步收發(fā)方式fosc/12由T1控制fosc/64或fosc/32由T1控制SM2:多機(jī)通信控制位。在方式2或方式3中,如果SM2=1,則接收到的第9位數(shù)據(jù)(RB8)為0時(shí)不激活RI,接收到的數(shù)據(jù)丟失;只有當(dāng)收到的第9位數(shù)據(jù)(RB8)為1時(shí)才激活RI,向CPU申請中斷。如果SM2=0,則不論收到的第9位數(shù)據(jù)(RB8)為1還是為0,都會將接收的前8數(shù)據(jù)裝入SBUF中。在方式1時(shí),如果SM2=1,則只收到有效的停止位時(shí)才會激活RI;若沒有接收到有效的停止位,則RI清零。在方式0中,SM2必須為0。

REN:允許串行接收控制位。由軟件置位以允許接收,由軟件清零時(shí)禁止接收。TB8:在方式2和方式3時(shí)為要發(fā)送的第9位數(shù)據(jù)。根據(jù)需要由軟件置位和復(fù)位。在多機(jī)通信時(shí),TB8的狀態(tài)用來表示主機(jī)發(fā)送的是地址或是數(shù)據(jù),通常協(xié)議規(guī)定“0”表示數(shù)據(jù),“1”表示地址。RB8:在方式2和方式3時(shí)為接收到的第9位數(shù)據(jù)。RB8和SM2、TB8一起,常用于通信控制。在方式1時(shí),如果SM2=0,RB8接收到的是停止位。在方式0,不使用RB8。

TI:發(fā)送中斷標(biāo)志位。由片內(nèi)硬件在方式0串行發(fā)送第8位結(jié)束時(shí)置位,或在其他方式串行發(fā)送停止位的開始時(shí)置位。必須由軟件清零。RI:接收中斷標(biāo)志位。由片內(nèi)硬件在方式0串行接收到第8位結(jié)束時(shí)置位,或在其他方式串行接收到停止位的中間時(shí)置位。必須由軟件清零。

2.電源控制寄存器PCON]PCON寄存器的D7位為SMOD,稱波特率倍增位。即當(dāng)SMOD=1時(shí),波特率加倍;當(dāng)SMOD=0時(shí),波特率不加倍。

二、串行口的工作方式1.方式0在方式0狀態(tài)下,串行口為同步移位寄存器輸入/輸出方式,其波特率固定為fosc/12。數(shù)據(jù)由RXD(P3.0)端輸入或輸出,同步移位脈沖由TXD(P3.1)端輸出,發(fā)送、接收的是8位數(shù)據(jù),低位在先,高位在后。(1)方式0發(fā)送當(dāng)一個(gè)數(shù)據(jù)寫入串行口發(fā)送緩沖器SBUF時(shí),串行口將8位數(shù)據(jù)以fosc/12的波特率從RXD引腳輸出(從低位到高位),發(fā)送完成后將中斷標(biāo)志TI置1,TXD引腳輸出同步脈沖.其波形如圖5-6所示。

(2)方式0接收在滿足REN=1和RI=0的條件下,就會啟動一次接收過程,此時(shí)RXD為串行輸入端,TXD為同步脈沖輸出端。串行接收的波特率為振蕩頻率fosc的1/12,其時(shí)序如圖5-7所示。當(dāng)接收完一幀數(shù)據(jù)(8位)后,控制信號復(fù)位,中斷標(biāo)志RI被置位,呈中斷申請狀態(tài)。當(dāng)再次接收時(shí),必須通過軟件將RI清零。圖5-6方式0發(fā)送時(shí)序

圖5-7方式0接收時(shí)序

2.方式1當(dāng)SCON中的SM0SM1=01時(shí),串行口以工作方式1工作,此時(shí)串行口為10位異步通信接口。一幀信息為10位:1位起始位,8位數(shù)據(jù)位(低位在先)和1位停止位。TXD為發(fā)送端,RXD為接收端,波特率可變。(1)方式1發(fā)送串行口以方式1發(fā)送時(shí),數(shù)據(jù)由TXD端輸出,CPU執(zhí)行一條寫入SBUF的指令就會啟動串行口發(fā)送,發(fā)送完一幀數(shù)據(jù)信息時(shí),發(fā)送中斷標(biāo)志TI置1。

2)方式1接收當(dāng)REN=1時(shí),接收器便以所選用的波特率的16倍速率采樣RXD引腳狀態(tài),當(dāng)采樣到RXD端從1到0的跳變時(shí)就啟動接收,接收的值是三次采樣中至少兩次相同的值,保證可靠無誤.在起始位,如果接收到的值不為0,則起始位無效,復(fù)位接收電路,當(dāng)再次接收到從1到0的跳變時(shí)重新啟動接收器;如果接收值為0,起始位有效,接收器開始接收本幀的其余信息(一幀信息為10位)。在方式1接收中若同時(shí)滿足以下兩個(gè)條件:RI=0SM2=0或接收到的停止位為1。

方式1的波特率=(2SMOD/32)×定時(shí)器T1的溢出率。3.方式2

當(dāng)SM0SM1=10時(shí),串行口工作在方式2,為11位異步通信口,發(fā)送和接收的一幀信息由11位組成,即1位起始位、8位數(shù)據(jù)位(低位在先)、1位可編程位(第9位數(shù)據(jù)位)和1位停止位。發(fā)送時(shí)可編程位(TB8)根據(jù)需要設(shè)置為0或1(TB8既可作為多機(jī)通信中的地址數(shù)據(jù)標(biāo)志位又可作為數(shù)據(jù)的奇偶校驗(yàn)位);接收時(shí),可編程位被送入SCON中的RB8。

在方式2發(fā)送時(shí),數(shù)據(jù)由TXD端輸出,附加的第9位數(shù)據(jù)為SCON中的TB8,CPU執(zhí)行一條寫SBUF的指令后,便立即啟動發(fā)送器發(fā)送,送完一幀信息后,TI被置1,在發(fā)送下一幀信息之前,TI必須由中斷服務(wù)程序(或查詢程序)清零。

下面是一個(gè)實(shí)際的發(fā)送中斷服務(wù)程序,以TB8作為奇偶校驗(yàn)位,R0為發(fā)送數(shù)據(jù)區(qū)地址指針。SEND:PUSH PSW PUSH ACLR TI

MOV A,@R0 ;取數(shù)據(jù)MOV C,P

MOV TB8,CMOV SBUF,A ;數(shù)據(jù)寫入INC R0 ;數(shù)據(jù)指針加lPOP A ;恢復(fù)現(xiàn)場POP PSWRETI

(2)方式2接收

當(dāng)REN=1時(shí),允許串行口接收數(shù)據(jù)。數(shù)據(jù)由RXD端輸入,接收11位信息。當(dāng)接收器采樣到RXD端的負(fù)跳變,并判斷起始位有效后,便開始接收一幀信息。當(dāng)接收器接收到第9位數(shù)據(jù)后,若同時(shí)滿足以下兩個(gè)條件:RI=0;SM2=0或接收到的第9位數(shù)據(jù)=1

方式2波特率=(2SMOD/64)×fOSC。

下面是一個(gè)實(shí)際的中斷接收服務(wù)程序,該程序具有校驗(yàn)處理功能,R1為接收數(shù)據(jù)緩沖器指針

RECEIVE: PUSH PSW PUSH ACLR RIMOV A,SBUF MOV C,PJNC L1JNB RB8,ER AJMP L2

L1: JB RB8,ER L2: MOV @R1,A INC R1 POP A POP PSWLJMP END0ER: …… END0: RETI

4.方式3當(dāng)SM0SM1=11時(shí),串行口工作在方式3。方式3為波特率可變的11位異步通信方式。方式3波特率=(2SMOD/32)×定時(shí)器T1的溢出率。

三、波特率的計(jì)算

MCS-51單片機(jī)串行口通信的波特率取決于串行口的工作方式。當(dāng)串行口被定義為方式0時(shí),其波特率固定等于。當(dāng)串行口被定義為方式2時(shí),其波特率=,即當(dāng)SMOD=0時(shí),波特率=;當(dāng)SMOD=1時(shí),波特率=。SMOD是PCON寄存器的最高位,通過軟件可設(shè)置SMOD=0或l。因?yàn)镻CON無位尋址功能,所以,要想改變SMOD的值,可通過執(zhí)行以下指令來完成:ANL PCON,#7FH ;使SMOD=0ORL PCON,#80H ;使SMOD=11.T/C1溢出率的計(jì)算

溢出周期=(28-X)×12/

溢出率=1/溢出周期=/[12(28-X)]

2.波特率的設(shè)置由上述可得,當(dāng)串行口工作于方式1或方3、定時(shí)器T/C1工作于方式2時(shí)波特率=2SMOD×定時(shí)器T/C1溢出率/32=2SMOD×/[32×12(28-X)]X=28-2SMOD×/(384×波特率)

例如,某8051單片機(jī)控制系統(tǒng),主振頻率為12MHz,要求串行口發(fā)送數(shù)據(jù)為8位、波特率為1200b/s,編寫串行口的初始化程序。我們設(shè)SMOD=1,則T/C1的時(shí)間常數(shù)X的值為:X=28-2SMOD×/(384×波特率) =256-2×12×106/(384×1200)=256-52.08=203.92≈0CCH

波特率誤差=(2403.85-2400)/2400=0.16%2)選擇SMOD=0,此時(shí)X=28-20×6×106/(384×2400)=249.49≈249由此值可以算出T/C1實(shí)際產(chǎn)生的波特率及誤差為:波特率=20×6×106/[32×12(256-249)]=2232.14b/s

波特率誤差=(2400-2232.14)/2400=6.99%

上面的分析計(jì)算說明了SMOD值雖然可以任意選擇,但在某些情況下它會使波特率產(chǎn)生誤差。因而在波特率設(shè)置時(shí),對SMOD值的選取也需要予以考慮

第三節(jié)串行口應(yīng)用舉例

例1:8051和標(biāo)準(zhǔn)CRT進(jìn)行通訊,數(shù)據(jù)傳送率為2400波特。每個(gè)字符由7個(gè)數(shù)據(jù)位、一個(gè)奇偶校驗(yàn)位、一個(gè)起始位和一個(gè)停止位組成。字符傳送率為240字符/秒。

T/C1作波特率發(fā)生器,工作在方式2。為得到2400的波特率,設(shè),SMOD=0,這時(shí),T/C1的初值可由下式求得:波特率=2SMOD×定時(shí)器T/C1溢出率/322400=2SMOD×/[32×12(28-X)]計(jì)算出X=242.98≈243=F3H程序如下:MOV SCON,#01010010BMOV TMOD,#00101001BMOV TH1,#0F3HMOV TL1,#0F3HSETB TR1………例2:單個(gè)字符發(fā)送子程序。程序首先計(jì)算奇偶位,并將奇偶位插入要發(fā)送的數(shù)值字節(jié)中,待到發(fā)送器空閑時(shí),將該字符發(fā)送出去,然后返回。子程序如下: MOVC,P CPL C

MOVACC.7,C

JNB TI,$

CLR TI

MOVSUBF,A RET 例3:下面的一個(gè)子程序是完成單個(gè)字符接收的子程序,它等待一個(gè)字符接收完畢,如遇奇偶校驗(yàn)錯(cuò)誤則將CY標(biāo)志置1,最后屏蔽掉奇偶位,在A中得到7位有用的代碼。子程序如下:JNB RI,$ CLR RI MOV A,SBUF

MOV C,P CPL CANL A,#7FH

RET例4:通過串行口向某ASCII輸出設(shè)備發(fā)送信息“INTELDELIVERS”。CR EQU 0DH LF EQU 0AH ESC EQU 1BH ………CALL XSTRNGDB CR,LF DB ‘INTELDELIVERS’DB ESC ………

XSTRNG: POP DPH POP DPLXSTR-1: CLR A

MOVC A,@A+DPTR XSTR-2: JNB TI,$

CLR TI MOV SBUF,A

INC DPTR

CLR A

MOVC A,@A+DPTR

CJNE A,#ESC,XSTR-2 MOV A,#1 JMP @A+DPTR例5:把某文字處理設(shè)備每次接收到的ASCII字符按控制符和打印符分門別類進(jìn)行處理。CHAR EQU R7INTERP:CJNE CHAR,#7FH,INTP-1

………

RETINTP-1: CJNE CHAR,#07H,INTP-2

……… RETINTP-2: CJNE CHAR,#0AH,INTP-3

………

RETINTP-3: CJNE CHAR,#0DH,INTP-4

………

RETINTP-4: CJNE CHAR,#1BH,INTP-5

………

RETINTP-5: CJNE CHAR,#20H,INTP-6

………

RETINTP-6: JNC PRINTC

MOV CHAR,#0PRINTC:………

RET例6:在多機(jī)系統(tǒng)中,主機(jī)向某從機(jī)發(fā)出起始地址和終止地址,要求該地址范圍內(nèi)的數(shù)據(jù)塊由所指定的從機(jī)片外數(shù)據(jù)存儲器中傳送到主機(jī)片外RAM之相應(yīng)單元。起始地址的高低兩個(gè)字節(jié)分別存放在各機(jī)片內(nèi)RAM的70H和71H單元;終止地址在72H和73H中。波特率要求為1200bps,各機(jī)晶振頻率均為12MHz,主機(jī)74H單元保存有欲呼叫的從機(jī)編號根據(jù)多機(jī)通訊和波特率的要求,主從機(jī)的串行口均應(yīng)選用工作方式3,并以各自的定時(shí)器1為波特率發(fā)生器下面是主機(jī)程序。START: MOV TMOD,#21H

MOV TH1,#0E6H

MOV TL1,#0E6HSETB TR1

以上程序設(shè)定定時(shí)器1為波特率發(fā)生器,使之工作于方式2下。因能自動恢復(fù)計(jì)數(shù)初始值,故無需中斷。

MOV SCON,#0D8H

MOV R0,#74H MOV SBUF,@R0JNB TI,$

MOV TH0,#27H M

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論