單片機UAR串行接口_第1頁
單片機UAR串行接口_第2頁
單片機UAR串行接口_第3頁
單片機UAR串行接口_第4頁
單片機UAR串行接口_第5頁
已閱讀5頁,還剩88頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第七章UART串行接口

串行通信是CPU與外界交換信息的一種基本通信方式。為了實現(xiàn)串行通信,絕大多數(shù)單片機都配置了UART串行接口。17.1串行通信概述

計算機與外界的信息交換稱為通信。基本的通信方式有兩種。并行通信(parallelcommunication):所傳送數(shù)據(jù)的各位同時發(fā)送或接收。串行通信(serialcommunication):所傳送數(shù)據(jù)的各位按順序一位一位地發(fā)送或接收。2在并行通信中,一個并行數(shù)據(jù)占多少位二進制數(shù),就要多少根傳輸線,這種方式的特點是通信速度快,但傳輸線多,價格較貴,適合近距離傳輸。

串行通信僅需1~2根傳輸線,故在長距離傳輸數(shù)據(jù)時比較經(jīng)濟,但由于它每次只能傳送1位,所以傳送速度較慢。3圖7.1基本通信方式圖示47.1.1同步通信和異步通信方式串行通信分同步和異步兩種方式。51.異步通信ASYNC

