80C51單片微機(jī)的串行口原理及應(yīng)用市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第1頁(yè)
80C51單片微機(jī)的串行口原理及應(yīng)用市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第2頁(yè)
80C51單片微機(jī)的串行口原理及應(yīng)用市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第3頁(yè)
80C51單片微機(jī)的串行口原理及應(yīng)用市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第4頁(yè)
80C51單片微機(jī)的串行口原理及應(yīng)用市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件_第5頁(yè)
已閱讀5頁(yè),還剩85頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

普通高等教育“十一五”國(guó)家級(jí)規(guī)劃教材

單片微型計(jì)算機(jī)原理與接口技術(shù)(第二版)高鋒編著科學(xué)出版社北京80C51單片微機(jī)的串行口原理及應(yīng)用第1頁(yè)第七章

80C51單片微機(jī)串行口

原理及應(yīng)用

80C51單片微機(jī)的串行口原理及應(yīng)用第2頁(yè)

通信:計(jì)算機(jī)與外界數(shù)據(jù)傳送。單臺(tái)儀器儀表或控制器往往會(huì)帶有不止一個(gè)單片微機(jī),多個(gè)智能儀器儀表或控制器在單片微機(jī)應(yīng)用系統(tǒng)中又經(jīng)常會(huì)組成一個(gè)分布式采集、控制系統(tǒng),上層由PC進(jìn)行集中管理等。80C51單片微機(jī)的串行口原理及應(yīng)用第3頁(yè)7.1串行數(shù)據(jù)通信概述

⒈傳送方式

⑴并行傳送方式

在數(shù)據(jù)傳輸時(shí),一個(gè)數(shù)據(jù)編碼字符全部各位都同時(shí)發(fā)送、并排傳輸,又同時(shí)被接收。并行傳送方式要求物理信道為并行內(nèi)總線或者并行外總線。

80C51單片微機(jī)的串行口原理及應(yīng)用第4頁(yè)

⑵串行傳送方式

在數(shù)據(jù)傳輸時(shí),一個(gè)數(shù)據(jù)編碼字符全部各位按一定次序,一位接著一位在信道中被發(fā)送和接收。 ◆串行傳送方式物理信道為串行總線。

計(jì)算機(jī)與外界數(shù)據(jù)傳送大多是串行,其傳送距離能夠從幾米直到幾千公里。

80C51單片微機(jī)的串行口原理及應(yīng)用第5頁(yè)⒉單工方式、半雙工方式、全雙工方式

⑴單工方式

信號(hào)(不包含聯(lián)絡(luò)信號(hào))在信道中只能沿一個(gè)方向傳送。

⑵半雙工方式

通信雙方均含有發(fā)送和接收信息能力,信道也含有雙向傳輸性能,通信任何一方在指定時(shí)刻,只能沿某一個(gè)方向傳送信息。⑶全雙工方式

若信號(hào)在通信雙方之間沿兩個(gè)方向同時(shí)傳送,任何一方在同一時(shí)刻既能發(fā)送又能接收信息。

80C51單片微機(jī)的串行口原理及應(yīng)用第6頁(yè)

⒊異步傳輸和同時(shí)傳輸 在數(shù)據(jù)通信中,要確保發(fā)送信號(hào)在接收端能被正確地接收,必須采取同時(shí)技術(shù)。 慣用同時(shí)技術(shù)有兩種方式,一個(gè)稱為異步傳輸也稱起止同時(shí)方式,另一個(gè)稱為同時(shí)傳輸也稱同時(shí)字符同時(shí)方式。

80C51單片微機(jī)的串行口原理及應(yīng)用第7頁(yè)⑴異步傳輸

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

⑵同時(shí)傳輸

對(duì)數(shù)據(jù)塊進(jìn)行傳輸,一個(gè)數(shù)據(jù)塊中包含著許多連續(xù)字符,在字符之間沒有空閑。同時(shí)傳輸能夠方便地實(shí)現(xiàn)某一通信協(xié)議要求幀格式。

80C51單片微機(jī)的串行口原理及應(yīng)用第8頁(yè)

⒋波特率(BAUDRATE)

串行通信傳送速率用于說明數(shù)據(jù)傳送快慢,“波特率”表示每秒種傳輸離散信號(hào)事件個(gè)數(shù),或每秒信號(hào)電平改變次數(shù),單位為band(波特)?!氨忍芈省笔侵该棵雮魉投M(jìn)制數(shù)據(jù)位數(shù),單位為比特/秒,記作bits/s或b/s或bps。 在二進(jìn)制情況下,波特率與比特率數(shù)值相等。

80C51單片微機(jī)的串行口原理及應(yīng)用第9頁(yè)串行通信慣用標(biāo)準(zhǔn)波特率在RS-232C標(biāo)準(zhǔn)中已經(jīng)有要求,如波特率為600、1200、2400、4800、9600、19200等等。 假若數(shù)據(jù)傳送速率為120字符/s,而每一個(gè)字符幀已要求為10個(gè)數(shù)據(jù)位,則傳輸速率為120×10=1200bit/s,即波特率為1200,每一位數(shù)據(jù)傳送時(shí)間為波特率倒數(shù):T=1÷1200=0.833ms80C51單片微機(jī)的串行口原理及應(yīng)用第10頁(yè)

7.280C51串行口及控制

7.2.180C51串行口結(jié)構(gòu)

