單片機(jī)教程--串口通信_(tái)第1頁(yè)
單片機(jī)教程--串口通信_(tái)第2頁(yè)
單片機(jī)教程--串口通信_(tái)第3頁(yè)
單片機(jī)教程--串口通信_(tái)第4頁(yè)
單片機(jī)教程--串口通信_(tái)第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第9章:串口通信本章基本要求: ⑴基本概念 ⑵51的串行接口* ⑶串行接口的應(yīng)用*并行并行通信串行串行串行串行1位9.1 串行通信基礎(chǔ) 所謂“通信”是指計(jì)算機(jī)與其他設(shè)備之間進(jìn)行的信息交換。 通信的方式分為并行通信和串行通信兩種。

并行通信是構(gòu)成一組數(shù)據(jù)的各位同時(shí)進(jìn)行傳送,例如8位數(shù)據(jù)或16位數(shù)據(jù)并行傳送。 其特點(diǎn)是傳輸速度快,但當(dāng)距離較遠(yuǎn)、位數(shù)又多時(shí)導(dǎo)致了通信線路復(fù)雜且成本高。

串行通信是數(shù)據(jù)一位接一位地順序傳送。其特點(diǎn)是通信線路簡(jiǎn)單,只要一對(duì)傳輸線就可以實(shí)現(xiàn)通信(如電話線),可大大地降低成本,適用于遠(yuǎn)距離通信。缺點(diǎn)是傳送速度慢。9.1 串行通信基礎(chǔ) 下圖為以上兩種通信方式的示意圖。由圖可知,假設(shè)并行傳送N位數(shù)據(jù)所需時(shí)間為T(mén),那么串行傳送的時(shí)間至少為NT,實(shí)際上總是大于NT的。9.1 串行通信基礎(chǔ)9.1.1 串行通信的分類(lèi)1、異步通信 異步傳送的特點(diǎn)是數(shù)據(jù)在線路上的傳送不連續(xù)。在傳送時(shí),數(shù)據(jù)是以一個(gè)字符為單位進(jìn)行傳送的。它用一個(gè)起始位表示字符的開(kāi)始,用停止位表示字符的結(jié)束。異步傳送的字符格式如圖所示。 ①字符幀:也叫數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位4個(gè)部分組成。9.1 串行通信基礎(chǔ)9.1 串行通信基礎(chǔ) ②波特率:就是數(shù)據(jù)的傳送速率,即每秒鐘傳送的二進(jìn)制位數(shù),單位:位/秒。 說(shuō)明:要求發(fā)送端與接收端的波特率必須一致。波特率越高,傳送速度越快。例:設(shè)字符傳送的速率為120字符/秒,而每1個(gè)字符為10位,那么傳送的波特率為:10位/字符×120字符/秒=1200位/秒=1200波特。每1位二進(jìn)制位的傳送時(shí)間Td就是波特率的倒數(shù),例中:Td=1/1200=0.833ms9.1 串行通信基礎(chǔ)2、同步通信 在異步傳送中,每一個(gè)字符都要用起始位和停止位作為字符開(kāi)始和結(jié)束的標(biāo)志,占用了一定的時(shí)間。為了提高傳送速度,有時(shí)就去掉這些標(biāo)志,而采用同步傳送,即1次傳送1組數(shù)據(jù)。在這1組數(shù)據(jù)的開(kāi)始處要用同步字符SYN來(lái)加以指示,如圖示:9.1.2 串行通信的制式 串行通信的數(shù)據(jù)傳送方向有三種形式。9.1 串行通信基礎(chǔ)

1、單工制式(Simplex)

單工制式是指甲乙雙方通信時(shí)只能單向傳送數(shù)據(jù),發(fā)送方和接收方固定。單工:廣播9.1 串行通信基礎(chǔ)

2、半雙工制式半雙工制式是指通信雙方都具有發(fā)送器和接收器,既可發(fā)送也可接收,但不能同時(shí)接收和發(fā)送,發(fā)送時(shí)不能接收,接收時(shí)不能發(fā)送。半雙工:對(duì)講機(jī)9.1 串行通信基礎(chǔ)