在異步通信中數(shù)據(jù)或字符是逐幀(frame)傳送的。幀定義為一個字符的完整的通信格式,通常也稱為幀格式。最常見的幀格式一般是先用一個起始位“0”表示字符的開始;然后是5~8位數(shù)據(jù),規(guī)定低位在前,高位在后;其后是奇偶校驗位;最后是停止位,用以表示字符的結束,停止位可以是1位、1.5位、2位,不同的計算機規(guī)定有所不同。從起始位開始到停止位結束就構成完整的1幀。6起始位——通信線上沒有數(shù)據(jù)傳送時,為高電平(邏輯1);當要發(fā)送數(shù)據(jù)時,首先發(fā)1個低電平信號(邏輯0),此信號稱為“起始位”,表示開始傳輸1幀數(shù)據(jù)。數(shù)據(jù)位——起始位之后的位即數(shù)據(jù)位。數(shù)據(jù)位可以是5、6、7或8位(不同計算機的規(guī)定不同),上圖的數(shù)據(jù)位為8位。一般從最低位開始傳送,最高位在最后。7奇偶校驗位——數(shù)據(jù)位之后的位為奇偶校驗位(有的方式具有)。此位可用于判別字符傳送的正確性,其有3種可能的選擇,即奇、偶、無校驗,用戶可根據(jù)需要選擇(在有的格式中,該位可省略)。在80C51單片機中,此位還可以用來確定該幀字符信息的性質(地址或數(shù)據(jù))。停止位——校驗位后為停止位,用于表示1幀結束,用高電平(邏輯1)表示。停止位可以是1、1.5或2位,不同計算機的規(guī)定有所不同。8異步通信的主要特點如下:進行串行通信的單片機的時鐘相互獨立;其時鐘頻率可以不相同;在通信時不要求有同步時鐘信號。由于異步通信是逐幀進行傳輸?shù)?,各位之間的時間間隔應該相同,所以必須保證2個單片機之間有相同的傳送波特率。如果傳送波特率不同,則時間間隔不同;當誤差超過5%時,就不能正常進行通信。由于信息傳輸可以是隨時不間斷地進行的,因而幀與幀之間的時間間隔可以是不固定的,間隙處為高電平。9 由于異步通信每傳送一幀有固定格式,通信雙方只需按約定的幀格式來發(fā)送和接收數(shù)據(jù),所以硬件結構比同步通信方式簡單。此外,它還能利用校驗位檢測錯誤,所以這種通信方式應用較廣泛。在單片機中主要是采用異步通信方式。102.同同步通通信SYNC在同步步通信信中,,數(shù)據(jù)據(jù)或字字符開開始處處是用用一同同步字字符來來指示示(一一般約約定為為l~~2個個字符符),,以實實現(xiàn)發(fā)發(fā)送端端和接接收端端同步步,一一旦檢檢測到到約定定同步步字符符,下面就就連續(xù)續(xù)、順順序地地發(fā)送送和接接收數(shù)數(shù)據(jù)。11由于同同步通通信數(shù)數(shù)據(jù)塊塊傳送送時去去掉了了每個個數(shù)字字都必必須具具有的的字符符開始始和結結束的的標志志,且且它一一次可可以發(fā)發(fā)送一一個數(shù)數(shù)據(jù)段段(多多個數(shù)數(shù)據(jù))),因因此,,其速度度高于于異步步通信信;但這這種方方式要要求接接收和和發(fā)送送時鐘鐘嚴格格保持同同步,在通通信時時通常常要求求有同同步時時鐘信信號,,對硬硬件結結構要要求較較高。。由于于這種種方式式易于于進行行串行行外圍圍擴展展,所所以目目前很很多型型號的的單片片機都都增加加了串串行同同步通通信接接口,,如目目前已已得到到廣泛泛應用用的I2C串行行總線線和SPI串行行接口口等。。127.1.2串串行行通信信的數(shù)數(shù)據(jù)傳傳送速速率傳送速速率是指數(shù)數(shù)據(jù)傳傳送的的速度度。用b/s或或bps((比特特/秒秒)表表示,,稱為為比特率率。在二二進制制的情情況下下,比比特率率與波波特率率數(shù)值值相等等,因因而在在單片片機的的串行行通信信中,,常稱稱為波特率率。假如數(shù)數(shù)據(jù)傳傳送的的速率率為120個字字符每每秒,,每個個字符符由1個起起始位位、8個數(shù)數(shù)據(jù)位位和1個停停止位位組成成,則則其傳傳送波波特率率為::10b×120/s=1200b/s=1200波波特每一位位的傳傳送時時間即即為波波特率率的倒倒數(shù)::13異步通通信的的數(shù)據(jù)據(jù)傳送送速率率一般般為50b/s~100kb/s,常常用于于計算算機到到CRT終終端,,以及及雙機機或多多機之之間的的通信信等。。147.1.3串串行行通信信的方方式在串行行通信信中,,數(shù)據(jù)據(jù)是在在兩機機之間間傳送送的。。按照照數(shù)據(jù)據(jù)傳送送方向向,串串行通通信可可分為為單工工(Simplex)制制式、、半雙雙工((halfduplex))制式式和全全雙工工(fullduplex)制制式。。15圖7..2串串行通通信方方式示示意圖圖(1))單工工制式式在單工工制式式下,,數(shù)據(jù)據(jù)在甲甲機和和乙機機之間間只允允許單方向向傳送。。兩機機之間間只需需1條條數(shù)據(jù)據(jù)線。。16(2))半雙雙工制制式在半雙雙工制制式下下,數(shù)數(shù)據(jù)在在甲機機和乙乙機之之間允允許雙雙方向向傳送送,但但它們們之間間只有有一個個通信信回路路,接收和和發(fā)送送不能同同時進行,,只能能分時時發(fā)送送和接接收((即甲甲機發(fā)發(fā)送,,乙機機接收收,或或者乙乙機發(fā)發(fā)送,,甲機機接收收),,因而而兩機機之間間只需需1條條數(shù)據(jù)據(jù)線。。17(3))全雙雙工制制式在全雙雙工制制式下下,甲甲、乙乙兩機機之間間數(shù)據(jù)據(jù)的發(fā)發(fā)送和和接收收可以以同時時進行行,稱稱為““全雙雙工傳傳送””。全全雙工工形式式的串串行通通信必必須使使用2條數(shù)數(shù)據(jù)線線。不管哪哪種形形式的的串行行通信信,在在兩機機之間間均應應有公共地地線。18*信信號號的調調制與與解調調當異步步通信信的距距離在在15m之之內(nèi)時時,計計算機機之間間可以以直接接進行行通信信。而而當傳傳輸距距離較較遠時時,通通常是是用電電話線線傳送送。由由于電電話線線頻帶帶不夠夠寬,,再加加上遠遠距離離傳輸輸時信信號不不可避避免地地衰減減,因因而使使信號號發(fā)生生明顯顯的畸畸變。。在發(fā)送時要用用調制器器(modulator))把數(shù)數(shù)字信信號轉轉換為為模擬擬信號號,并并加以以放大大再傳傳送,,這個個過程程叫做做調制制。在接收時,再用解調器器(demodulator))檢測測此模模擬信信號,,并把把它轉轉換成成數(shù)字字信號號再送送入計計算機機接口口,這這個過過程即即解調調。197.1.4通通信信協(xié)議議通信協(xié)協(xié)議是是指在在計算算機之之間進進行數(shù)數(shù)據(jù)傳傳輸時時的一一些約約定,,包括括通信信方式式、波波特率率、命命令碼碼的約約定等等。為為保證證計算算機之之間能能準確確、可可靠地地通信信,相相互之之間必必須遵遵循統(tǒng)統(tǒng)一的的通信信協(xié)議議。在在通信信之前前一定定要先先設置置好通通信協(xié)協(xié)議。。207.280C51串行口口簡介80C51的串行口口是一個可編程的全全雙工串行行通信接口口,通過軟件件編程它可可以作通用用異步接收收和發(fā)送器器UART(UniversalAsynchronousReceiver/Transmitter)用,也也可作同步步移位寄存存器用。其其幀格式可可有8位、、10位和和11位,,并能設置各各種波特率率,使用靈活活方便。217.2.1串行行口結構與與工作原理理80C51串行口主主要由接收與發(fā)送送緩沖寄存器器SBUF、輸入移位位寄存器以以及串行控控制寄存器器SCON等組成。波波特率發(fā)生生器可以利利用定時器器T1或T2控制發(fā)發(fā)送和接收收的速率。。SCON用于存放串串行口的控控制和狀態(tài)態(tài)信息;發(fā)送數(shù)據(jù)緩緩沖寄存器器SBUF用于存放準準備發(fā)送出出去的數(shù)據(jù)據(jù);接收數(shù)據(jù)緩緩沖寄存器器SBUF用于接收由由外部輸入入到輸入移移位寄存器器中的數(shù)據(jù)據(jù)。80C51串行行口正是通通過對上述述專用寄存存器的設置置、檢測與與讀取來管管理串行通通信的。22圖7.3串串行口口結構框圖圖23在進行串行行通信時,,外界數(shù)據(jù)據(jù)通過引腳腳RXD((P3.0)輸入。。輸入數(shù)據(jù)據(jù)首先逐位位進入輸入入移位寄存存器,由串串行數(shù)據(jù)轉轉換為并行行數(shù)據(jù),然然后再送入入接收寄存存器。在接接收寄存器器中采用了了雙緩沖結結構,以避避免在接收收到第2幀幀數(shù)據(jù)前,,CPU未未及時響應應接收寄存存器前一幀幀的中斷請請求,沒把把前一幀數(shù)數(shù)據(jù)讀走,,而造成2幀數(shù)據(jù)重重疊的錯誤誤。在發(fā)送送時,串行行數(shù)據(jù)通過過引腳TXD(P3.1)輸輸出。由于于CPU是是主動的,,因此不會會產(chǎn)生寫重重疊問題,,一般不需需要雙緩沖沖器結構。。要發(fā)送的的數(shù)據(jù)通過過發(fā)送控制制器控制邏邏輯門電路路逐位輸出出。247.2.2串行行口寄存器器與串行口工工作有關的的寄存器共共有6個,,分別是串串行口控制制寄存器SCON、接收與發(fā)發(fā)送緩沖寄寄存器SBUF、電源控制制寄存器PCON、中斷允許許控制寄存存器IE、中斷優(yōu)先先級寄存器器IP。251.串行口口控制寄存存器SCON串行口控制制寄存器SCON用用于串行通通信的方式式選擇、接接收和發(fā)送送控制,并并可反映串串行口的工工作狀態(tài)。。SCON9FH9EH9DH9CH9BH9AH99H98H(98H)SM0SM1SM2RENTB8RB8TIRI26SCON..7和SCON.6位SM0和SM1——串行方方式選擇位位表7.1串串行口口工作方式式選擇SM0SM1工作方式功能描述波特率00010011方式0方式1方式2方式38位同步移位寄存器10位UART11位UART11位UARTfosc/12可變fosc/64和fosc/32可變27SCON.5位SM2——多機通通信控制位位。在方式2和和方式3中中,SM2主要用于進進行多機通通信控制。。當串行口口以方式2或方式3接收時,,如果SM2=1,允許多機機通信,且且接收到第第9位RB8為0時時,則RI不置1不不接收主機機發(fā)來的數(shù)數(shù)據(jù);如果果SM2=1,且RB8為1,則則RI置1,產(chǎn)生中中斷請求,,將接收到到的8位數(shù)數(shù)據(jù)送入SBUF。。當SM2=0時,,不論RB8為0還還是1,都都將收到的的8位數(shù)據(jù)據(jù)送入SBUF,并并產(chǎn)生中斷斷。在方式1中中,當處于于接收狀態(tài)態(tài)時,若SM2=1,則只有接接收到有效效的停止位位時,RI才置1。。在方式0中,SM2應置0。28SCON.4位REN——允許串串行接收位位。REN=1時,允許接接收;REN=O時,禁止接接收。由軟軟件置位或或清除。29SCON.3位TB8——發(fā)送數(shù)數(shù)據(jù)的第9位(D8)。在方式2或或方式3中中,根據(jù)需需要由軟件件置位或復復位。雙機機通信時,,它可約定定作奇偶校校驗位;在在多機通信信中,可作作為區(qū)別地地址幀或數(shù)數(shù)據(jù)幀的標標識位。一一般由指令令設定地址幀時,設TB8為1;而設定數(shù)據(jù)幀時,設TB8為0。方式0和方方式1中沒沒用該位。。30SCON.2位RB8——接收數(shù)數(shù)據(jù)的第9位(D8)。在方式2或或方式3中中,RB8的狀態(tài)與TB8相呼應,(如可以是是約定的奇奇偶校驗位位,也可以以是約定的的地址/數(shù)數(shù)據(jù)標識位位)。例如如,當SM2=1時時,如果RB8為0,則說明明收到的是是數(shù)據(jù)幀。。31SCON.1位TI——發(fā)送中中斷標志位位。在方式0中中,發(fā)送完完8位數(shù)據(jù)據(jù)后,由硬硬件置位;;在其他方方式中,在在發(fā)送停止止位之初由由硬件置位位。TI=1時,可申請請中斷,也也可供軟件件查詢用。。在任何方式式中,都必必須由軟件件來清除TI。SCON.0位RI——接收中中斷標志位位。在方式0中中,接收完完8位數(shù)據(jù)據(jù)后,由硬硬件置位;;在其他方方式中,在在接收停止止位的中間間,由硬件件置位。RI=1時,可申請請中斷,也也可供軟件件查詢用。。在任何方式式中,都必必須由軟件件清除RI。32SCON的的低2位與與中斷有關關。SCON的的地址為98H,可可以位尋址址。復位時時,SCON的所有有位均清0。332.數(shù)據(jù)緩緩沖寄存器器SBUF數(shù)據(jù)緩沖寄寄存器SBUF實際上是2個寄存器器:發(fā)送數(shù)據(jù)緩緩沖寄存器器和接收數(shù)據(jù)緩緩沖寄存器器。接收與發(fā)發(fā)送緩沖寄寄存器SBUF采用用同一個地地址代碼99H,其其寄存器名名亦同樣為為SBUF。CPU通過不同同的操作命命令,區(qū)別別這2個寄寄存器,所所以不會因因為地址代代碼相同而而產(chǎn)生錯誤誤。當CPU發(fā)發(fā)出寫SBUF命令令時,即向發(fā)發(fā)送緩沖寄寄存器中裝裝載新的信信息,同時時啟動數(shù)據(jù)據(jù)串行發(fā)送送;當CPU發(fā)出出讀SBUF命令時,即讀接接收緩沖寄寄存器的內(nèi)內(nèi)容。343.電源控控制寄存器器PCON電源控制寄寄存器PCON主要要用于電源源控制,PCON的的最高位SMOD是是串行口的的波特率倍倍增位:當SMOD為1時,波特率率加倍;當SMOD為O時,波特率率不變。PCOND7D6D5D4D3D2D1D0(87H)SMOD———GF1GF0PDIDL354.中斷允允許控制寄寄存器IE中斷允許控控制寄存器器IE用于控制與與管理單片片機的中斷斷系統(tǒng)。IE的ES位用于控制制串行口的的中斷:當ES=O時,禁止串行口中斷斷;當ES=1時,允許串行口中斷斷。365.中斷優(yōu)優(yōu)先級寄存存器IP中斷優(yōu)先級級寄存器IP用于管理單單片機中各各中斷源中中斷優(yōu)先級級。IP的PS位用于設置置串行口中中斷的優(yōu)先先級:當PS=0時,串行口口中斷為低優(yōu)先級;當PS=1時,串行口口中斷為高優(yōu)先級。377.2.380C51的的幀格式80C51串行口通通過編程可可設置四種種工作方式式及三種幀幀格式。38方式0以8位數(shù)據(jù)為為一幀,不設起始始位和停止止位,先發(fā)發(fā)送或接收收最低位。。方式1以10位為一一幀傳輸,設有有1個起始始位“0””、8個數(shù)數(shù)據(jù)位和1個停止位位“1”。。39方式2和3以11位為一幀傳傳輸,設有有1個起始位““0”、8個數(shù)據(jù)位、、1個可編程位位(第9數(shù)據(jù)位)D8和1個停止位““1”??删幊涛籇8由軟件置““1”或清“0”,該位可作作檢驗位,,也可作它它用。407.2.4波特特率的設置置在串行通信信前,首先先要設置收/發(fā)發(fā)雙方對發(fā)發(fā)送或接收收的數(shù)據(jù)傳傳送速率,即波特率。通過軟件件對80C51串行行口編程可可設定4種種工作方式式。這4種種方式波特特率的計算算方法不同同:方式0和方方式2的波波特率是固定的,而方式1和方方式3的波波特率是可變的,由定時時器T1或或T2(AT89S52)的的溢出率控控制。411.方方式0和方方式2的波波特率方式0中,每個機機器周期發(fā)發(fā)送或接收收1位數(shù)據(jù)據(jù),且不受SMOD的影影響。方式2的波特率取取決于PCON中SMOD之之值。當SMOD=0時,,波特率為為fosc的1/64;若SMOD=1,則則波特率為為fosc的1/32,即::422.方式1和方式3的波特率率80C51串行口方方式1和方方式3的波波特率由定定時器T1的溢出率率與SMOD的值決決定,即::T1溢出率率取決于計計數(shù)速率和和定時器的的預置值。。計數(shù)速率與與TMOD寄存器中中C/T的的狀態(tài)有關關。當C/T==0時,計數(shù)速率率=fosc/12;當C/T=1時,計數(shù)速率率取決于外部部輸入時鐘頻頻率。43當定時器T1作波特率發(fā)發(fā)生器使用時時,通常是選選用自動重裝載方方式,即方式2。設計數(shù)初值值為X,那么么每過(256—X)個個機器周期,,定時器1就就會產(chǎn)生一次次溢出。為了了避免因溢出出而產(chǎn)生不必必要的中斷,,此時應禁止止T1中斷。。溢出周期為為:溢出率為溢出出周期之倒數(shù)數(shù),所以:則定時器T1方式2的初初始值為:44表7.2定定時器T1的常用波特特率串行口工作方式

波特率(kbps)foscMHzSMOD定時器1C/T模式初值方式0100012××××方式2375121×××方式1,362.512102FFH19.211.059102FDH9.611.059002FDH4.811.059002FAH2.411.059002F4H1.211.059002E8H0.11600272H0.1112001FFEBH45【例1】已知知80C51單片機時鐘鐘振蕩頻率為為11.0592MHz選用定時器器T1工作方方式2作波特特率發(fā)生器,,波特率為2400波特特,求時間常常數(shù)。解:設波特率率控制位SMOD=0,定時器T1的時間常數(shù)數(shù)為:所以TH1==TL1=F4H。46由于上述公式式包含除法,,所以當晶振振頻率與波特特率不同時,,計算值有時時會有一定誤差。例如,如果果晶振頻率為為12MHz,波特率要要求為2400,在SMOD=0時時,TH1=F3H,波波特率的實際際計算值為2404,誤誤差為0.11%。但如如果2個單片片機的波特率率相同,例如如均為2404,則不會會影響通信;;如果2個單片片機的波特率率誤差超過2.5%,則則可能會引起起通信錯誤。。47AT89S52單片機的的定時器T2也可作為波波特率發(fā)生器器。487.3串串行通信工作作方式通過軟件編程程可使串行通通信有4種工工作方式。497.3.1方方式0在方式0下,串行口作作同步移位寄存存器用,以8位數(shù)數(shù)據(jù)為1幀,,先發(fā)送或接接收最低位,,每個機器周周期發(fā)送或接接收一位,故故其波特率是是固定的,為為fosc//12。串行行數(shù)據(jù)由RXD(P3.0))端輸入或輸輸出。同步移移位脈沖由TXD(P3.1))端送出。這這種方式常用用于擴展I/O口。采用用不同的指令令實現(xiàn)輸入或或輸出。50(1)發(fā)送送當執(zhí)行“MOVSBUF,A”指令時,CPU將1字字節(jié)的數(shù)據(jù)寫寫入發(fā)送緩沖沖寄存器SBUF(99H),串行行口即把8位位數(shù)據(jù)以fosc/12的波特率從RXD端送送出(低位在前))。發(fā)送完成成后,置中斷斷標志位TI為1。如要要繼續(xù)發(fā)送應應將TI清0。51(2)接收收由于REN是串行口允許許接收控制位位,因此在準準備接收時,,首先要用軟軟件置REN為1,使其其允許接收;;然后,執(zhí)行行“MOVA,SBUF”指令,,CPU即開開始從RXD端以fosc/12波波特率輸入數(shù)數(shù)據(jù)(低位在在前),當接接收到8位數(shù)數(shù)據(jù)時,置中中斷標志RI為1。讀取取數(shù)據(jù)后,一一定要將RI清0。52串行控制寄存存器中,TB8和RB8位在方式0中未用。每每當發(fā)送或接接收完8位數(shù)數(shù)據(jù)時,由硬硬件將發(fā)送中中斷TI或接接收中斷RI標志置位。。不管是中斷方方式還是查詢詢方式,都不不會清除TI或RI標志志,必須用軟軟件清0。在方式0中,,SM2位必須須為0。53圖7.3串串行口結構構框圖547.3.2方方式1在方式1下,串行口為為10位通用用異步接口。。發(fā)送或接收收1幀數(shù)據(jù),,包括1位起起始位“0””、8位數(shù)據(jù)據(jù)位和1位停停止位“1””,其傳送波波特率可調。。55(1)發(fā)送送當執(zhí)行“MOVSBUF,A”指令時,CPU將1字字節(jié)的數(shù)據(jù)寫寫入發(fā)送緩沖沖寄存器SBUF(99H),就啟啟動發(fā)送器發(fā)發(fā)送,數(shù)據(jù)從從引腳TXD(P3.1)端輸出。。當發(fā)送完1幀數(shù)數(shù)據(jù)后,TI標志置1,在中斷方式式下將申請中中斷,通知CPU可以發(fā)發(fā)送下一個數(shù)數(shù)據(jù)。如要繼繼續(xù)發(fā)送,必必須將TI清清0。56圖7.3串串行口結構構框圖57(2)接收收接收時,先使使REN置1,使串行口處處于允許接收收狀態(tài),RI標志為0,,串行口采樣樣引腳RXD(P3.0)。當采樣樣到1至0的的跳變時,確確認是起始位位“0”,就就開始接收1幀數(shù)據(jù)。當當停止位到來來時,RB8位置1,同同時,中斷標標志位RI也也置1,在中中斷方式下將將申請中斷,,通知CPU從SBUF取走接收到到的1個數(shù)據(jù)據(jù)。不管是中斷方方式,還是查查詢方式,都不會清除TI或RI標標志,必須用用軟件清0。。587.3.3方方式2和和方式3方式2和方式式3均為11位異步通信方方式,只是波波特率的設置置方法不同,,其余完全相相同。這兩種種方式發(fā)送或或接收1幀的的信息包括1位起始位““0”、8位位數(shù)據(jù)位、1位可編程位位和1位停止止位“1”。。其信息傳送送波特率與SMOD有關關。59(1)發(fā)送送發(fā)送前,首先先根據(jù)通信協(xié)議由軟件設置TB8(如作作奇偶校驗位位或地址/數(shù)數(shù)據(jù)標識位)),然后,將將要發(fā)送的數(shù)數(shù)據(jù)寫入SBUF即可啟啟動發(fā)送器。。發(fā)送過程是由由執(zhí)行任何一一條以SBUF作為目的的寄存器的指指令而啟動的的(寫SBUF指指令),把8位數(shù)數(shù)據(jù)裝入SBUF,同時時,串行口還還自動把TB8裝到發(fā)送送移位寄存器器的第9位數(shù)數(shù)據(jù)位置上,,并通知發(fā)送送控制器要求求進行一次發(fā)發(fā)送,然后即即從TXD((P3.1))端輸出1幀幀數(shù)據(jù)。60圖7.3串串行口結構構框圖61(2)接收收在接收時,先先置位REN為為1,使串行口處處于允許接收收狀態(tài),同時時還要將RI清0。在滿滿足這個條件件的前提下,,再根據(jù)SM2的狀態(tài)((因為SM2是方式2和和方式3的多多機通信控制制位)和所接接收到的RB8的狀態(tài),,才能決定此此串行口在信信息到來后是是否會使RI置1。如果果RI置1,,在中斷方式式下將申請中中斷,接收數(shù)數(shù)據(jù)。當SM2=0時,不管RB8為0還是是為1,RI都置1,此此串行口將接接收發(fā)來的信信息。當SM2=1,且RB8為1時,表示在多多機通信情況況下,接收的的信息為地址幀,此時RI置置1。串行口口將接收發(fā)來來的地址。當SM2=1,且RB8為0時,表示接收收的信息為數(shù)據(jù)幀,但不是發(fā)給本本從機的,此時RI不不置1,因而而SBUF中中所接收的數(shù)數(shù)據(jù)幀將丟失失。62在方式2和方方式3下,同同樣不管是中中斷方式,還還是查詢方式式,都不會清清除TI或RI標志。在在發(fā)送和接收收之后,也都都必須用軟件清TI和RI位。。637.3.4多多機通信信80C51的的方式2和方式式3有一個專門的的應用領域,,即多機通信。這一功能使使它可以方便便地應用于集集散式分布系系統(tǒng)中。這種種系統(tǒng)采用一一臺主機和多多臺從機。圖7.4多多機通信連連接圖64多機通信的實實現(xiàn),主要靠靠主、從機之之間正確地設設置與判斷多多機通信控制制位SM2和和發(fā)送或接收收的第9數(shù)據(jù)據(jù)位(D8))。在編程前,首先要給各從從機定義地址址編號,如分別為00H、01H、02H……。當主主機想發(fā)送一一數(shù)據(jù)塊給幾幾個從機中的的一個時,它它首先送出一個個地址字節(jié),以辨認從機機。地址字節(jié)節(jié)和數(shù)據(jù)字節(jié)節(jié)可用第9數(shù)數(shù)據(jù)位(TB8)來區(qū)別,地址為1,數(shù)數(shù)據(jù)為0。所以,在主機發(fā)送地址幀時時,地址/數(shù)數(shù)據(jù)標識位TB8應設置置為“1”,,以表示是地地址幀。如:MOV SCON,#0D8H;設設串行口為方方式3,TB8置“1”,準備發(fā)發(fā)地址65此時,所有的的從機初始化化時均置SM2=1,使使它們只處于于接收地址幀幀的狀態(tài)。如:MOVSCON,,#0F0H;置串行口口為方式3,,SM2=1,允許許接收當從機接收到到從主機發(fā)來來的信息后,,第9位RB8若為“1”,則置位位中斷標志RI,并在中中斷后判斷主主機送來的地地址與本從機機地址是否相相符。若相符符,則被尋址址的從機就清清除其SM2標志,即SM2=0,準備接收即即將從主機送送來的數(shù)據(jù)幀幀;未被選中的從從機仍保持SM2=1。66當主機發(fā)送數(shù)數(shù)據(jù)幀時,應應置TB8==0。此時,,雖然各從機機都能接收到到,但由于TB8==0,所以只只有SM2==0的那個被被尋址的從機機才能接收到到數(shù)據(jù),那些未被選中中的從機將不不理睬進入到到串行口的數(shù)數(shù)據(jù)字節(jié),繼繼續(xù)進行它們們自己的工作作,直到一個個新的地址字字節(jié)到來,這這樣就實現(xiàn)了了主機控制的的主從機之間間的通信。綜上所述,通信只能在主主從機之間進進行,從機之之間的通信只只有經(jīng)主機才才能實現(xiàn)。67多機之間的通通信過程可歸歸納如下:(1)主、從從機均初始化化為方式2或或方式3,置置SM2=1,允許中斷。。(2)主機置TB8=1,發(fā)送要尋址的的從機地址。(3)所有從從機均接收主主機發(fā)送的地地址,并進行行地址比較。。(4)被尋址址的從機確認認地址后,置置本機SM2=0,向主機返回回地址,供主主機核對。(5)核對無無誤后,主機機向被尋址的的從機發(fā)送命命令,通知從從機接收或發(fā)發(fā)送數(shù)據(jù)。(6)通信只只能在主、從從機之間進行行,兩個從機機之間的通信信需通過主機機作中介。(7)本次通通信結束后,,主、從機重重置SM2==1,主機可可再對其他從從機尋址。68在實際應用中中,因為單片片機功能有限限,因而在較較大的測控系系統(tǒng)中,常常常把單片機應應用系統(tǒng)作為為前端機(下下位機或從機機)直接用于于控制對象的的數(shù)據(jù)采集與與控制,而把把PC機作為為中央處理機機(上位機或或主機)用于于數(shù)據(jù)處理和和對下位機的的監(jiān)控管理。。它們之間的的信息交換主主要是采用串串行通信,此此時單片機可可直接利用其其串行接口,,而PC機可可利用其配備備的8250或8251、16450等可編程程串行接口芯芯片。實現(xiàn)單片機與與PC機串行行通信的關鍵鍵是在通信協(xié)協(xié)議的約定上上要一致,例如,應設定相同的波波特率及幀格格式等。在正式工工作之前,雙雙方應先互發(fā)發(fā)聯(lián)絡信號,,以確保通信信收發(fā)數(shù)據(jù)的的準確性。697.4串串行口應用舉舉例本節(jié)將介紹串串行口在作I/O擴展及及一般異步通通信和多機通通信中的應用用原理及實例例。707.4.1用用串行口口擴展I/O口串行口的方式式0主要用于擴展并行行I/O口。此處將給出出實用線路和和簡單的控制制指令。71例7.1用用并行輸入入8位移位寄寄存器74HC165擴展16位并并行輸入口。編程實現(xiàn)從從16位擴展展口讀入20字節(jié)數(shù)據(jù),,并把它們轉轉存到內(nèi)部RAM的50H~63H中。圖7.5利利用串行口擴擴展輸入口72解:在此采用用74HC165與單片片機相連實現(xiàn)現(xiàn)I/O口擴擴展,是利用用80C51的3根口線線擴展為16根輸入口線線的實用電路路,其由2塊塊74HC165串接而而成。74HC165是是并入串出移移位寄存器((也可選用其其他同樣功能能的CMOS器件)。圖圖中,CK為時鐘脈脈沖輸入端,,D0~D7為并行輸入端端,SIN、QH分別為數(shù)據(jù)的的輸入、輸出出端。前級的數(shù)據(jù)據(jù)輸出端QH與后級的信號號輸入端SIN相連。S/L=0時,允允許并行置入入數(shù)據(jù);S/L=1時,,允許串行移移位。73MOV R7,#20;;設置讀讀入字節(jié)數(shù)MOV R0,#50H ;設片內(nèi)內(nèi)RAM指針針SETBF0 ;設設置讀入字節(jié)節(jié)奇偶數(shù)標志志RCV0:CLRP1.0;;允許并行行置入數(shù)據(jù)SETBP1.0;;允許串行行移位RCV1:MOVSCON,#10H;;設串行口方方式0并啟動動接收JNB RI,$;;等待接收一一幀數(shù)據(jù)CLR RI ;清接接收中斷標志志MOV A,,SBUF;;取緩沖沖器數(shù)據(jù)MOV @R0,AINC R0CPL F0JB F0,,RCV2;;判是否接接收完偶數(shù)幀幀,接收完則則DEC R7重重新并行置入入SJMPRCV1;;否則再接接收一幀RCV2:DJNZR7,RCV0 ;判判是否已讀入入預定的字節(jié)節(jié)數(shù)……;;對讀入數(shù)據(jù)據(jù)進行處理74程序中F0用用來作讀入字字節(jié)數(shù)的奇偶偶性標志。由由于每次由擴擴展口并行置置入到移位寄寄存器的是2個字節(jié)數(shù)據(jù)據(jù),置入1次次,串行口應應接收2幀數(shù)數(shù)據(jù)。故已接接收的數(shù)據(jù)字字節(jié)數(shù)為奇數(shù)數(shù)時F0=0,不再并行行置入數(shù)據(jù)就就直接啟動接接收過程;否否則F0=1,在啟動接接收過程前,,應該先在外外部移位寄存存器中置入新新的數(shù)據(jù)。75【例7.2】】用2片片8位串入并并出移位寄存存器74HC164作擴擴展輸出口。。編程使這16個發(fā)光二極極管交替為間間隔點亮狀態(tài)態(tài),循環(huán)交替替時間為2s。圖7.6利利用串行口口擴展輸出接接口7674HC164是串行輸輸入、并行輸輸出移位寄存存器。Q0~~Q7為并行行輸出端;A、B為串行行輸入端;CLR為清除除端,零電平平時,使74HC164輸出清“0”;CK為為時鐘脈沖輸輸入端,在CK脈沖的上上升沿作用下下實現(xiàn)移位。。在CK=0,CLR==1時,74HC164保持原來數(shù)數(shù)據(jù)狀態(tài)。由于74HC164無并并行輸出控制制端,在串行行輸入過程中中其輸出端的的狀態(tài)會不斷斷變化,故在在某些使用場場合,在74HC164與輸出裝置置之間還應加加上輸出可控控的緩沖級((如74HC244),,以便在串行行輸入過程結結束后再輸出出。圖中的輸輸出裝置是16位發(fā)光二二極管。由于于74HC164在低電電平輸出時允允許通過的電電流可達8mA,故不需需再加驅動電電路。77ST: MOV SCON,#00H ;設設串行口為方方式0MOV A,,#55H;;二極管管間隔點亮初初值LP2:MOV R0,#2;;輸出口字字節(jié)數(shù)CLR P1.0;;對74HC164清清0SETBP1.0;;允許數(shù)數(shù)據(jù)串行移位位LP1:MOV SBUF,A;;啟動串串行口發(fā)送JNB TI,$;;等待1幀幀發(fā)送結束CLR TI ;清清串行口發(fā)送送中斷標志位位DJNZR0,LP1 ;判斷斷預定字節(jié)數(shù)數(shù)發(fā)送完否LCALLDEL2s ;調調延時2s子子程序(略))CPL A;;交替替點亮二極管管SJMPLP2;;循環(huán)顯示示78從理論上講,,74HC164或74HC165可以無限地地串級上去,,進一步擴展展輸入/輸出出并行口,但但這種擴展方方法,輸入//輸出的速度度不高,移位位時鐘頻率為為fosc//12。若fosc=12MHz,,則每移1位位需1μs。。797.4.2用用串串行口進行異異步通信圖7.7雙雙機異步通通信連接圖80【例7.3】】編程把把甲機片內(nèi)RAM的60H~7FH單元中的數(shù)數(shù)據(jù)塊從串行行口輸出。定定義在工作方方式3下發(fā)送送,TB8用用作奇偶校驗驗位。采用定定時器T1方方式2作波特特率發(fā)生器,,波特率為4800,fosc=11.0592MHz,,定時器初始始預置值TH1=TL1=0FAH。編程使乙機從從甲機接收32個字節(jié)數(shù)數(shù)據(jù)塊,并存存入片外1000H~101FH單單元。接收過過程中要求判判奇偶校驗標標志RB8。。若出錯,則則置F0標志志為1,若正正確則置F0標志為0,,然后返回。。81解:編寫發(fā)送送子程序如下下:MOV TMOD,#20H ;設設置定時器T1為方式2MOV TL1,#0FAH ;設設預置值MOV TH1,#0FAHSETBTR1;;啟動定時器器T1MOV SCON,#0C0H;;設置串行口口為方式3MOV PCON,#00H;;SMOD==0MOV R0,#60H ;設數(shù)據(jù)據(jù)決指針MOV R7,#20H ;設數(shù)據(jù)據(jù)長度20HTRS:MOVA,@R0;;取數(shù)據(jù)據(jù)送至AMOV C,,PMOV TB8,C;;奇偶位P送至TB8MOV SBUF,A;;數(shù)據(jù)送送至SBUF,啟動發(fā)送送WAIT:JNBTI,$;;判1幀是是否發(fā)送完CLR TIINC R0 ;更新新數(shù)據(jù)單元DJNZR7,TRS ;循環(huán)環(huán)發(fā)送至結束束RET;;返回82在進行雙機通通信時,兩機機應用相同的的工作方式和和波特率,因因而接收子程程序編程如下下:MOV TMOD,#20H ;設設置定時器T1為方式2MOV TL1,#0FAH ;設設預置值MOV TH1,#0FAHSETBTR1;;啟動定時器器T1MOV SCON,#0C0H;;設置串行口口為方式3MOV PCON,#00H ;SMOD=0MOV DPTR,#1000H;;設置數(shù)據(jù)據(jù)塊指針MOV R7,#20H ;設數(shù)據(jù)據(jù)塊長度SETBREN;;允許接收WAIT:JNBRI,$;;判斷1幀幀是否接收完完CLR RIMOV A,,SBUF;;讀入1幀數(shù)據(jù)JNB PSW.0,PZ ;奇偶偶位P為0,,則轉JNB RB8,ERR ;P=1,RB8=0,則出錯錯SJMPYES;;二者全為1,則正確83PZ: JB RB8,,ERR;;二者全為0,則正確;;P=0,RB8=1,,則出錯YES:MOVX@@DPTR,,A ;正確確,存放數(shù)據(jù)據(jù)INC DPTR;;修改地址指指針DJNZR7,WAIT ;判斷斷數(shù)據(jù)塊接收收完否CLR PSW.5;;接收正確確,且接收完完,清F0標標志RET;;返回ERR:SETBPSW.5;;出錯,,則置F0標標志為1RET;;返回上例是在方式式3下進行收收發(fā),用奇偶偶位進行校驗驗。8485在方式1下進進行雙機通信信,用累加和和進行校驗的的方法。【例7.4】】設甲機機發(fā)送乙機接接收,波特率率為2400波特,兩機機晶振均為6MHz。要要求甲機將外外部數(shù)據(jù)存儲儲器4000H~40FFH單元的的內(nèi)容向乙機機發(fā)送,在發(fā)發(fā)送數(shù)據(jù)之前前將數(shù)據(jù)塊長長度發(fā)送給乙乙機,發(fā)送完完256B后后,向乙機發(fā)發(fā)送一個累加加校驗和。乙機接收甲機機發(fā)送的數(shù)據(jù)據(jù),并寫入以以300H為為首址的外部部數(shù)據(jù)存儲器器中。首先接接收數(shù)據(jù)長度度,接著接收收數(shù)據(jù),當接接收完256B后,接收收校驗碼,進進行累加和校校驗。數(shù)據(jù)傳傳送結束時,,向甲機發(fā)送送一個狀態(tài)字字節(jié),表示傳傳送是正確或或出錯。86解

溫馨提示

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

評論

0/150

提交評論