串行數(shù)據(jù)通信主要有兩個(gè)技術(shù)問題,一個(gè)是數(shù)據(jù)傳送,另一個(gè)是數(shù)據(jù)轉(zhuǎn)換。 數(shù)據(jù)傳送主要處理傳送中標(biāo)準(zhǔn)、數(shù)據(jù)幀格式及工作方式等。 數(shù)據(jù)轉(zhuǎn)換要處理把數(shù)據(jù)進(jìn)行串、并行轉(zhuǎn)換,這種轉(zhuǎn)換通常由通用異步接收發(fā)送器(UART)電路來完成。數(shù)據(jù)發(fā)送端,要把并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),而在數(shù)據(jù)接收端,要把串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)。 80C51中已集成有UART。8XC552中就增加了含有I2C總線功效串行口。80C51單片微機(jī)的串行口原理及應(yīng)用第11頁(yè)

80C51中串行口是一個(gè)全雙工異步串行通信接口,它可作UART(通用異步接收和發(fā)送器)用,也可作同時(shí)移位存放器用。 口內(nèi)接收緩沖器和發(fā)送緩沖器在物理上是隔離。 能夠經(jīng)過訪問特殊功效存放器SBUF,來訪問接收緩沖器和發(fā)送緩沖器。接收緩沖器含有雙緩沖功效,即它在接收第一個(gè)數(shù)據(jù)字節(jié)后,能接收笫二個(gè)數(shù)據(jù)字節(jié)。不過在接收完第二個(gè)字節(jié)后,若笫一個(gè)數(shù)據(jù)字節(jié)還未取走,那么該數(shù)據(jù)字節(jié)將丟失。 80C51串行口基本結(jié)構(gòu)如圖7–1所表示。

80C51單片微機(jī)的串行口原理及應(yīng)用第12頁(yè) ⒈波特率發(fā)生器

由T1、T2及內(nèi)部一些控制開關(guān)和分頻器所組成。它提供串行口時(shí)鐘信號(hào)為TXCLOCK和RXCLOCK。

◆控制波特率發(fā)生器特殊功效存放器:TMOD、TCON、T2CON、PCON、TL1、TH1、TL2、TH2等。

80C51單片微機(jī)的串行口原理及應(yīng)用第13頁(yè)

⒉串行口內(nèi)部

⑴串行數(shù)據(jù)緩沖存放器SBUF 有接收緩沖器SBUF和發(fā)送緩沖器SBUF,占用同一個(gè)地址(99H)。 ⑵串行口控制存放器SCON

80C51單片微機(jī)的串行口原理及應(yīng)用第14頁(yè)⑶串行數(shù)據(jù)輸入/輸出引腳 接收方式下,串行數(shù)據(jù)從RXD引腳輸入,串行口內(nèi)部在接收緩沖器之前還有移位存放器,從而組成了串行接收雙緩沖結(jié)構(gòu),能夠防止在數(shù)據(jù)接收過程中出現(xiàn)幀重合錯(cuò)誤。 在發(fā)送方式下,串行數(shù)據(jù)經(jīng)過TXD引腳輸出。80C51單片微機(jī)的串行口原理及應(yīng)用第15頁(yè)

⑷串行口控制邏輯 ·接收來自波特率發(fā)生器時(shí)鐘信號(hào)TXCLOCK和RXCLOCK; ·控制內(nèi)部輸入移位存放器將外部串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù); ·控制內(nèi)部輸出移位存放器將內(nèi)部并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)輸出; ·控制串行中止(RI和TI)。

80C51單片微機(jī)的串行口原理及應(yīng)用第16頁(yè)7.2.280C51串行口控制

⒈串行口狀態(tài)控制存放器SCON

控制串行通信方式選擇、接收,指示串行口中止?fàn)顟B(tài)。位地址

9FH

9EH9DH9CH

9BH9AH99H

98H位功效SM0SM1SM2REN

TB8

RB8

TI

RI80C51單片微機(jī)的串行口原理及應(yīng)用第17頁(yè)⑴SM0、SM1:串行口工作方式選擇位。其功效見表7–1。⑵SM2:允許方式2、3中多處理機(jī)通信位。 方式0時(shí),SM2=0。 方式1時(shí),若SM2=l,只有接收到有效停頓位,接收中止RI才置1。 方式2和方式3時(shí), ●SM2=1,則只有當(dāng)接收到第9位數(shù)據(jù)RB8為1時(shí),才將接收到前8位數(shù)據(jù)送入緩沖器SBUF中,并把RI置1、同時(shí)向CPU申請(qǐng)中止;假如接收到第9位數(shù)據(jù)RB8為0,RI置0,將接收到前8位數(shù)據(jù)丟棄。 ●SM2=0時(shí),則不論接收到笫9位數(shù)據(jù)是0或1,都將前8位數(shù)據(jù)裝入SBUF中,并申請(qǐng)中止。

80C51單片微機(jī)的串行口原理及應(yīng)用第18頁(yè)⑶REN:允許串行接收位。REN=1時(shí),允許串行接收;REN=0時(shí),禁止串行接收。⑷TB8:方式2和方式3中要發(fā)送第9位數(shù)據(jù)。

在通信協(xié)議中,常要求TB8作為奇偶校驗(yàn)位。在80C51多機(jī)通信中,TB8=0用來表示數(shù)據(jù)幀;TB8=1表示是地址幀。 ⑸RB8:方式2和方式3中接收到第9位數(shù)據(jù)。