全雙工制式是指通信雙方均設(shè)有發(fā)送器和接收器,并且信道劃分為發(fā)送信道和接收信道,因此全雙工制式可實(shí)現(xiàn)甲乙雙方同時(shí)發(fā)送和接收數(shù)據(jù),發(fā)送時(shí)能接收,接收時(shí)也能發(fā)送。3、全雙工制式雙工:電話9.1 串行通信基礎(chǔ)9.1.3 調(diào)制解調(diào)器 計(jì)算機(jī)通信是一種數(shù)字信號(hào)的通信,如圖所示。它要求傳送線的頻帶很寬,而在長(zhǎng)距離通訊時(shí),通常是利用電話線來(lái)傳送的,該線不可能有這樣寬的頻帶。如果用數(shù)字信號(hào)經(jīng)過(guò)傳送線直接通訊,信號(hào)就會(huì)畸變。9.1 串行通信基礎(chǔ) 因此要在發(fā)送端用調(diào)制器(Modulator)把數(shù)字信號(hào)轉(zhuǎn)換為模擬信號(hào),在接收端用解調(diào)器(Demodulator)檢測(cè)此模擬信號(hào),再把它轉(zhuǎn)換成數(shù)字信號(hào),如圖所示。9.2 MCS-51單片機(jī)串行接口 51單片機(jī)內(nèi)部有一個(gè)功能很強(qiáng)的全雙工串行口,可同時(shí)發(fā)送和接收數(shù)據(jù)。它有四種工作方式,可供不同場(chǎng)合使用。波特率由軟件設(shè)置,通過(guò)片內(nèi)的定時(shí)/計(jì)數(shù)器產(chǎn)生。接收、發(fā)送均可工作在查詢(xún)方式或中斷方式,使用十分靈活。 51的串行口除了用于數(shù)據(jù)通信外,還可以非常方便地構(gòu)成1個(gè)或多個(gè)并行輸入/輸出口或作串并轉(zhuǎn)換,用來(lái)驅(qū)動(dòng)鍵盤(pán)與顯示器。51單片機(jī)的串行接口硬件結(jié)構(gòu)SBUF(發(fā))SBUF(收)發(fā)送控制器TI接收控制器RI移位寄存器波特率發(fā)生器T1+A累加器移位寄存器RxDP3.0TxDP3.1去申請(qǐng)中斷引腳引腳CPU內(nèi)部1、發(fā)送和接收電路

①SBUF是兩個(gè)在物理上獨(dú)立的接收、發(fā)送緩沖器,可同時(shí)發(fā)送、接收數(shù)據(jù)。兩個(gè)緩沖器只用一個(gè)字節(jié)地址99H,可通過(guò)指令對(duì)SBUF的讀寫(xiě)來(lái)區(qū)別是對(duì)接收緩沖器的操作還是對(duì)發(fā)送緩沖器的操作。

MOVSBUF,A;CPU寫(xiě)SBUF,就是修改發(fā)送緩沖器;

MOVA,SBUF;CPU讀SBUF,就是讀接收緩沖器。串行口對(duì)外也有兩條獨(dú)立的收發(fā)信號(hào)線RXD(P3.0)和TXD(P3.1),因此可以同時(shí)發(fā)送、接收數(shù)據(jù),實(shí)現(xiàn)全雙工傳送。9.2 MCS-51單片機(jī)串行接口

②發(fā)送和接收過(guò)程都是在發(fā)送和接收時(shí)鐘控制下進(jìn)行的,必須與設(shè)定的波特率保持一致。 一般,51單片機(jī)的串口時(shí)鐘是由內(nèi)部定時(shí)器的溢出率經(jīng)16分頻后提供。2、串行口控制寄存器SCON、PCON SCON用來(lái)控制串行口的工作方式和狀態(tài)(可位尋址)。在復(fù)位時(shí)所有位被清0,字地址為98H。PCON主要是為CHMOS型單片機(jī)的電源控制而設(shè)置的專(zhuān)用寄存器,單元地址為87H,不能位尋址。 SCON、PCON的格式和內(nèi)容如下圖。9.2 MCS-51單片機(jī)串行接口串行口控制寄存器SCON(98H)1、SM0、SM1控制串行口方式

2、SM2允許方式2、3的多機(jī)通訊特征位

在方式2、3中若SM2=1→表示接收的第九位數(shù)據(jù)(RB8)為1時(shí),激活RI。

