第七章-串行通信_(tái)第1頁(yè)
第七章-串行通信_(tái)第2頁(yè)
第七章-串行通信_(tái)第3頁(yè)
第七章-串行通信_(tái)第4頁(yè)
第七章-串行通信_(tái)第5頁(yè)
已閱讀5頁(yè),還剩41頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第七章串行通信

17.1一般概念⒈并行通信與串行通信

計(jì)算機(jī)的數(shù)據(jù)傳送共有兩種方式∶并行和串行。

⑴并行傳送方式

在數(shù)據(jù)傳輸時(shí),如果一個(gè)數(shù)據(jù)編碼字符的所有各位都同時(shí)發(fā)送、并排傳輸,又同時(shí)被接收,則將這種傳送方式稱(chēng)為并行傳送方式。

⑵串行傳送方式

在數(shù)據(jù)傳輸時(shí),如果一個(gè)數(shù)據(jù)編碼字符的所有各位不是同時(shí)發(fā)送,而是按一定順序,一位接著一位在信道中被發(fā)送和接收,則將這種傳送方式稱(chēng)為串行傳送方式。串行傳送方式的物理信道為串行總線。22.串行通信中的異步傳輸和同步傳輸

在數(shù)據(jù)通信中,要保證發(fā)送的信號(hào)在接收端能被正確地接收,必須采用同步技術(shù)。常用的同步技術(shù)有兩種方式:(1)異步傳輸,也稱(chēng)起止同步方式;(2)同步傳輸也稱(chēng)同步字符同步方式。

⑴異步傳輸

異步傳輸以字符為單位進(jìn)行數(shù)據(jù)傳輸,每個(gè)字符用起始位、停止位包裝起來(lái),在字符間允許有長(zhǎng)短不一的間隙。⑵同步傳輸

同步傳輸用來(lái)對(duì)數(shù)據(jù)塊進(jìn)行傳輸,通常發(fā)送一方用同步字符指示每一串同步數(shù)據(jù)流的開(kāi)始。一個(gè)數(shù)據(jù)塊中包含著許多連續(xù)的字符,在字符之間沒(méi)有空閑。3通信方式:

并行數(shù)據(jù)傳輸(速度快、傳輸線多)

串行數(shù)據(jù)傳輸(速度慢、傳輸線少)同步串行通信

異步串行通信√RXD2TXD3GND52RXD3TXD5GND4

3.波特率(BAUDRATE)

串行通信的傳送速率用于說(shuō)明數(shù)據(jù)傳送的快慢。

波特率表示串行通信時(shí)每秒傳送的“位”數(shù),比如1秒鐘傳送1位,就是1波特。即1波特=1bps(位/秒,bit/秒,b/s)

若數(shù)據(jù)傳送速率為120字符/秒,而每一個(gè)字符幀已規(guī)定為10位,則傳輸速率為120×10=1200位/秒,即波特率為1200,每一位數(shù)據(jù)傳送的時(shí)間為波特率的倒數(shù):

T=1÷1200=0.833ms

幀:完整數(shù)據(jù)的最小單位(類(lèi)似于字節(jié))

5在異步串行通信中,傳送數(shù)據(jù)以幀為單位,每幀傳送一個(gè)字符。

每一幀構(gòu)成:起始位、數(shù)據(jù)位、校驗(yàn)位、停止位起始位:1bit,低電平

數(shù)據(jù)位:5~8bit,值由傳送的數(shù)據(jù)確定,低位在前,高位在后

校驗(yàn)位:可選,1bit,奇校驗(yàn)或偶校驗(yàn),值由傳送的數(shù)據(jù)決定

停止位:1bit、1.5bit或2bit,高電平4.異步串行數(shù)據(jù)傳輸6

在異步數(shù)據(jù)傳輸中,CPU與外設(shè)之間必須有兩項(xiàng)規(guī)定:(1)字符格式 即上述的編碼形式:奇偶校驗(yàn)形式以及數(shù)據(jù)位和停止位的規(guī)定。(2)波特率 對(duì)于CPU與外界的串行通訊是很重要的參數(shù)。7例:若幀格式為:1位起始位、8位數(shù)據(jù)位、1位奇校

驗(yàn)位、1停止位,則發(fā)送字符‘1’、’A’的波形為‘1’的ASCII=31H=00110001B‘A’的ASCII=41H=01000001B011111001100010111110110000010起始位數(shù)據(jù)位校驗(yàn)位停止位8§7-2MCS-51串行接口9一、硬件條件引腳:P3.0(RXD)——串行數(shù)據(jù)接收端