方式1中接收到是停頓位。方式0中不使用這一位。

80C51單片微機(jī)的串行口原理及應(yīng)用第19頁(yè)

⑹TI:發(fā)送中止標(biāo)志位。 方式0中,在發(fā)送第8位末尾置位;在其它方式時(shí),在發(fā)送停頓位開始時(shí)設(shè)置。 由硬件置位,用軟件去除。 ⑺RI:接收中止標(biāo)志位。 方式0中,在接收第8位末尾置位;在其它方式時(shí),在接收停頓位中間設(shè)置。 由硬件置位,用軟件去除。

80C51單片微機(jī)的串行口原理及應(yīng)用第20頁(yè)

⒉電源控制及波特率選擇存放器PCON

最高位SMOD與串行口控制相關(guān),其它位與低功耗工作方式相關(guān)。

D7

D6

D5

D4

D3

D2

D1

D0SMOD——WLF

GF1

GF0

PDIDLSMOD:串行通信波特率系數(shù)控制位。

當(dāng)SMOD=1時(shí),使波特率加倍。復(fù)位后,SMOD=0。

80C51單片微機(jī)的串行口原理及應(yīng)用第21頁(yè)

⒊串行數(shù)據(jù)存放器SBUF

包含在物理上是隔離兩個(gè)8位存放器:發(fā)送數(shù)據(jù)存放器和接收數(shù)據(jù)存放器,它們共用一個(gè)地址99H。

D7

D6

D5

D4

D3

D2

D1

D0SD7

SD6

SD5

SD4

SD3

SD2

SD1

SD0★讀SBUF(MOV A,SBUF),則訪問接收數(shù)據(jù)存放器; ★寫SBUF(MOVSBUF,A),則訪問發(fā)送數(shù)據(jù)存放器。

80C51單片微機(jī)的串行口原理及應(yīng)用第22頁(yè)7.3串行口工作方式

在串行口控制存放器SCON中,SM0和SM1位決定串行口工作方式。80C51串行口共有4種工作方式。

80C51單片微機(jī)的串行口原理及應(yīng)用第23頁(yè)

7.3.1串行口方式0同時(shí)移位存放器方式

SM0=0、SM1=0。同時(shí)移位寄器方式。 ·數(shù)據(jù)傳輸波特率固定為(1/12)fosc。 ·由RXD引腳輸入或輸出數(shù)據(jù), ·由TXD引腳輸出同時(shí)移位時(shí)鐘。 ·接收/發(fā)送是8位數(shù)據(jù),傳輸時(shí)低位在前。幀格式如圖7-2所表示。

方式0時(shí)工作原理圖如圖7-3所表示。

80C51單片微機(jī)的串行口原理及應(yīng)用第24頁(yè)

⑴發(fā)送 當(dāng)執(zhí)行任何一條寫SBUF指令(MOVSBUF,A)時(shí),就開啟串行數(shù)據(jù)發(fā)送。 在執(zhí)行寫入SBUF指令時(shí),選通內(nèi)部D觸發(fā)器置1,組成發(fā)送移位存放器第9位, 并使發(fā)送控制器開始發(fā)送。當(dāng)發(fā)送脈沖有效之后,移位存放器內(nèi)容由RXD引腳串行移位輸出;移位脈沖由TXD引腳輸出。

在發(fā)送有效期間,每個(gè)機(jī)器周期,發(fā)送移位存放器右移一位,在其左邊補(bǔ)0。當(dāng)數(shù)據(jù)最高位移到移位存放器輸出位時(shí),原寫入第9位l恰好移到最高位左邊一位,由此向左全部位均為0,零檢測(cè)器通知發(fā)送控制器要進(jìn)行最終一次移位,并撤消發(fā)送有效,同時(shí)使發(fā)送中止標(biāo)志TI置位,若CPU響應(yīng)中止,則執(zhí)行從0023H開始串行口發(fā)送中止服務(wù)程序。

80C51單片微機(jī)的串行口原理及應(yīng)用第25頁(yè)

⑵接收

當(dāng)REN=1且RI位去除時(shí),就會(huì)開啟一次接收過程。 在下一機(jī)器周期S6P2時(shí)刻,接收控制器將11111110寫入接收移位存放器,并在下一時(shí)鐘周期S1P1使接收控制器接收有效,打開“與非門”,同時(shí)由TXD引腳輸出移位脈沖。在移位脈沖控制下,接收移位存放器內(nèi)容每一個(gè)機(jī)器周期左移一位,同時(shí)由RXD引腳接收一位輸入信號(hào)。 每當(dāng)接收移位存放器左移一位,原寫入11111110也左移一位。當(dāng)最右邊0移到最左邊時(shí),標(biāo)志著接收控制器要進(jìn)行最終一次移位。在最終一次移位即將結(jié)束時(shí),接收移位存放器內(nèi)容送入接收數(shù)據(jù)緩沖存放器SBUF,然后在開啟接收第10個(gè)機(jī)器周期S1P1時(shí),去除接收信號(hào),置位SCON中RI,發(fā)出中止申請(qǐng)。完成一幀數(shù)據(jù)接收過程。若CPU響應(yīng)中止,則執(zhí)行從0023H開始串行口接收中止服務(wù)程序80C51單片微機(jī)的串行口原理及應(yīng)用第26頁(yè)7.3.2串行口方式1 8位UART