在方式0,1中SM2必須為0。

SM0

SM1工作方式功能簡(jiǎn)述波特率00方式08位同步移位寄存器fosc/1201方式110位UART可變10方式211位UARTfosc/32或/6411方式311位UART可變

3、REN允許串行接收位,由軟件置/復(fù)位1:允許接收0:不允許接收4、TB8在方式2、3中要發(fā)送的第九位數(shù)據(jù),由軟件置/復(fù)位

5、RB8在方式2、3中是接收的第九位數(shù)據(jù)在方式0中不用RB8。串行口控制寄存器SCON(98H)6、RI接收中斷標(biāo)志(必須由軟件清除)

在方式0中串行接收到第8位結(jié)束時(shí)自動(dòng)置位。在方式1、2、3中串行接收到停止位的中間時(shí)置位。

1111111SBUF11111111RxD1RI=17、TI發(fā)送中斷標(biāo)志(必須由軟件清除)

在方式0中串行發(fā)送第8位結(jié)束時(shí)自動(dòng)置位。在方式1、2、3中串行發(fā)送停止位的開(kāi)始時(shí)置位。串行口控制寄存器SCON(98H)

電源控制寄存器PCONPCOND7D6D5D4D3D2D1D0位名稱(chēng)SMOD———GF1GF0PDIDLSMOD=1,串行口波特率加倍。PCON寄存器不能進(jìn)行位尋址。?

SMOD:在串行口工作方式1、2、3中,是波特率加倍位=1時(shí),波特率加倍=0時(shí),波特率不加倍。(在PCON中只有這一個(gè)位與串口有關(guān))

9.2.2 串行口的工作方式 51的串行口有四種工作方式,它是由SCON中的SM0、SM1來(lái)定義的,如下表和下屏表格所示。9.2 MCS-51單片機(jī)串行接口SM0

SM1工作方式功能簡(jiǎn)述波特率00方式08位同步移位寄存器fosc/1201方式110位UART可變10方式211位UARTfosc/32或/6411方式311位UART可變SM0SM1工作方式說(shuō)明波特率00方式0(擴(kuò)展I/O口)移位輸入/輸出(用于擴(kuò)展I/O引腳)方式為fosc(振蕩頻率)的1/12。01方式1(常用)波特率可變的8位異步串行通信方式0方式2(不常用)波特率固定的9位異步串行通信方式1方式3(常用)波特率可變的9位異步串行通信方式9.2 MCS-51單片機(jī)串行接口1、方式0 為同步移位寄存器方式,其波特率是固定的,為fosc(振蕩頻率)的1/12。

①方式0發(fā)送:數(shù)據(jù)從RXD引腳串行輸出,TXD引腳輸出同步脈沖。當(dāng)1個(gè)數(shù)據(jù)寫(xiě)入串行口發(fā)送緩沖器時(shí),串行口將8位數(shù)據(jù)以fosc/12的固定波特率從RXD引腳輸出,從低位到高位。發(fā)送完后置中斷標(biāo)志TI為1,呈中斷請(qǐng)求狀態(tài),在再次發(fā)送數(shù)據(jù)之前,必須用軟件將TI清0。9.2 MCS-51單片機(jī)串行接口②方式0接收:在滿足REN=1(允許接收)、RI=0的條件下,串行口處于方式0輸入。此時(shí),RXD為數(shù)據(jù)輸入端,TXD為同步信號(hào)輸出端,接收器也以fosc/12的波特率采樣RXD引腳輸入的數(shù)據(jù)信息。當(dāng)接收器接收完8位數(shù)據(jù)后,置中斷標(biāo)志RI=1為請(qǐng)求中斷,在再次接收之前,必須用軟件將RI清0。9.2 MCS-51單片機(jī)串行接口 說(shuō)明: 在方式0工作時(shí),必須使SCON寄存器中的SM2位為“0”,這并不影響TB8位和RB8位。方式0發(fā)送或接收完8位數(shù)據(jù)后由硬件置位TI或RI中斷請(qǐng)求標(biāo)志,CPU在響應(yīng)中斷后要用軟件清除TI或RI標(biāo)志。若串行口要作為并行口輸入輸出,這時(shí)必須設(shè)置“串入并出“或”并入串出”的移位寄存器來(lái)配合使用(如74HC164或74HC165等)。9.2 MCS-51單片機(jī)串行接口2、方式1 該方式為波特率可變的8位異步通信接口。