P3.1(TXD)——串行數(shù)據(jù)發(fā)送端寄存器:SBUF(99H)數(shù)據(jù)緩沖寄存器

SCON

(98H)串行口控制寄存器

PCON(

87H)的SMOD位其中SBUF物理地址有兩個(gè),邏輯地址只有一個(gè)接收緩沖器SBUF

發(fā)送緩沖器SBUF

串行發(fā)送時(shí),將要發(fā)送的數(shù)據(jù)寫(xiě)入發(fā)送緩沖器SBUF;串行接收時(shí),從接收緩沖器SBUF中讀出數(shù)據(jù)10特點(diǎn):1)全雙工接口即接收/發(fā)送可同時(shí)進(jìn)行。2)有四種工作方式通過(guò)對(duì)串行口的控制寄存器SCON賦值即可。3)51系統(tǒng)內(nèi)部會(huì)自動(dòng)進(jìn)行串-并變換及并-串變換。接收方式下,串行數(shù)據(jù)從RXD(P3.0)引腳輸入發(fā)送方式下,串行數(shù)據(jù)通過(guò)TXD(P3.1)引腳輸出。11二、串行口控制寄存器SCON(98H)SCON用于定義串行口的工作方式和狀態(tài)標(biāo)志,可字節(jié)尋址,也可位尋址。其格式為:位地址:9FH9EH9DH9CH9BH9AH99H98HSM0SM1SM2RENTB8RB8TIRI復(fù)位時(shí),SCON的所有位均清012D7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI串行接口控制寄存器SCON工作方式SM0SM1方式速率說(shuō)明000fosc/12移位寄存器方式011可編程8位異步通訊102fosc/64或fosc/329位異步通訊113可編程9位異步通訊發(fā)送中斷標(biāo)志0字符未發(fā)送完1發(fā)送完1個(gè)字符接收中斷標(biāo)志0未接收到字符1接收到1個(gè)字符多機(jī)通信控制位0接收數(shù)據(jù)幀1只接收地址幀允許接收控制位0不允許接收1允許接收TB8方式2,3中要發(fā)送的第9位數(shù)據(jù)RB8方式2,3中接收到的第9位數(shù)據(jù)13SM0、SM1:串行口工作方式選擇位SM0SM1工作方式功能波特率

00方式0同步移位寄存器fosc/1201方式18位數(shù)據(jù)UART可變

10方式29位數(shù)據(jù)UARTfosc/64或fosc/3211方式39位數(shù)據(jù)UART可變方式0——同步移位寄存器方式,速率=fosc/12,數(shù)據(jù)從RXD(P3.0)出入,同步移位脈沖由TXD(P3.1)輸出方式1——幀:1位起始位+8位數(shù)據(jù)位+1位停止位,波特率由定時(shí) 器1的溢出速率決定(定時(shí)器1:方式2)方式2——幀:1位起始位+8位數(shù)據(jù)位+1位校驗(yàn)位+1位停止位,波 特率=fosc/32或fosc/64方式3——幀:1位起始位+8位數(shù)據(jù)位+1位校驗(yàn)位+1位停止位,波 特率由定時(shí)器1的溢出速率決定(定時(shí)器1:方式2)14SM2:方式2、3中多處理機(jī)通信使能位。

方式2或3:若SM2由軟件置為1,則接收到的第9位數(shù)據(jù)(RB8)為0時(shí)不啟動(dòng)接收中斷標(biāo)志RI(RI=0)。

方式1:如SM2=1,則只有接收到有效停止位時(shí)才置RI為1,沒(méi)有接收到有效停止位,則RI清0(不啟動(dòng));而當(dāng)SM2=0時(shí),則不論接收到的停止位(笫九位數(shù)據(jù))是”0”或”1”,都將前八位數(shù)據(jù)裝入SBUF中,并申請(qǐng)中斷。

方式0:SM2必須為0。15REN:串行接收允許位。軟件置位(REN=1)時(shí)允許接收,啟動(dòng)串行口的接收器RXD,開(kāi)始接收數(shù)據(jù)。軟件復(fù)位(REN=0)時(shí),則禁止接收。TB8:發(fā)送數(shù)據(jù)的第9位,即最高位(方式2或3中),按需要由軟件進(jìn)行置位或清0??捎米鲾?shù)據(jù)的奇偶校驗(yàn)位。在MCS-51多處理機(jī)通訊中,這一位用于表示是地址幀還是數(shù)據(jù)幀。RB8:接收數(shù)據(jù)的第9位,即最高位(方式2或3中)。在方式1中,若SM2=0,則RB8是接收到的停止位,在方式0中,不使用RB8。