SM0=0、SM1=l。 ·數(shù)據(jù)傳輸波特率由T1和T2溢出決定,可用程序設(shè)定。當(dāng)T2CON存放器中RCLK和TCLK置位時(shí),采取T2作為串行口接收和發(fā)送波特率發(fā)生器。而當(dāng)RCLK和TCLK都為零時(shí),采取T1作為串行口接收和發(fā)送波特率發(fā)生器。 ·由TXD引腳發(fā)送數(shù)據(jù)。 ·由RXD引腳接收數(shù)據(jù)。

80C51單片微機(jī)的串行口原理及應(yīng)用第27頁(yè)·發(fā)送或接收一幀信息為10位:1位起始位(0)、8位數(shù)據(jù)位(低位在前)和l位停頓位(1)。幀格式如圖7-4所表示。

80C51單片微機(jī)的串行口原理及應(yīng)用第28頁(yè)⑴發(fā)送:方式1時(shí),發(fā)送工作原理圖如圖7-5所表示。

當(dāng)執(zhí)行任何一條寫SBUF指令時(shí),就開啟串行數(shù)據(jù)發(fā)送。在執(zhí)行寫入SBUF指令時(shí),也將1寫入發(fā)送移位存放器第9位(由SBUF和1個(gè)獨(dú)立D觸發(fā)器組成),并通知發(fā)送控制器有發(fā)送請(qǐng)求。80C51單片微機(jī)的串行口原理及應(yīng)用第29頁(yè)

開始發(fā)送后一個(gè)位周期,發(fā)送信號(hào)有效,開始將起始位送TXD引腳。一位時(shí)間后,數(shù)據(jù)信號(hào)有效。發(fā)送移位存放器將數(shù)據(jù)由低位到高位次序輸出至TXD引腳。一位時(shí)間后,第一個(gè)移位脈沖出現(xiàn)將最低數(shù)據(jù)位從右邊移出,同時(shí)0從左邊擠入。當(dāng)最高數(shù)據(jù)位移至發(fā)送移位存放器出端時(shí),先前裝入第9位l,恰好在最高數(shù)據(jù)位左邊,而它右邊全部為0。這種狀態(tài)被零檢測(cè)器檢測(cè)到,在第10個(gè)位周期(16分頻計(jì)數(shù)器回0時(shí)),發(fā)送控制器進(jìn)行最終一次移位,去除發(fā)送信號(hào),同時(shí)使SCON存放器中TI置位,完成了一幀數(shù)據(jù)發(fā)送全過程。若CPU響應(yīng)中止,則執(zhí)行從0023H開始串行口發(fā)送中止服務(wù)程序。80C51單片微機(jī)的串行口原理及應(yīng)用第30頁(yè)

⑵接收方式1時(shí),接收工作原理圖如圖7-6所表示。

當(dāng)REN=1且去除RI后,若在RXD引腳上檢測(cè)到一個(gè)1到0跳變,馬上開啟一次接收。同時(shí),復(fù)位16分頻計(jì)數(shù)器,使輸入位邊緣與時(shí)鐘對(duì)齊,并將1FFH(即9個(gè)l)寫入接收移位存放器。接收控制器以波特率16倍速率繼續(xù)對(duì)RXD引腳進(jìn)行檢測(cè),

計(jì)數(shù)器16個(gè)狀態(tài)把每一位時(shí)間分為16份,對(duì)每一位時(shí)間第7、8、9個(gè)計(jì)數(shù)狀態(tài),位檢測(cè)器對(duì)RXD端值采樣,這3個(gè)狀態(tài)理論上對(duì)應(yīng)于每一位中央值。若發(fā)送端與接收端波特率有差異,就會(huì)發(fā)生偏移,只要這種差異在允許范圍內(nèi),就不至于發(fā)生錯(cuò)位或漏碼。在上述3個(gè)狀態(tài)下,取得3個(gè)采樣值,其中最少有兩個(gè)值是一致,即采取3取2多數(shù)表決法,,可抑制噪聲。

80C51單片微機(jī)的串行口原理及應(yīng)用第31頁(yè)

假如在第1個(gè)時(shí)鐘周期中接收到不是0,說明它不是一幀數(shù)據(jù)起始位,則復(fù)位接收電路,繼續(xù)檢測(cè)RXD引腳上l到0跳變。假如接收到是起始位,就將其移入接收移位存放器,然后接收該幀其它位。接收到位從右邊移入,原來寫入1,從左邊移出,當(dāng)起始位移到最左邊時(shí),接收控制器將控制進(jìn)行最終一次移位,把接收到9位數(shù)據(jù)送入接收數(shù)據(jù)緩沖器SBUF和RB8,而且置位RI。 在進(jìn)行最終一次移位時(shí),能將數(shù)據(jù)送入接收數(shù)據(jù)緩沖器SBUF和RB8,而且置位RI條件是: ·RI=0即上一幀數(shù)據(jù)接收完成時(shí)發(fā)出中止請(qǐng)求已被響應(yīng),SBUF中數(shù)據(jù)已被取走。 ·SM2=0或接收到停頓位=1。

若以上兩個(gè)條件中有一個(gè)不滿足,將不可恢復(fù)地丟失接收到這一幀信息。

80C51單片微機(jī)的串行口原理及應(yīng)用第32頁(yè)7.3.3

串行口方式2和3

9位UART