①方式1發(fā)送:數(shù)據(jù)位由TXD端輸出,發(fā)送1幀信息為10位,其中1位起始位、8位數(shù)據(jù)位(先低位后高位)和一個(gè)停止位“1”。 CPU執(zhí)行1條數(shù)據(jù)寫(xiě)入發(fā)送緩沖器SBUF的指令,就啟動(dòng)發(fā)送器發(fā)送。當(dāng)發(fā)送完數(shù)據(jù),就置中斷標(biāo)志TI為1。

9.2 MCS-51單片機(jī)串行接口 方式1所傳送的波特率取決于定時(shí)器T1的溢出率和特殊功能寄存器PCON中SMOD的值,即方式1的波特率=(2SMOD/32)×定時(shí)器T1的溢出率。 ②方式1接收:當(dāng)串行口置為方式1,且REN=1時(shí),串行口處于方式1輸入狀態(tài)。它以所選波特率的16倍的速率采樣RXD引腳狀態(tài)。9.2 MCS-51單片機(jī)串行接口3、方式2 該方式為11位異步通信接口。

①方式2發(fā)送:發(fā)送數(shù)據(jù)由TXD端輸出,發(fā)送1幀信息為11位,其中1位起始位(0)、8位數(shù)據(jù)位(先低位后高位)、1位可控位為1或0的第9位數(shù)據(jù)、1位停止位。附加的第9位數(shù)據(jù)為SCON中的TB8,它由軟件置位或清0,可作為多機(jī)通信中地址/數(shù)據(jù)信息的標(biāo)志位,也可作為數(shù)據(jù)的奇偶校驗(yàn)位。9.2 MCS-51單片機(jī)串行接口PIPL: PUSH PSW ;保護(hù)現(xiàn)場(chǎng) PUSH ACC CLR TI ;清0發(fā)送中斷標(biāo)志 MOV A,@R0 ;取數(shù)據(jù) MOV C,P ;奇偶位送C MOV TB8,C ;奇偶位送TB8 MOV SBUF,A ;數(shù)據(jù)寫(xiě)入發(fā)送緩沖器,啟動(dòng)發(fā)送 INC R0 ;數(shù)據(jù)指針加1 POP ACC ;恢復(fù)現(xiàn)場(chǎng) POP PSW RETI ;中斷返回9.2 MCS-51單片機(jī)串行接口方式2中使用TB8作為發(fā)送數(shù)據(jù)的奇偶校驗(yàn)位,發(fā)送程序如下:

②方式2接收:當(dāng)串行口置為方式2,且REN=1時(shí),串行口以方式2接收數(shù)據(jù)。方式2的接收與方式1基本相似。數(shù)據(jù)由RXD端輸入,接收11位信息,其中1位起始位(0)、8位數(shù)據(jù)位、1位附加的第9位數(shù)據(jù)、1位停止位(1)。 方式2的波特率=(2SMOD/64)×fosc 若附加的第9位數(shù)據(jù)為奇偶校驗(yàn)位,在接收中斷服務(wù)程序中應(yīng)作檢驗(yàn)處理,參考程序如下:9.2 MCS-51單片機(jī)串行接口PIPL: PUSH PSW ;保護(hù)現(xiàn)場(chǎng) PUSH ACC CLR RI ;清0接收中斷標(biāo)志 MOV A,SUBF ;接收數(shù)據(jù) MOV C,P ;取奇偶校驗(yàn)位 JNC L1 ;偶校驗(yàn)時(shí)轉(zhuǎn)L1 JNB RB8,ERR ;奇校驗(yàn)時(shí)RB8為0轉(zhuǎn)出錯(cuò)處理 SJMP L2L1: JB RB8,ERR ;偶校驗(yàn)時(shí)RB8為1轉(zhuǎn)出錯(cuò)處理L2: MOV @R0,A ;奇偶校驗(yàn)對(duì)時(shí)存入數(shù)據(jù) INC R0 ;修改指針 POP ACC ;恢復(fù)現(xiàn)場(chǎng) POP PSW RETI ;中斷返回ERR: … ;出錯(cuò)處理 RETI ;中斷返回9.2 MCS-51單片機(jī)串行接口方式2中使用RB8作為接收數(shù)據(jù)的奇偶校驗(yàn)位,接收程序如下:4、方式3 方式3為波特率可變的9位異步通信方式,除了波特率有所區(qū)別之外,其余方式都與方式2相同。 方式3的波特率=(2SMOD/32)×(定時(shí)器T1的溢出率)9.2 MCS-51單片機(jī)串行接口9.2.3 串行口的通信波特率 串行通信的四種工作方式對(duì)應(yīng)著三種波特率。