16TI:發(fā)送中斷標(biāo)志。方式0:串行發(fā)送完最高位時(shí),由硬件置位,CPU響應(yīng)中斷后,必須用軟件清“0”。其他方式:在停止位開(kāi)始時(shí)置位,必須用軟件清“0”。RI:接收中斷標(biāo)志。方式0:最高位接收完畢,由硬件置位。其他方式:串行接收到停止位的中間時(shí)刻硬件置位(例外情況見(jiàn)SM2)。必須用軟件進(jìn)行清“0”。當(dāng)由指令改變SCON的內(nèi)容,這改變的內(nèi)容被鎖存在SFR中,在下一條指令的第一個(gè)周期的S1P1狀態(tài)發(fā)生作用。而當(dāng)一次串行發(fā)送已經(jīng)開(kāi)始,則輸出的TB8將是原先的值,而不是新改變的值。

17三、PCON(87H)中的波特率選擇位SMOD為PCON的最高位。PCON的其它位用于選擇某些電源控制的附加功能。在SMOD=1時(shí),加倍串行口方式1,2,3的波特率。復(fù)位時(shí)SMOD=0PCON地址87H,不是8的倍數(shù),對(duì)SMOD位不能進(jìn)行位操作。

D7D6D5D4D3D2D1D0SMOD18§7-3串行口的工作方式

一、方式0(同步移位寄存器)串行數(shù)據(jù)的接收/發(fā)送均通過(guò)RXD(P3.0) 接收/發(fā)送8位數(shù)據(jù)低位在前 由TXD(P3.1)輸出同步移位脈沖啟動(dòng)接收的條件:REN=1,RI=0發(fā)送:執(zhí)行任一條以SBUF為目的寄存器的指令 波特率為固定值:方式0波特率=振蕩頻率/1219串并轉(zhuǎn)換:74LS164:8位串入并出移位寄存器,用于發(fā)送74LS166:8位并入串出移位寄存器,用于接收20二、方式18位異步串行通信口TXD為數(shù)據(jù)輸出線RXD為數(shù)據(jù)輸入線一幀數(shù)據(jù)共10位:1位起始位+8位數(shù)據(jù)位+1位停止位其中:起始位:低電平

8位數(shù)據(jù):低位在前,停止位:高電平接收時(shí),停止位進(jìn)入SCON特殊功能寄存器的RB8位(SM2=0時(shí))。21串行口工作方式1

波特率=2SMOD×(定時(shí)器1溢出率)

/32

設(shè)T1:定時(shí)方式2,則:溢出率=振蕩頻率/{12×[256-(TH1)]}代入上式得:

串行口方式1波特率

={2SMOD/32}×振蕩頻率/{12×[256-(TH1)]}(設(shè)T1:定時(shí)方式2)22①方式1輸出 在TI=0條件下用指令:MOVSBUF,A啟動(dòng)串行輸出。 從TXD輸出10位格式的數(shù)據(jù),輸出完畢后自動(dòng)置TI=1并向CPU請(qǐng)求中斷,在中斷服務(wù)程序中用軟件使TI=0并發(fā)送下一個(gè)字節(jié)。

23②方式1輸入方式1輸入是在REN=1,RI=0的條件下,用所選擇波特率的16倍的頻率采樣RXD。當(dāng)采樣到RXD端有從1到0的跳變時(shí),啟動(dòng)接收器,接收到起始位之后,緊接著是8位數(shù)據(jù)(先低位D0,最后高位D7),最后一位為停止位。若SM2=0,則停止位存入RB8,然后置RI=1請(qǐng)求中斷;若SM2=1,則僅當(dāng)停止位為1時(shí)使RI=1并請(qǐng)求中斷;在中斷服務(wù)程序中CPU讀取數(shù)據(jù)并用軟件使RI=0,為下次接收作好準(zhǔn)備。

24注:①RI=0, ②SM2=0或收到停止位=1