SM0=1、SM1=0,選擇方式2; SM1=1、SM0=1,選擇方式3。 ·由TXD引腳發(fā)送數(shù)據(jù)。 ·由RXD引腳接收數(shù)據(jù)。 ·發(fā)送或接收一幀信息為11位:1位起始位(0)、8位數(shù)據(jù)位(低位在前)、1位可編程位和1位停頓位(l)。發(fā)送時(shí)可編程位TB8可設(shè)置為1或0,接收時(shí)可編程位進(jìn)入SCON存放器RB8位?!し绞?波特率是固定,為振蕩器頻率1/32或1/64。.方式3波特率則由T1和T2溢出決定,可用程序設(shè)定。

80C51單片微機(jī)的串行口原理及應(yīng)用第33頁(yè)幀格式如如圖7-7所表示。方式2時(shí)工作原理圖如圖7-8所表示。80C51單片微機(jī)的串行口原理及應(yīng)用第34頁(yè)

在進(jìn)行最終一次移位時(shí),能將數(shù)據(jù)送入接收數(shù)據(jù)緩沖器SBUF和RB8,而且置位RI條件是: ·RI=0; ·SM2=0或接收到停頓位=1。

若以上兩個(gè)條件中有一個(gè)不滿足,將不可恢復(fù)地丟失接收到這一幀信息。

80C51單片微機(jī)的串行口原理及應(yīng)用第35頁(yè)7.4

多處理機(jī)通信方式

SM2:多處理機(jī)通信位。 當(dāng)串行口以方式2或方式3接收時(shí),若SM2=1,只有當(dāng)接收到第9位數(shù)據(jù)RB8為1時(shí),才將數(shù)據(jù)送入接收緩沖器SBUF,并使RI置1,申請(qǐng)中止,不然數(shù)據(jù)將丟失;若SM2=0,則不論第9位數(shù)據(jù)RB8是1還是0,都能將數(shù)據(jù)裝入SBUF,而且發(fā)中止。 利用這一特征,便可實(shí)現(xiàn)主機(jī)與多個(gè)從機(jī)之間串行通信。圖7-9為多機(jī)通信連線示意圖,系統(tǒng)中左邊80C51為主機(jī),其余為1~n號(hào)從機(jī),并確保每臺(tái)從機(jī)在系統(tǒng)中編號(hào)是惟一。80C51單片微機(jī)的串行口原理及應(yīng)用第36頁(yè)

系統(tǒng)初始化時(shí),將全部從機(jī)中SM2位均設(shè)置為1,并處于允許串行口中止接收狀態(tài)。 主機(jī)欲與某從機(jī)通信,先向全部從機(jī)發(fā)出所選從機(jī)地址,從機(jī)地址符合后,接著才發(fā)送命令或數(shù)據(jù)。

·在主機(jī)發(fā)地址時(shí),置第9位數(shù)據(jù)(RB8)為1,表示主機(jī)發(fā)送是地址幀; ·當(dāng)主機(jī)呼叫某從機(jī)聯(lián)絡(luò)正確后,主機(jī)發(fā)送命令或數(shù)據(jù)幀時(shí),將第9位數(shù)據(jù)(RB8)清0。

80C51單片微機(jī)的串行口原理及應(yīng)用第37頁(yè)各從機(jī)因?yàn)镾M2置1,將響應(yīng)主機(jī)發(fā)來第9位數(shù)據(jù)(RB8)為1地址信息。從機(jī)響應(yīng)中止后,有兩種不一樣操作:

·若從機(jī)地址與主機(jī)點(diǎn)名地址不相同,則該從機(jī)將繼續(xù)維持SM2為l,從而拒絕接收主機(jī)后面發(fā)來命令或數(shù)據(jù)信息,等候主機(jī)下一次點(diǎn)名。 ·若從機(jī)地址與主機(jī)點(diǎn)名地址相同,該從機(jī)將本機(jī)SM2清0,繼續(xù)接收主機(jī)發(fā)來命令或數(shù)據(jù),響應(yīng)中止。

80C51單片微機(jī)的串行口原理及應(yīng)用第38頁(yè)7.5串行口應(yīng)用

7.5.1串行口波特率發(fā)生器及波特率計(jì)算

串行口波特率發(fā)生器如圖7-10所表示。 ·方式0時(shí)波特率由振蕩器頻率(fosc)所確定:波特率為fosc/12?!し绞?時(shí)波特率由振蕩器頻率(fosc)和SMOD位確定:

當(dāng)SMOD位=1時(shí),波特率=fosc/32;當(dāng)SMOD=0時(shí),波特率=fosc/64。

·方式1和3時(shí)波特率由定時(shí)器T1和T2溢出率和SMOD確定。

80C51單片微機(jī)的串行口原理及應(yīng)用第39頁(yè)

(1)用定時(shí)器T1(=0)產(chǎn)生波特率

·定時(shí)器T1工作于方式0:T1為13位計(jì)數(shù)器。

式中:TC——13位計(jì)數(shù)器初值; X——中止服務(wù)程序機(jī)器周期數(shù),在中止服務(wù)程序中重新對(duì)定時(shí)器置數(shù)。

80C51單片微機(jī)的串行口原理及應(yīng)用第40頁(yè)·定時(shí)器T1工作于方式1:T1為16位計(jì)數(shù)器。式中:TC——16位計(jì)數(shù)器初值; X——中止服務(wù)程序機(jī)器周期數(shù),在中止服務(wù)程序中重新對(duì)定時(shí)器置數(shù)。 ·定時(shí)器Tl工作于方式2:T1為8位可重裝方式,用TL1計(jì)數(shù),用TH1裝初值。