①對(duì)于方式0,波特率是固定的,為單片機(jī)時(shí)鐘的十二分之一,即fosc/12。

②對(duì)于方式2,波特率有兩種可供選擇,即fosc/32和fosc/64。對(duì)應(yīng)于以下公式: 波特率=fosc×2SMOD/649.2 MCS-51單片機(jī)串行接口

③對(duì)于方式1和方式3,波特率都由定時(shí)器T1的溢出率來(lái)決定,使用下面公式: 波特率=(2SMOD/32)×(定時(shí)器T1的溢出率) 而定時(shí)器T1的溢出率則和所采用的定時(shí)器工作方式有關(guān),并可用以下公式表示: 定時(shí)器T1的溢出率=fosc/12×(2n-X) 其中X為定時(shí)器T1的計(jì)數(shù)初值,n為定時(shí)器T1的位數(shù),對(duì)于定時(shí)器方式0,取n=13;對(duì)于定時(shí)器方式1,取n=16;對(duì)于定時(shí)器方式2、3,取n=8。9.2 MCS-51單片機(jī)串行接口 常用波特率和定時(shí)器T1初值9.2 MCS-51單片機(jī)串行接口 注意:如果選定的波特率對(duì)應(yīng)的初值C不是整數(shù),則實(shí)際波特率與標(biāo)準(zhǔn)值就存在偏差,若晶振頻率為12MHz,則標(biāo)準(zhǔn)波特率9600對(duì)應(yīng)的初值C為252.745(SMOD1為0時(shí)的計(jì)算值),由于初值C只能取最接近計(jì)算值的整數(shù),因此,C取253(FDH)。而當(dāng)C=253時(shí),實(shí)際波特率為10417,與理論值相對(duì)誤差為:約5.7%。

9.2 MCS-51單片機(jī)串行接口 實(shí)踐表明:當(dāng)兩個(gè)串行通信設(shè)備之間的波特率誤差超過(guò)2.5%時(shí),串行通信將無(wú)法進(jìn)行,且通信速率越高,發(fā)送、接收波特率的允許誤差范圍就越小。因此,當(dāng)單片機(jī)控制系統(tǒng)需要與PC機(jī)通信時(shí),單片機(jī)控制系統(tǒng)的晶振頻率fosc往往不是整數(shù)(如6MHz、12MHz),而是某一特定值,如11.0592MHz就是常用的一種晶振頻率之一。9.2 MCS-51單片機(jī)串行接口9.3 MCS-51串行口的應(yīng)用

串行口的編程 串行口需初始化后,才能完成數(shù)據(jù)的輸入、輸出。其初始化過(guò)程如下:

①按選定串行口的操作方式設(shè)定SCON的SM0、SM1兩位二進(jìn)制編碼。 ②對(duì)于操作方式2或3,應(yīng)根據(jù)需要在TB8中寫(xiě)入待發(fā)送的第9位數(shù)據(jù)。 ③若選定的操作方式不是方式0,還需設(shè)定接收/發(fā)送的波特率。設(shè)定SMOD的狀態(tài),以控制波特率是否加倍。若選定操作方式1或3,則應(yīng)對(duì)定時(shí)器T1進(jìn)行初始化以設(shè)定其溢出率。9.3.1 串口在方式0下的應(yīng)用 當(dāng)串行口工作于方式0時(shí),串行口本身相當(dāng)于“并入串出”(發(fā)送狀態(tài))或“串入并出”(接收狀態(tài))的移位寄存器。8位串行數(shù)據(jù)b0~b7依次從RDX(P3.0)引腳輸出或輸入,移位脈沖信號(hào)來(lái)自TXD(P3.1)引腳,輸出/輸入移位脈沖頻率固定為系統(tǒng)時(shí)鐘頻率fosc的12分頻(對(duì)于8XC5X2芯片來(lái)說(shuō),在“6時(shí)鐘/機(jī)器周期”模式下,移位脈沖頻率是時(shí)鐘頻率fosc的6分頻),不可改變。9.3 MCS-51串行口的應(yīng)用1、方式0的串行輸出:使用74LS164,如下圖 最簡(jiǎn)的程序可以寫(xiě)為: MOV SCON,#00000000B ;定義串行工作方式 CLR TI ;清除發(fā)送中斷標(biāo)志 MOV SUBF,A ;輸出串行數(shù)據(jù)LOOP: JNB TI,LOOP ;等待一幀數(shù)據(jù)發(fā)送結(jié)束9.3 MCS-51串行口的應(yīng)用說(shuō)明: 使用中斷方式時(shí),在中斷處于開(kāi)放狀態(tài)下(串行中斷允許ES為1,中斷允許EA為1),當(dāng)TI有效時(shí),將產(chǎn)生串行中斷請(qǐng)求。值得注意是CPU響應(yīng)串行中斷后,不會(huì)自動(dòng)清除TI,需要用“CLRTI”指令清除TI,以便輸出新的串行數(shù)據(jù)。 9.3 MCS-51串行口的應(yīng)用2、方式0的串行輸入:使用74LS165,如下圖 RxD引腳接74LS165芯片的串行數(shù)據(jù)輸出端,TxD引腳接74LS165芯片的移位脈沖CLK。其工作過(guò)程見(jiàn)如下說(shuō)明:9.3 MCS-51串行口的應(yīng)用 說(shuō)明:在接收中斷標(biāo)志RI為0(即無(wú)效,表明串行數(shù)據(jù)輸入緩沖器SBUF空)情況下,當(dāng)REN=1時(shí),即可啟動(dòng)串行接收過(guò)程:在移位脈沖(來(lái)自TXD引腳)作用下,165芯片并行數(shù)據(jù)b0~b7逐一移到RDX引腳,并保存到CPU內(nèi)的串行接收緩沖器內(nèi),當(dāng)接收到b7位數(shù)據(jù)時(shí),串行接收中斷標(biāo)志RI為1,表明已接收了一幀數(shù)據(jù),CPU可以讀SBUF寄存器。這樣,在REN為1后,可通過(guò)查詢(xún)RI標(biāo)志來(lái)確定接收過(guò)程是否完成。當(dāng)然,在中斷處于開(kāi)放狀態(tài)下(串行中斷允許ES為1,中斷允許EA為1),當(dāng)RI有效時(shí),將產(chǎn)生串行中斷請(qǐng)求。注意:CPU響應(yīng)串行中斷后,不會(huì)自動(dòng)清除RI,需要用“CLRRI”指令清除RI,以便接收新的數(shù)據(jù)。參考程序如下: MOV SCON,#00000000B ;定義串行工作方式0 CLR P1.7 ;輸出送數(shù)脈沖(允許165芯片 ;接收并鎖存并行輸入端數(shù)據(jù)) NOP SETB P1.7 ;延遲一個(gè)機(jī)器周期后, ;取消送數(shù)負(fù)脈沖 CLR RI ;清除接收中斷標(biāo)志RI SETB REN ;允許接收LOOP: JNB RI,LOOP ;等待一幀數(shù)據(jù)接收結(jié)束 MOV A,SBUF ;讀串行輸入數(shù)據(jù)9.3 MCS-51串行口的應(yīng)用9.3.2 串行口在其他方式下的應(yīng)用 在方式1、2、3下,串口用于異步通信,不同之處在幀格式和波特率的差異。 方式1為8位數(shù)據(jù)位,方式3為9位數(shù)據(jù)位,兩種方式的波特率都是受定時(shí)器T1的溢出率控制。 在用方式1或方式3實(shí)現(xiàn)串行異步通信時(shí),初始化程序要設(shè)定串行口的工作方式,并對(duì)定時(shí)器T1進(jìn)行初始化,即設(shè)定定時(shí)器方式和定時(shí)器初值。此外,還要編寫(xiě)發(fā)送子程序和接收子程序。9.3 MCS-51串行口的應(yīng)用1、方式1 當(dāng)SM1、SM0為01時(shí),選中串行口工作在方式1,8位的異步串行通信方式,其中TXD是發(fā)送端,RXD是接收端。發(fā)送或接收一幀信息包括1位起始位(固定為0)、8位串行數(shù)據(jù)(低位在前,高位在后)和一位停止位(固定為1)共10位,波特率與定時(shí)器T1(或T2)溢出率、SMOD位有關(guān)(可變)。9.3 MCS-51串行口的應(yīng)用