①②任一不滿足,所收數(shù)據(jù)幀就會(huì)丟失(不產(chǎn)生中斷請(qǐng)求,CPU不讀取數(shù)據(jù)),不再恢復(fù)裝載SBUF和RB8及置位RI的信號(hào),只有在產(chǎn)生最后一個(gè)移位脈沖時(shí),同時(shí)滿足以上2個(gè)條件,才會(huì)產(chǎn)生25三、方式2與方式3

一幀數(shù)據(jù):1位起始位+8位數(shù)據(jù)位+1位校驗(yàn)位+1位停止位兩種方式基本相同,區(qū)別在于波特率不同:

方式2波特率固定,

方式3波特率可通過(guò)改變T1的時(shí)間常數(shù)來(lái)改變。26①方式2輸出與方式3輸出

預(yù)先在SCON的TB8位放入11位異步格式中的第9位(可編程位),即發(fā)送數(shù)據(jù)的最高位。 在TI=0條件下,用指令MOVSBUF,A啟動(dòng)發(fā)送。先發(fā)送起始位,再發(fā)送8位數(shù)據(jù),然后把TB8中第9位發(fā)出去,最后發(fā)一位停止位,發(fā)送完畢后置TI=1并請(qǐng)求中斷,在中斷服務(wù)程序中用軟件使TI=0,并發(fā)送下一個(gè)數(shù)據(jù)。

TB8中的第9位既可支持多微機(jī)通信,也可作為數(shù)據(jù)的奇偶校驗(yàn)位。

27②方式2輸入與方式3輸入

條件:REN=1,RI=0,

用所選波特率的16倍的頻率采樣RXD端,當(dāng)采樣到1到0的負(fù)跳變時(shí)啟動(dòng)接收器,開(kāi)始接收一位起始位,緊接著是8位數(shù)據(jù),當(dāng)接收到第9位數(shù)據(jù)(最高位)時(shí):(1)若SM2=1,第9位為0,則丟棄接收的數(shù)據(jù)。

(2)其它情況(即:SM2=0或SM2=1且第9位為1),把這8位數(shù)據(jù)放入SBUF,把第9位存入RB8,并置RI=1,向CPU請(qǐng)求中斷,在中斷服務(wù)程序中讀入數(shù)據(jù)并用軟件使RI=0。若第9位用作數(shù)據(jù)奇偶校驗(yàn),則應(yīng)在程序中作校驗(yàn)處理。28即:

1)SM2=0:則收到一個(gè)數(shù)據(jù)后,不管第9位是1還是0,均置位RI,收到的數(shù)據(jù)裝入SBUF,RB8。

2)SM2=1:僅當(dāng)?shù)?位為1時(shí),才置位RI,將收到的數(shù)據(jù)裝入SBUF,RB829§7-4串行口波特率的計(jì)算

一、定時(shí)器T1的溢出率n

n=1/T;T為定時(shí)時(shí)長(zhǎng)方式0:振蕩頻率/{12×[8192-(初值)]}

方式1:振蕩頻率/{12×[65536-(初值)]}

方式2:振蕩頻率/{12×[256-(TH1)]}30二、串行口波特率的計(jì)算1.

串行口工作在方式0與方式2的波特率①方式0:波特率固定不變,與PCON寄存器的SMOD位的取值也沒(méi)有關(guān)系,其波特率固定為B=fosc/12②方式2:

SMOD=0時(shí),B=fosc/64SMOD=1時(shí),B=fosc/32

即:2SMOD×fosc/64312.串行口工作在方式1與方式3的波特率

串行口工作在方式1或方式3時(shí),改變T1的時(shí)間常數(shù)可以改變波特率,這時(shí)T1作為波特率發(fā)生器使用。 方式1、3的波特率:T1溢出率:即定時(shí)時(shí)長(zhǎng)的倒數(shù)即:方式1與3可通過(guò)改變T1初值及SMOD值來(lái)改變波特率32

若定時(shí)器Tl工作于方式2,即初值自動(dòng)重裝方式,用TL1計(jì)數(shù),用TH1存放初值,則無(wú)需在中斷服務(wù)程序中重置初值,沒(méi)有由于中斷引起的的誤差,也應(yīng)禁止定時(shí)器T1中斷。波特率發(fā)生器多采用這種方式,此時(shí):33圖7-680C51多機(jī)分布式系統(tǒng)示意圖

§7-5多機(jī)通訊