80C51單片微機(jī)的串行口原理及應(yīng)用第41頁(yè)7.5.2方式0編程和應(yīng)用

例:

使用74LS164并行輸出端接8只發(fā)光二極管,利用它串入并出功效,把發(fā)光二極管從左向右依次點(diǎn)亮,并不停循環(huán)之。發(fā)光二極管擴(kuò)展連接路如圖7-11所表示。

80C51單片微機(jī)的串行口原理及應(yīng)用第42頁(yè)

MOV SCON,#00H ;設(shè)串行口為方式0, CLR ES ;禁止串行口中止 MOV A,#80H ;先顯示最左邊發(fā)光二極管LED: MOV SBUF,A ;串行輸出 JNB TI,$ ;輸出等候 CLR TI ;軟件清中止標(biāo)志 ACALL DELAY ;輪顯間隔 RR A ;發(fā)光右移 AJMP LED ;循環(huán)DELAY:…… ;延時(shí)子程序 RET80C51單片微機(jī)的串行口原理及應(yīng)用第43頁(yè)7.5.3方式1編程和應(yīng)用

例:試編寫雙機(jī)通信程序。甲、乙雙機(jī)均為串行口方式1,并以定時(shí)器T1方式2為波特率發(fā)生器,波特率為2400。波特率計(jì)算:這里使用6MHz晶振,以T1方式2制訂波特率。計(jì)算定時(shí)器T1計(jì)數(shù)初值:

波特率=2smod×fosc×1 3212

28

-TH1TH1=28-(2SMOD×fosc)÷(波特率×32×12) =256-(20×6×106)÷(2400×32×12) =256-6.5=249.5=FAH

80C51單片微機(jī)的串行口原理及應(yīng)用第44頁(yè) ⑴甲機(jī)發(fā)送: 將以片內(nèi)RAM78H及77H內(nèi)容為首地址、以76H及75H內(nèi)容減1為末地址數(shù)據(jù)塊內(nèi)容,經(jīng)過串行口傳至乙機(jī)。 例:(78H)=20H ;首地址高位 (77H)=00H (76H)=20H ;末地址高位 (75H)=20H

即要求程序?qū)⑵釸AMH~20lFH中內(nèi)容輸出到串行口。對(duì)數(shù)據(jù)塊首、末地址傳送以查詢方式進(jìn)行,而數(shù)據(jù)傳送以中止方式進(jìn)行。

80C51單片微機(jī)的串行口原理及應(yīng)用第45頁(yè) ORG 0000H SJMP TRANS ORG 0023H ;串行口中止入口 AJMPSINT

ORG 0030HTRANS:MOVTMOD,#20H ;置T1為定時(shí)器方式2 MOV TL1,#0FAH ;置T1定時(shí)常數(shù)(波特率為 ;2400) MOVTH1,#0FAH SETBEA ;允許中止 CLRES ;關(guān)串行口中止

80C51單片微機(jī)的串行口原理及應(yīng)用第46頁(yè)

MOV PCON,#00H ;波特率不倍增 CLRTI ;清發(fā)送中止 MOVSCON,#40H ;置串行口方式1 MOVSBUF,78H ;輸出首地址WAIT1:JNBTI,WAITI;查詢等候發(fā)送結(jié)束 CLR TI MOV SBUF,77HWAIT2:JNBTI,WAIT2;查詢等候發(fā)送結(jié)束 CLRTI

80C51單片微機(jī)的串行口原理及應(yīng)用第47頁(yè) MOVSBUF,76H ;輸出末地址WAIT3:JNBTI,WAIT3 CLRTI MOVSBUF,75HWAIT4:JNBTI,WAIT4 CLRTI SETBES ;允許串行口中止

80C51單片微機(jī)的串行口原理及應(yīng)用第48頁(yè) MOVDPH,78H ;輸出數(shù)據(jù)塊中第1個(gè)數(shù)據(jù) MOVDPL,77H MOVXA,@DPTR CLRTI MOVSBUF,A SJMP $ ;中止等候

80C51單片微機(jī)的串行口原理及應(yīng)用第49頁(yè) ORG 0200H ;串行口中止服務(wù)程序SINT:PUSH DPL ;保護(hù)現(xiàn)場(chǎng) PUSH DPH PUSH A INC 77H ;地址加1 MOV A,77H JNZ JP1 INC 78H

80C51單片微機(jī)的串行口原理及應(yīng)用第50頁(yè)JP1:MOV A,78H CJNEA,76H,END1 ;判數(shù)據(jù)傳送是否結(jié)束,未 ;結(jié)束則轉(zhuǎn)END1 MOVA,77H CJNEA,75H,END1 CLRES ;結(jié)束,關(guān)串行口中止80C51單片微機(jī)的串行口原理及應(yīng)用第51頁(yè)ESCOM:POPA ;恢復(fù)現(xiàn)場(chǎng) POPDPH POPDPL RETI

END1:MOVDPH,78H;數(shù)據(jù)輸出未結(jié)束,則繼續(xù)發(fā)送 MOVDPL,77H MOVXA,@DPTR CLRTI MOVSBUF,A RETI80C51單片微機(jī)的串行口原理及應(yīng)用第52頁(yè) ⑵乙機(jī)接收