①方式1的發(fā)送過(guò)程如下:在TI為0的情況下(表示當(dāng)前不處于發(fā)送狀態(tài),串行口發(fā)送控制電路處于空閑狀態(tài)),任何寫(xiě)串行數(shù)據(jù)輸出緩沖器SBUF指令(如MOVSBUF,A)均會(huì)觸發(fā)串行發(fā)送過(guò)程:51串行口自動(dòng)在8個(gè)串行數(shù)據(jù)位的前、后分別插入一個(gè)起始位(0)和一個(gè)停止位(1),構(gòu)成10位信息幀,然后按設(shè)定的波特率依次輸出起始位(0)、8個(gè)數(shù)據(jù)位(順序?yàn)閎0~b7)和停止位(1)。當(dāng)8位數(shù)據(jù)(即b7位)發(fā)送結(jié)束后(即開(kāi)始發(fā)送停止位),串行口自動(dòng)將發(fā)送中斷標(biāo)志TI置1。這樣執(zhí)行了寫(xiě)SBUF寄存器操作后,可通過(guò)查詢(xún)TI標(biāo)志來(lái)確定發(fā)送過(guò)程是否已完成。若中斷處于開(kāi)放狀態(tài)下,TI有效時(shí),將產(chǎn)生串行中斷請(qǐng)求。9.3 MCS-51串行口的應(yīng)用 ②方式1的接收過(guò)程如下:在接收中斷標(biāo)志RI為0(即串行數(shù)據(jù)輸入緩沖器SBUF處于空閑狀態(tài))情況下,當(dāng)REN位為1時(shí),串行口即處于接收狀態(tài)。在接收狀態(tài)下,存在兩個(gè)定時(shí)信號(hào):一個(gè)是移位脈沖信號(hào)(即發(fā)送波特率);另一個(gè)是RXD引腳電平狀態(tài)檢測(cè)信號(hào)(也稱(chēng)為數(shù)據(jù)檢測(cè)脈沖),它的頻率是移位脈沖的16倍。進(jìn)入接收狀態(tài)后,串行口便按數(shù)據(jù)檢測(cè)脈沖速率不斷檢測(cè)RXD引腳的電平狀態(tài),當(dāng)發(fā)現(xiàn)RXD引腳由高電平變?yōu)榈碗娖胶蟆砻靼l(fā)送端開(kāi)始發(fā)送起始位(0),啟動(dòng)接收過(guò)程,并復(fù)位接收波特率發(fā)生器,使數(shù)據(jù)檢測(cè)脈沖與接收移位脈沖保持同步,然后按設(shè)定波特率順序讀出數(shù)據(jù)位和停止位。9.3 MCS-51串行口的應(yīng)用 當(dāng)接收完一幀信息(即接收到停止位)后,如果RI位為0,便將“接收移位寄存器”中的內(nèi)容裝入串行數(shù)據(jù)輸入緩沖寄存器SBUF中,停止位裝入SCON寄存器的RB8位中,并將串行接收中斷標(biāo)志RI置1。這樣通過(guò)查詢(xún)RI標(biāo)志即可確定接收過(guò)程是否已完成。若中斷處于開(kāi)放狀態(tài)下,RI有效時(shí),也產(chǎn)生串行中斷請(qǐng)求。不過(guò)值得注意是CPU響應(yīng)串行中斷后,不會(huì)自動(dòng)清除RI,需要用“CLRRI”指令清除RI,以便接收下一幀信息。9.3 MCS-51串行口的應(yīng)用2、方式2和方式3 當(dāng)SM0、SM1為10、11時(shí),串行口工作于方式2、方式3。方式2和方式3都是9位異步串行通信口,區(qū)別是方式2的波特率固定為時(shí)鐘頻率的32或64分頻,不可變,因此不常用(原因是與其他串行通信設(shè)備連接困難)。而方式3的波特率與T1(或T2)定時(shí)器的溢出率、電源控制寄存器PCON的SMOD位有關(guān),可調(diào)。選擇不同的初值或晶振頻率,即可獲得常用的波特率,因此方式3較常用。下面以方式3為例,介紹串行口9位異步通信過(guò)程。9.3 MCS-51串行口的應(yīng)用