34通訊規(guī)則:從機(jī):設(shè)置初始化程序,將串口編程為9位異步通訊方式(方式2或3),置位SM2,允許接收和串行口中斷。主機(jī):發(fā)送前8位數(shù)據(jù)為地址,并且第9位為“1”(表示地址幀)從機(jī):接收到地址幀時(shí)串行口中斷,中斷服務(wù)程序?qū)⒔邮盏降牡刂放c本身地址相比較。若相同,表明主機(jī)要與本機(jī)通信,SM2清0,并回答從機(jī)已準(zhǔn)備好通訊。若不同,等待下一次地址幀。主機(jī):收到從機(jī)回答后,就可以開(kāi)始與從機(jī)正式通訊。在通訊過(guò)程,發(fā)送信息的第9位數(shù)據(jù)均為0(數(shù)據(jù)幀,控制幀),這樣其它從機(jī)不會(huì)誤收。通訊結(jié)束:從機(jī)置位SM2,主機(jī)又可以發(fā)新的聯(lián)絡(luò)命令(地址幀)35圖7–9多機(jī)通信的主機(jī)程序流程圖

36圖7–10多機(jī)通信的從機(jī)程序流程圖

37例:

從機(jī)1的初始化程序中有:

MOVSCON,#10110000B;方式2,SM2=1, 允許接收。

主機(jī)應(yīng)為:

MOVSCON,#10010000B,方式2,SM2=0, 允許接收。

主機(jī)向從機(jī)1發(fā)送一個(gè)數(shù)據(jù)的程序如下(假設(shè)從機(jī)1的地址碼為01H,且省略應(yīng)答信息):

38JNB TI,$;等待上一個(gè)數(shù)據(jù)發(fā)送完成CLR TISETBTB8;置位第9位數(shù)據(jù)TB8,接著發(fā)地址碼MOVSBUF,#01H;發(fā)送從機(jī)1地址碼,該數(shù)據(jù)各從機(jī);都可收到JNB TI,$;若數(shù)據(jù)未發(fā)送完,則等待CLR TICLRTB8;清零TB8,接著發(fā)數(shù)據(jù)MOVSBUF,DATA1;數(shù)據(jù)1發(fā)給從機(jī)1,其它;從機(jī)(SM2=1)收不到39從機(jī)接收程序(查詢(xún)方式)如下(省略應(yīng)答信息)

:JNB RI,$; 此時(shí)SM2=1,等待接收地址碼CLR RIMOVA,SBUF; 取地址碼CJNEA,#01H,LOP;地址碼不符,則轉(zhuǎn)LOP處CLRSM2;地址碼相符,則SM2=0,開(kāi)始接收數(shù)據(jù)JNBRI,$;等待接收一幀數(shù)據(jù)結(jié)束CLRRIMOVDATA2,SBUF;接收的數(shù)據(jù)送DATA2:LOP:…;地址碼不符,SM2仍為1,不接收數(shù)據(jù)40§7-6舉例

例1.

由內(nèi)部寄存器20H~3FH取出ASCII碼數(shù)據(jù)加奇校驗(yàn)后由串口發(fā)出,采用8位通信,波特率1200,fosc=11.0592MHz分析: 設(shè)串行口為方式1,定時(shí)器/計(jì)數(shù)器T1作為串行口的波特率發(fā)生器,工作在方式2。

取SMOD=0 ∴TH1=232=E8H41START:MOVPCON,#0;使SMOD=0 MOVTMOD,#20H;T1工作在定時(shí),方式2

MOVTH1,

#0E8HMOVTL1,

#0E8H;設(shè)波特率為1200

SETBTR1MOVSCON,#01000000B;串口工作在方式1, 禁止接收

MOVR0,#20H;被發(fā)送數(shù)據(jù)的地址

MOVR3,#20H;發(fā)送數(shù)據(jù)的個(gè)數(shù)LOOP:MOVA,@R0LCALLSOUT;調(diào)用發(fā)送子程序

INCR0DJNZR3,LOOP LJMPLAST42SOUT:MOVC,P;PSW中是偶校驗(yàn)

CPLC;將P改為奇校驗(yàn)

MOVACC.7,C;檢驗(yàn)位加入發(fā)送數(shù)據(jù)

MOVSBUF,AJNBTI,$CLRTIRETLAST:NOP END43例2.通過(guò)串口接收32個(gè)數(shù)據(jù)放入20H~3FH,該數(shù)據(jù)最高位為奇校驗(yàn)位

波特率為1200,fosc=11.0592MHzMAIN:MOV PCON,#0 ;置SMOD=0;

MOV TMOD,#20H;設(shè)T1為定時(shí)器方式2 MOV

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論