乙機(jī)經(jīng)過RXD引腳接收甲機(jī)發(fā)來數(shù)據(jù),接收波特率與甲機(jī)一樣。接收第1、2字節(jié)是數(shù)據(jù)塊首地址,第3、4字節(jié)是數(shù)據(jù)塊末地址減1,第5字節(jié)開始是數(shù)據(jù),接收到數(shù)據(jù)依次存入數(shù)據(jù)塊首地址開始存放器中。

ORG 0000H SJMP RECEIVE ;乙機(jī)接收 ORG 0023H AJMP RSINT ;串行口中止入口 80C51單片微機(jī)的串行口原理及應(yīng)用第53頁(yè)

ORG 0030HRECEIVE:MOVTMOD,#20H

;設(shè)T1為定時(shí)器方式2

MOV TL1,#0FAH ;置T1定時(shí)常數(shù)MOVTH1,#0FAH SETBEA ;允許中止 SETBES ;允許串行口中止 CLRTI ;清發(fā)送中止 MOVSCON,#50H ;置串行口方式1、接收 CLR20H ;置地址標(biāo)志(20H=0,為 ;地址;20H=1,為數(shù)據(jù))

80C51單片微機(jī)的串行口原理及應(yīng)用第54頁(yè) MOV70H,#78H SJMP $ ;中止等候

ORG 0200HRSINT:PUSHDPL;保護(hù)現(xiàn)場(chǎng) PUSHDPH PUSHACC MOVA,R0 PUSHACC JB20H,DATA;判別接收是地址還是數(shù)據(jù), ;是數(shù)據(jù),轉(zhuǎn)移

80C51單片微機(jī)的串行口原理及應(yīng)用第55頁(yè) MOVR0,70H ;是地址,分別送入78H~75H中去 MOVA,SBUFMOV@R0,A DEC70H CLRRI MOVA,#74H CJNEA,70H,RETURN;是地址,轉(zhuǎn)結(jié)束 SETB20H ;地址已接收完,置接收數(shù)據(jù)標(biāo)志

80C51單片微機(jī)的串行口原理及應(yīng)用第56頁(yè)RETURN:POPACC;恢復(fù)現(xiàn)場(chǎng) MOVR0,A POPACC POPDPH POPDPL RETIDATA:MOVDPH,78H ;接收數(shù)據(jù) MOVDPL,77H

80C51單片微機(jī)的串行口原理及應(yīng)用第57頁(yè) MOVA,SBUF MOVX@DPTR,A ;將數(shù)據(jù)送入片外RAM CLRRI INC77H ;地址加1 MOVA,77H JNZDATA1 INC78H

80C51單片微機(jī)的串行口原理及應(yīng)用第58頁(yè)DATA1∶MOVA,76H CJNZA,78H,RETURN MOV A,75H CJNEA,77H,RETURN CLRES ;結(jié)束,關(guān)串行口中止 AJMPRETURN80C51單片微機(jī)的串行口原理及應(yīng)用第59頁(yè) ASCII碼由7位組成,其最高位可作為奇偶校驗(yàn)位用。數(shù)據(jù)塊經(jīng)過串行口發(fā)送和接收,采取8位異步通信,波特率為1200,已知fosc=11.0592MHz。 從內(nèi)部RAM單元20H~3FH中取出ASCII碼加上奇偶校驗(yàn)位之后發(fā)出。設(shè)串行口為方式1,T1為方式2作為串行口波特率發(fā)生器?!逽MOD=0 ∴TH1=232=E8H例經(jīng)過串行口發(fā)送帶奇偶校驗(yàn)位數(shù)據(jù)塊80C51單片微機(jī)的串行口原理及應(yīng)用第60頁(yè) ORG 0000H MOV TMOD,#20H ;設(shè)T1為方式2 MOV TL1,#0E8H ;T1定時(shí)常數(shù) MOV TH1,#0E8H MOV SCON,#01000000B ;設(shè)串行口為方式1 MOV R0,#20H ;設(shè)發(fā)送數(shù)據(jù)區(qū)首址 MOV R7,#32 ;發(fā)送32個(gè)ASCII碼數(shù)據(jù)80C51單片微機(jī)的串行口原理及應(yīng)用第61頁(yè)LOOP:MOVA,@R0 ;取ASCII碼數(shù)據(jù) ACALLSP-OUT ;調(diào)用串行口發(fā)送子程序 INC R0 ;未發(fā)送完,則繼續(xù) DJNZ R7,LOOP

80C51單片微機(jī)的串行口原理及應(yīng)用第62頁(yè)串行口發(fā)送子程序SP-OUT:MOVC,P ;設(shè)奇校驗(yàn)位 CPL C MOV ACC.7,C MOV SBUF,A ;帶校驗(yàn)位發(fā)送 JNB TI,$ ;發(fā)送等候 CLR TI RET

80C51單片微機(jī)的串行口原理及應(yīng)用第63頁(yè)

把接收到32個(gè)字節(jié)數(shù)據(jù)存放到20H~3FH中,波特率為1200,若奇校驗(yàn)犯錯(cuò),將進(jìn)位標(biāo)志C置1。 ORG 0000H MOV TMOD,#20H ;設(shè)T1為定時(shí)器方式2 MOV TL1,#0E8H ;設(shè)T1時(shí)間常數(shù) MOV TH1,#0E8H MOV R0,#20H ;接收緩沖區(qū)首址 MOV R7,#32 ;接收字節(jié)計(jì)數(shù)器例經(jīng)過串行口接收帶奇偶校驗(yàn)位數(shù)據(jù)塊80C51單片微機(jī)的串行口原理及應(yīng)用第64頁(yè)LOOP:ACALL SP-IN ;調(diào)用帶奇校驗(yàn)串行口接 ;收子程序