①數(shù)據(jù)發(fā)送:其實(shí)方式3與方式1之間的區(qū)別是:方式3是9位的異步串行通信方式,一幀信息為11位,由一位起始位(0)、9位數(shù)據(jù)、一位停止位(1)組成。因方式3需要發(fā)送9位串行數(shù)據(jù),低8位存放在SBUF寄存器中,第9位(b8)存放在SCON寄存器的TB8位。因此,發(fā)送前必須先通過(guò)位傳送指令將第9位數(shù)據(jù)寫(xiě)入SCON的TB8位,然后才能執(zhí)行寫(xiě)串行數(shù)據(jù)發(fā)送緩沖寄存器SBUF,啟動(dòng)發(fā)送過(guò)程。第9位(b8)內(nèi)容沒(méi)有規(guī)定,可以是數(shù)據(jù),也可以是奇偶校驗(yàn)位,在多機(jī)通信中,常作為數(shù)據(jù)/地址標(biāo)志或其他控制位。因此,串行口方式3應(yīng)用范圍更廣。9.3 MCS-51串行口的應(yīng)用

②數(shù)據(jù)接收:在方式3中,當(dāng)REN位為1時(shí),使串行口進(jìn)入接收狀態(tài)。接收的信息從RXD引腳輸入,接收到的低8位數(shù)據(jù)存放在“移位寄存器”中,第9位(b8)存放在SCON寄存器的RB8中。在方式3下,啟動(dòng)接收過(guò)程后,如果RI=0、SM2=0(單機(jī)方式),則接收到第9位(b8)數(shù)據(jù)后,串行口便將存放在移位寄存器中的8位數(shù)據(jù)裝入串行接收數(shù)據(jù)緩沖寄存器SBUF中,并自動(dòng)將串行接收中斷標(biāo)志RI置1。如果不滿足RI=0、SM2=0條件,本次接收信息無(wú)效,接收到第9位數(shù)據(jù)后,不將“移位寄存器”內(nèi)容裝入SBUF特殊功能寄存器,RI也不會(huì)置1。9.3 MCS-51串行口的應(yīng)用 其中RI為0條件可提供“接收緩沖器SBUF空閑”信息,防止后接收數(shù)據(jù)覆蓋以前接收的數(shù)據(jù);而設(shè)置“SM2為1,接收的第9位數(shù)據(jù)必須1,接收才有效”條件為了實(shí)現(xiàn)多機(jī)通信(當(dāng)SM2為0,不論第9位數(shù)據(jù)為低電平還是高電平均能接收,是為了在非多機(jī)通信條件下,接收發(fā)送端的奇偶校驗(yàn)位)。 方式2、3的有效接收條件與方式1似乎不同,但實(shí)際上沒(méi)有區(qū)別。因?yàn)樵诜绞?中,串行口把停止位(1)作為第9位(即b8)寫(xiě)入SCON寄存器的RB8位,而停止位總是1,因此在方式1中只要接收到停止位,RB8位就一定是1,滿足了“SM2為1時(shí),RB8位為1”的接收條件,于是在方式1中,只要RI為0,就能正常接收。9.3 MCS-51串行口的應(yīng)用例:設(shè)甲乙機(jī)以串行方式1進(jìn)行數(shù)據(jù)傳送,fosc=11.0592MHz,波特率為1200b/s。甲機(jī)發(fā)送的16個(gè)數(shù)據(jù)存在內(nèi)RAM40H~4FH單元中,乙機(jī)接收后存在內(nèi)RAM50H為首地址的區(qū)域中。

T1初值=256-×=232=E8H3212×1200解: 串行方式1波特率取決于T1溢出率(設(shè)SMOD=0), 計(jì)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論