JC ERROR ;校驗(yàn)錯(cuò),轉(zhuǎn)犯錯(cuò)處理 MOV @R0,A ;存入 INC R0 DJNZ R7,LOOP ;未接收完,則繼續(xù)ERROR:… ;校驗(yàn)錯(cuò),處理80C51單片微機(jī)的串行口原理及應(yīng)用第65頁(yè)SP-IN:MOVSCON,#01010000B ;設(shè)串行口為方式 ;1,開啟接收 JNB RI,$ CLR RI MOV A,SBUF ;接收一個(gè)字節(jié) MOV C,P ;檢驗(yàn)奇校驗(yàn)位,若犯錯(cuò),C=1 CPL C ANL A,#7FH ;去掉校驗(yàn)位后ASCII碼數(shù)據(jù) RET80C51單片微機(jī)的串行口原理及應(yīng)用第66頁(yè)7.5.4方式2和3編程和應(yīng)用

方式2接收/發(fā)送一幀信息是11位:第0位是起始位(0);第1~8位是數(shù)據(jù)位;第9位是程控位,可由用戶置TB8決定;第10位是停頓位?!?方式2波特率為: 波特率=振蕩器頻率/n其中:當(dāng)SMOD=0時(shí),n=64; 當(dāng)SMOD=l時(shí),n=32。方式2和方式3基本一樣,僅波特率設(shè)置不一樣。80C51單片微機(jī)的串行口原理及應(yīng)用第67頁(yè)工作方式2發(fā)送一幀信息為11位:1位起始位,8位數(shù)據(jù)位,1位可編程為1或0第9位(可用作奇偶校驗(yàn)位或數(shù)據(jù)/地址標(biāo)志位)和1位停頓位。奇偶校驗(yàn)位發(fā)送是在將發(fā)送數(shù)據(jù)寫入發(fā)送緩沖器SBUF之前,先將奇偶標(biāo)志寫入SCONTB8位。例:試編寫串行接口以工作方式2發(fā)送數(shù)據(jù)中止服務(wù)程序80C51單片微機(jī)的串行口原理及應(yīng)用第68頁(yè)

ORG 0023H AJMP SPINT

SPINT:CLREA ;關(guān)中止 PUSHPSW ;保護(hù)現(xiàn)場(chǎng) PUSHACC SETBEA ;開中止 SETBPSW.4 ;切換存放器工作組 CLRTI ;去除發(fā)送中止請(qǐng)求標(biāo)志 MOVA,@R0 ;取數(shù)據(jù),置奇偶標(biāo)志位

80C51單片微機(jī)的串行口原理及應(yīng)用第69頁(yè) MOVC,P ;奇偶標(biāo)志位P送TB8 MOVTB8,C MOVSBUF,A ;數(shù)據(jù)寫入發(fā)送緩沖器,開啟發(fā)送 INCR0 ;數(shù)據(jù)地址指針加1 CLR 0AFH ;恢復(fù)現(xiàn)場(chǎng) POP ACC POP PSW SETB0AFH CLRPSW.4 ;切換存放器工作組 RETI ;中止返回

80C51單片微機(jī)的串行口原理及應(yīng)用第70頁(yè)例:方式3和方式1不一樣在于接收/發(fā)送信息位數(shù)不一樣,而與方式2不一樣僅在于波特率設(shè)置不一樣。 這里以雙機(jī)通信為例。串行口以方式3進(jìn)行接收和發(fā)送,以T1為波特率發(fā)生器,選擇定時(shí)器方式2。

程序首先發(fā)送數(shù)據(jù)存放地址,而地址高位存放在78H中,地址低位存放在77H中;然后發(fā)送00H,01H,02H,…,F(xiàn)EH,共255個(gè)數(shù)據(jù)以后結(jié)束。

80C51單片微機(jī)的串行口原理及應(yīng)用第71頁(yè) 甲機(jī)發(fā)送程序:

ORG 0023H CLRTI RETITRANSFER:MOVTMOD,#20H ;置T1為定時(shí)方式2 MOVTL1,#0F0H ;置T1定時(shí)常數(shù) MOVTH1,#0F0H SETBEA ;允許中止 CLRES ;禁止串行口中止 CLRET1 ;禁止定時(shí)器T1中止

80C51單片微機(jī)的串行口原理及應(yīng)用第72頁(yè)

MOVSCON,#0E0H ;置串行口方式3 SETBTB8 ;表示發(fā)送是地址 MOVSBUF,78H ;發(fā)送地址 JNBTI,$

CLRTI MOVSBUF,77H JNB TI,$ CLR TI MOVIE,#90H ;允許串行口中止 CLRSM2 ;以后發(fā)送是數(shù)據(jù)

80C51單片微機(jī)的串行口原理及應(yīng)用第73頁(yè)

MOVA,#00H ;發(fā)送數(shù)據(jù)

LOOP:MOV SBUF,A INC A JNB TI,$ CLR TI CJNZA,#0FFH,LOOP ;判是否結(jié)束 CLRES ;禁止串行口中止 CLREA ;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論