第六章串行口及串行通信技術(shù).ppt_第1頁
第六章串行口及串行通信技術(shù).ppt_第2頁
第六章串行口及串行通信技術(shù).ppt_第3頁
第六章串行口及串行通信技術(shù).ppt_第4頁
第六章串行口及串行通信技術(shù).ppt_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第6章 80C51串行口及串行通信技術(shù),在計算機(jī)系統(tǒng)中,CPU和外部通信有兩種形式: 并行通信,即數(shù)據(jù)的各位同時傳送; 串行通信,即數(shù)據(jù)一位一位順序傳送。,注意:“串行”是指外設(shè)與接口電路之間的信息傳送方式,CPU與接口之間仍按并行方式工作。,一、數(shù)據(jù)通信,6-1 串行通信基本知識,二、信息傳輸?shù)臋z錯和糾錯,最簡單的檢錯方法是奇偶校驗,即在傳送字符的各位之外,再傳送1位奇/偶校驗位??刹捎闷嫘r灮蚺夹r?。,串行數(shù)據(jù)在傳輸過程中,由于干擾可能引起信息的出錯 如何發(fā)現(xiàn)傳輸中的錯誤,叫檢錯 發(fā)現(xiàn)錯誤后,如何消除錯誤,叫糾錯,奇校驗:使所有傳送的數(shù)位(含字符的各數(shù)位和校驗位)中, 含1的個數(shù)為奇數(shù)個。

2、,偶校驗:使所有傳送的數(shù)位(含字符的各數(shù)位和校驗位)中,含1的個數(shù)為偶數(shù)個。,注意:奇偶校驗?zāi)軌驒z測出1位誤碼,但是不能糾錯。,三、傳輸速率,在串行通訊中,用波特率來描述數(shù)據(jù)的傳輸速率。 波特率,即每秒鐘傳送的二進(jìn)制位數(shù),單位bps。收、發(fā)雙方的波特率必須一致。,例:要求每秒傳送120個字符,每幀為10位。 解:波特率:12010=1200 bps, 每位傳送時間:Td=1/1200=0.833ms,全雙工傳送:通訊雙方能同時進(jìn)行發(fā)送和接收操作,四、串行通信的傳輸方式,單工傳送:只允許數(shù)據(jù)按照一個固定的方向傳送。,半雙工傳送:只有1根線傳送數(shù)據(jù)信號,要求通訊雙方的發(fā)送和接收由電子開關(guān)切換。由于

3、只有一條信道,所以數(shù)據(jù)不能同時在兩個方向上傳送。,一個字符一個字符地傳輸,每個字符一位一位地傳輸,傳輸一個字符時,以起始位開始,然后傳輸字符本身各位,接著傳輸校驗位,最后以停止位結(jié)束該字符傳輸。一次傳輸?shù)钠鹗嘉?、字符各位、校驗位、停止位?gòu)成一個字符幀(數(shù)據(jù)幀)信息。,五、串行通信的兩種類型,異步通信,起始位邏輯01位 數(shù)據(jù)位邏輯0或15位、6位、7位、8位 校驗位邏輯0或11位或無 停止位邏輯11位 空閑位邏輯1任意數(shù)量,幀與幀間可有任意個空閑位,起始位后緊跟數(shù)據(jù)的最低位。,例:傳送8位數(shù)據(jù)45H(0100,0101B),奇校驗,則信號線上的波形為:,異步通信的優(yōu)點是不需要傳送同步時鐘,字符幀

4、長度不受限制,故設(shè)備簡單。缺點是字符幀中因包含起始位和停止位而降低了有效數(shù)據(jù)的傳輸速率。,同步通信,在每組信息的開始,加上同步字符,靠同步字符完成收發(fā)雙方同步的。 多個字符成組傳送。 同步字符和字符組以及需要的其他字符構(gòu)成一個信息幀。,發(fā)送器:并串?dāng)?shù)據(jù)轉(zhuǎn)換,添加標(biāo)識位和校驗位,設(shè)置發(fā)送結(jié)束標(biāo)志,申請中斷。 接收器:串并數(shù)據(jù)轉(zhuǎn)換,檢查錯誤,去掉標(biāo)識位,保存有效數(shù)據(jù),設(shè)置接收結(jié)束標(biāo)志,申請中斷。 控制器:接收編程命令和控制參數(shù),設(shè)置工作方式:同步/異步、字符格式、波特率、校驗方式、數(shù)據(jù)位與同步時鐘比例等。,六、串行接口必須具備的功能,串行接口電路的種類和型號很多。 能夠完成異步通信的硬件接口電路稱

5、為UART,即通用異步接收器/發(fā)送器。 能夠完成同步通信的硬件接口電路稱為USRT。即通用同步接收器/發(fā)送器。 既能夠完成異步又能同步通信的硬件接口電路稱為USART。 所有這些串行接口電路都必須具備如下的基本功能:,6-2 80C51串行口及應(yīng)用,通用異步全雙工串口,可同時收發(fā)。 串口輸入/輸出腳:RXD(P3.0)和TXD(P3.1)。,一、 80C51串行口結(jié)構(gòu),按不同方式,一幀位數(shù)8/10/11三種。,一幀字符發(fā)送/接收完,置位標(biāo)志位(TI/RI)并申請中斷 中斷控制:中斷允許位ES、EA 中斷入口:0023H,含兩個收、發(fā)數(shù)據(jù)緩沖器SBUF(共用一個地址99H ) 發(fā)送SBUF放待發(fā)

6、的8位數(shù)據(jù),寫入SBUF便啟動發(fā)送。 發(fā)送指令:MOVSBUF,A 接收SBUF放已成功接收的8位數(shù)據(jù),供CPU讀取。 讀取指令: MOV A,SBUF 發(fā)送緩沖器只能寫入,不能讀出;接收緩沖器只能讀出,不能寫入。,SM2:多機(jī)通訊控制位,用于方式2和方式3中。,在方式2,3處于接收方式時, 若SM2=1,且接收到的第9位數(shù)據(jù)RB8為0時,不激活RI; 若SM2=1,且RB8=1時,則置RI=1。 在方式2,3處于接收或發(fā)送方式時,若SM2=0,不論接收到的第9位RB8為0還是1,TI、RI都以正常方式被激活。 在方式1處于接收時,若SM2=1,則只有收到有效的停止位后,RI置1。 在方式0中

7、,SM2應(yīng)為0。,SM0,SM1:串口4種工作方式選擇。,TI:發(fā)送中斷標(biāo)志,發(fā)送一幀結(jié)束,TI=1,必須軟件清零 RI:接收中斷標(biāo)志,接收一幀結(jié)束,RI=1,必須軟件清零,TB8:在方式2,3中,是發(fā)送機(jī)要發(fā)送的第9位數(shù)據(jù)。,可做奇偶校驗位,由軟件置位或復(fù)位。 在多機(jī)通信中,可作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)識位,一般約定地址幀時,TB8為1,數(shù)據(jù)幀時,TB8為0。,RB8:在方式2,3中,接收來自發(fā)送機(jī)的第9位數(shù)據(jù)(TB8)。,REN:允許接收控制位,=1允許接收;=0禁止接收。,SMOD波特率加倍控制位。=1波特率加倍,=0則不加倍。 GF1、GF0通用標(biāo)志位。 這兩個標(biāo)志位可供用戶使用,可用

8、軟件置1或清0。兩個標(biāo)志位用戶應(yīng)充分利用。 PD掉電方式位。 若PD=1,單片機(jī)進(jìn)入掉電工作方式。 IDL待機(jī)方式位。 IDL=1,單片機(jī)進(jìn)入待機(jī)工作方式。,二、80C51串行通信工作方式,80C51的串行口有4種工作方式,通過SCON中的SM0、SM1位來決定。,方式0:8位同步移位寄存器(用于I/O擴(kuò)展) 一幀8位,無起、停位,先發(fā)送或接收最低位。波特率固定為fosc/12。 RXD:數(shù)據(jù)輸入/輸出端。 TXD:同步脈沖輸出端,每個脈沖對應(yīng)一個數(shù)據(jù)位。 波特率B = fosc/12,如:fosc=12MHz,B=1MHz,每位數(shù)據(jù)1s。 發(fā)送過程:寫入SBUF(啟動發(fā)送),一幀發(fā)送完,TI

9、=1。 接收過程:REN=1且RI=0,啟動接收,一幀接收完,RI=1。,例1:用串行口方式0擴(kuò)展8位并行I/O輸出口。,74HC164實現(xiàn):串行并行的數(shù)據(jù)轉(zhuǎn)換,REN=1,允許接收。向串口的SCON寫入控制字(置為方式0,并置“1”REN位,同時RI=0)時,產(chǎn)生一個正脈沖,串行口即開始接收數(shù)據(jù)。RXD為數(shù)據(jù)輸入端,TXD為移位脈沖信號輸出端, 接收器也以fosc/12的固定波特率采樣RXD引腳的數(shù)據(jù)信息,當(dāng)收到8位數(shù)據(jù)時置“1” RI,表示一幀數(shù)據(jù)接收完。,例2:用串行口方式0擴(kuò)展8位并行I/O輸入口。,74HC165實現(xiàn):并行串行的數(shù)據(jù)轉(zhuǎn)換,方式0下,SCON中的TB8、RB8位沒有用到

10、,發(fā)送或接收完8位數(shù)據(jù)由硬件置“1”TI或RI,CPU響應(yīng)中斷。TI或RI須由用戶軟件清“0”,可用如下指令: CLR TI;TI位清“0” CLR RI ;RI位清“0” 方式0時,SM2位必須為0。,方式1:10位異步通訊方式。,一幀10位:起位(0)+8位數(shù)據(jù)位+停位(1),先發(fā)送或接收最低位。 波特率:用T1作波特率發(fā)生器,B=(2SMOD/32)T1溢出率。 發(fā)送:寫入SBUF(啟動發(fā)送),一幀發(fā)送完,TI=1。 接收:REN=1,RI=0且停止位為1 (或SM2=0),將接收數(shù)據(jù)裝入SBUF,停止位裝入RB8,并使RI=1;否則丟棄接收數(shù)據(jù),不置位RI。,a發(fā)送 數(shù)據(jù)由TXD輸出,

11、當(dāng)執(zhí)行數(shù)據(jù)寫發(fā)送緩沖器SBUF的指令,就啟動發(fā)送。 TX時鐘是發(fā)送的波特率。 發(fā)送開始時,內(nèi)部發(fā)送控制信號變?yōu)橛行?。將起始位向TXD輸出,此后,每經(jīng)過一個TX時鐘周期,便產(chǎn)生一個移位脈沖,并由TXD輸出一個數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,置“1” TI。,b接收 數(shù)據(jù)從RXD(P3.0)腳輸入。當(dāng)檢測到起始位的負(fù)跳變時,開始接收數(shù)據(jù)。 定時控制信號有兩種:接收移位時鐘(RX時鐘,頻率和波特率相同)和位檢測器采樣脈沖(頻率是RX時鐘的16倍,1位數(shù)據(jù)期間,有16個采樣脈沖),當(dāng)采樣到RXD端從1到0的跳變時就啟動檢測器,接收的值是3次連續(xù)采樣(第7、8、9個脈沖時采樣)進(jìn)行表決以確認(rèn)是否是真正

12、的起始位(負(fù)跳變)的開始。 當(dāng)一幀數(shù)據(jù)接收完,須同時滿足兩個條件,接收才真正有效。 RI=0,即上一幀數(shù)據(jù)接收完成時,RI=1發(fā)出的中斷請求已被響應(yīng),SBUF中的數(shù)據(jù)已被取走,說明“接收SBUF”已空。 SM2=0或收到的停止位=1(方式1時,停止位已進(jìn)入RB8),則收到的數(shù)據(jù)裝入SBUF和RB8(RB8裝入停止位),且置“1”中斷標(biāo)志RI。 若這兩個條件不同時滿足,收到的數(shù)據(jù)將丟失。,一幀11位:起位+9位數(shù)據(jù)位+停位。 第9位數(shù)據(jù)位在TB8/RB8中,常作校驗位或多機(jī)通訊標(biāo)識位。 波特率: 方式2:B=(2SMOD/64)fosc 。 方式3:B=(2SMOD/32)T1溢出率 發(fā)送:先填

13、寫TB8,寫入SBUF(啟動發(fā)送),發(fā)送完TI=1。 接收:REN=1,RI=0且第9位為1 (或SM2=0),將接收數(shù)據(jù)裝入SBUF,第9位裝入RB8,使RI=1;否則丟棄接收數(shù)據(jù),不置位RI。,方式2和方式3: 11位異步通訊方式。,a方式2發(fā)送 發(fā)送前,先根據(jù)通訊協(xié)議由軟件設(shè)置TB8(例如,雙機(jī)通訊時的奇偶校驗位或多機(jī)通訊時的地址/數(shù)據(jù)的標(biāo)志位)。 b方式2接收 SM0、SM1=10,且REN=1。數(shù)據(jù)由RXD端輸入,接收11位信息。當(dāng)位檢測到RXD從1到0的負(fù)跳變,并判斷起始位有效后,開始收一幀信息。在接收器完第9位數(shù)據(jù)后,需滿足兩個條件,才能將接收到的數(shù)據(jù)送入SBUF。 (1)RI=

14、0,意味著接收緩沖器為空。 (2)SM2=0或接收到的第9位數(shù)據(jù)位RB8=1時。 當(dāng)上述兩個條件滿足時,接收到的數(shù)據(jù)送入SBUF(接收緩沖器),第9位數(shù)據(jù)送入RB8,并置“1”RI。若不滿足兩個條件,接收的信息將被丟棄。,關(guān)于波特率的計算:,方式0為固定波特率:B=fosc/12 方式2可選兩種波特率: B=(2SMOD /64)fosc 方式1、3為可變波特率,用T1作波特率發(fā)生器。 B=(2SMOD/32)T1溢出率,在方式1,3下,波特率由T1溢出率和SMOD共同決定。實際上,當(dāng)T1做波特率發(fā)生器時,通常工作在模式2下,即自動重裝載的8位定時器,此時TL1作計數(shù)用,自動重裝載的值在TH1

15、內(nèi)。,方式1,3下的波特率:,T1模2溢出時間:,T1模2定時初值:,定時器1產(chǎn)生的常用波特率,要保證主機(jī)與所選擇的從機(jī)實現(xiàn)可靠地通信,必須保證串口具有識別功能。 SCON中的SM2位就是滿足這一條件而設(shè)置的多機(jī)通信控制位。 原理:在串行口以方式2(或方式3)接收時, 若SM2=1,表示置多機(jī)通信功能位,這時有兩種可能: (1)接收到的第9位數(shù)據(jù)為1時,數(shù)據(jù)才裝入SBUF,并置中斷標(biāo)志RI=1向CPU發(fā)出中斷請求; (2)接收到的第9位數(shù)據(jù)為0時,則不產(chǎn)生中斷標(biāo)志,信息將拋棄。 若SM2=0,則接收的第9位數(shù)據(jù)不論是0還是1,都產(chǎn)生RI=1中斷標(biāo)志,接收到的數(shù)據(jù)裝入SBUF中。,5. 多機(jī)通信

16、的工作原理 :,設(shè)多機(jī)系統(tǒng)中有一主機(jī)和3個從機(jī),如圖。主機(jī)的RXD與從機(jī)的TXD相連,主機(jī)TXD與從機(jī)的RXD端相連。從機(jī)地址分別為00H、01H、02H。,多機(jī)通信工作過程: (1)從機(jī)串行口編程為方式2或方式3接收,且置“1”SM2和REN位,使從機(jī)只處于多機(jī)通訊且接收地址幀的狀態(tài)。 (2)主機(jī)先將從機(jī)地址(即準(zhǔn)備接收數(shù)據(jù)的從機(jī))發(fā)給各從機(jī), 主機(jī)發(fā)出的地址信息的第9位為1,各從機(jī)接收到的第9位信息RB8為1,且由于SM2=1,則置“1” RI,各從機(jī)響應(yīng)中斷,執(zhí)行中斷程序。在中斷服務(wù)子程序中,判主機(jī)送來的地址是否和本機(jī)地址相符合,相符則該從機(jī)清“0”SM2位,準(zhǔn)備接收主機(jī)的數(shù)據(jù)或命令;若

17、不符,則保持SM2=1狀態(tài)。 (3)接著主機(jī)發(fā)送數(shù)據(jù)幀,此時各從機(jī)串行口接收到的RB8=0,只有地址相符合的從機(jī)系統(tǒng)(即已清“0”SM2位的從機(jī))才能激活RI,從而進(jìn)入中斷,在中斷程序中接收主機(jī)的數(shù)據(jù)(或命令);其它的從機(jī)因SM21,又RB8=0不激活中斷標(biāo)志RI,不能進(jìn)入中斷,接收的數(shù)據(jù)丟失。 圖所示的多機(jī)系統(tǒng)是主從式,由主機(jī)控制多機(jī)之間的通信,從機(jī)和從機(jī)的通訊只能經(jīng)主機(jī)才能實現(xiàn)。,三、雙機(jī)串行通信硬件接口 AT80C51串行口以TTL電平串行傳輸,抗干擾性差,傳輸距離短。 為了提高串行通信的可靠性,增大串行通信的距離,一般都采用標(biāo)準(zhǔn)串行接口,如RS-232、RS-422A、RS-485等來

18、實現(xiàn)串行通信。 根據(jù)AT80C51的雙機(jī)通信距離和抗干擾性的要求,可選擇TTL電平傳輸,或選擇RS-232C、RS-422A、RS485串行接口進(jìn)行串行數(shù)據(jù)傳輸。,1TTL電平通信接口 如果兩個80C51單片機(jī)相距在幾米之內(nèi),它們的串行口可直接相連,從而直接用TTL電平傳輸方法來實現(xiàn)雙機(jī)通信,接口電路如圖7-14所示。,圖7-14,2RS-232C雙機(jī)通信接口 如果雙機(jī)通信距離在30m之內(nèi),可利用RS-232C標(biāo)準(zhǔn)接口實現(xiàn)點對點的雙機(jī)通信,接口電路如圖7-15所示。 圖7-15中的MAX232A是美國MAXIM公司生產(chǎn)的RS-232C雙工發(fā)送器/接收器電路芯片。,圖7-15,3RS-422A雙

19、機(jī)通信接口 為了增加通信距離,可以在通信線路上采用光電隔離方法,利用RS-422A標(biāo)準(zhǔn)進(jìn)行雙機(jī)通信,最大傳輸距離可達(dá)1000m左右,接口電路如圖7-16。 圖7-16中的SN75174、SN75175是TTL電平到RS-232電平與RS-232電平到TTL電平的電平轉(zhuǎn)換芯片。,圖7-16,4RS-485雙機(jī)通信接口 RS-422A雙機(jī)通信需四芯傳輸線,對長距離通信很不經(jīng)濟(jì),故通常采用雙絞線傳輸?shù)腞S-485串行通信接口,它很容易實現(xiàn)多機(jī)通信。圖7-17給出了其RS-485雙機(jī)通信接口電路,最大傳輸距離可達(dá)1000m左右。,圖7-17,SIO: MOV SCON,#控制狀態(tài)字 ;寫方式字且TI=

20、RI=0 (MOV PCON,#80H) ;波特率加倍 (MOV SP,#X) (MOV TMOD,#20H ) ;T1作波特率發(fā)生器 (MOV TH1,#X ) ;選定波特率 (MOV TL1,#X ) (SETB ET1) (SETB TR1) (SETB EA) ;開串行口中斷 (SETB ES),四、80C51串行口初始化編程格式,五、串行口方式0的應(yīng)用,解:采用中斷方式發(fā)送數(shù)據(jù),顯示延時調(diào)用延時子程序DELAY。,例:用80C51串口外接74HC164擴(kuò)展8位并行輸出口,每位接一個發(fā)光二極管(陰接地),要求從左到右延遲輪流顯示,并不斷循環(huán)。,例:用80C51串口外接74HC165擴(kuò)展

21、8位并行輸入口,輸入數(shù)據(jù)由8個開關(guān)提供,另有一個開關(guān)K提供聯(lián)絡(luò)信號。當(dāng)K=0時,表示要求輸入8位開關(guān)量,作為邏輯模擬子程序的輸入信號。,解:采用查詢方式輸入。要點: REN=1,允許接收 K閉合才輸入,六、異步通訊程序舉例,發(fā)送程序:先發(fā)送一個字符,等待TI=1后再發(fā)送下一個字符。,TRAM:MOV A,R0 ;取數(shù)據(jù) MOVSBUF,A ;發(fā)送一個字符 WAIT:JBCTI,NEXT ;等待發(fā)送結(jié)束 SJMPWAIT NEXT:INCR0 ;準(zhǔn)備下一次發(fā)送 SJMPTRAM,查詢方式:,ORG0023H ;串行口中斷入口 AJMP SINT MAIN: ;初始化編程 TRAM: MOV A,

22、R0 ;取數(shù)據(jù) MOV SBUF,A ;發(fā)送第一個字符 H:SJMP H ;其它工作 SINT:CLR TI ;中斷服務(wù)程序 INCR0 MOVA,R0 ;取數(shù)據(jù) MOVSBUF,A ;發(fā)送下一個字符 RETI,中斷方式:,ORG 0000H LJMP MAINT ORG0023H ;串行口中斷入口LJMPTRANI MAINT: MOV SCON,#80H;串行口初始化 MOV PCON,#80H;波特率 SETBEA SETBES;開串行口中斷 MOV R0,#50H ;設(shè)數(shù)據(jù)指針 MOV R7,#10H ;數(shù)據(jù)長度 MOV A,R0 ;取一個字符 MOV C,P ;加偶校驗 MOV TB

23、8,C MOV SBUF,A ;啟動一次發(fā)送 HERE:SJMPHERE;CPU執(zhí)行其它任務(wù),例:將片內(nèi)RAM 50H起始單元的16個數(shù)由串行口發(fā)送,要求用中斷方式發(fā)送,波特率為系統(tǒng)時鐘的32分頻,并進(jìn)行偶校驗。,TRANI:PUSH ACC;保護(hù)現(xiàn)場 PUSH PSW CLR TI ;清發(fā)送結(jié)束標(biāo)志 DJNZ R7,NEXT;是否發(fā)送完? CLR ES;發(fā)送完,關(guān)閉串行口中斷SJMP TEND NEXT: INC R0 ;未發(fā)送完,修改指針 MOV A,R0 ;取下一個字符 MOV C,P ;加偶校驗 MOV TB8,C MOV SBUF,A ;發(fā)送一個字符 TEND: POP PSW ;恢

24、復(fù)現(xiàn)場 POP ACC RETI ;中斷返回,WAIT:JBCRI,NEXT;查詢等待 SJMPWAIT NEXT:MOVA,SBUF ;讀取接收數(shù)據(jù) MOVR0,A;保存數(shù)據(jù) INCR0 ;準(zhǔn)備下一次接收 SJMPWAIT,ORG0023H AJMPRINT MAIN: ;初始化編程 SJMP$ ;其它任務(wù) RINT:CLRRI ;清中斷標(biāo)志 MOVA,SBUF ;讀取接收數(shù)據(jù) MOVR0,A;保存數(shù)據(jù) INCR0 RETI,查詢方式:,中斷方式:,接收程序:REN=1、RI=0等待接收,當(dāng)RI=1,從SBUF讀取數(shù)據(jù)。,例:串行接收16個字符,存入片內(nèi)RAM的50H起始單元,采用中斷方式,

25、波特率為2400(晶振11.0592MHz),不校驗。,ORG0000H LJMPMAINT ORG0023H ;串行口中斷入口AJMPRINT MAINT: MOV SCON,#50H ;串行口方式1允許接收MOV TMOD,#20H ;T1方式2定時MOV TL1,#0F4H ;寫入T1時間常數(shù)MOV TH1,#0F4HSETB TR1 ;啟動T1 SETBEA;CPU開中 SETBES;串口開中 MOV R0,#50H ;設(shè)數(shù)據(jù)指針MOV R7,#10H ;接收數(shù)據(jù)長度 SJMP$,RINT:CLR RI ;清接收結(jié)束標(biāo)志 DJNZ R7,NEXT;未全部接收完,轉(zhuǎn)NEXT CLR ES

26、;全部接收完,關(guān)閉串行口中斷SJMP REND NEXT: MOV A,SBUF ;讀取接收字符MOV R0,A ;保存一個字符INC R0 ;修改指針 REND: RETI ;中斷返回,RECS: MOV SCON,#0D0H ;串行口方式3允許接收MOV TMOD,#20H ;T1方式2定時MOV TL1,#0F4H ;寫入T1時間常數(shù)MOV TH1,#0F4HSETB TR1 ;啟動T1MOV R0,#50H ;設(shè)數(shù)據(jù)指針MOV R7,#10H ;接收數(shù)據(jù)長度 WAIT: JBC RI,NEXT ;等待串行口接收SJMP WAIT NEXT:MOV A,SBUF ;取一個接收字符JNB

27、P,COMP ;偶校驗JNB RB8,ERR ;PRB8,數(shù)據(jù)出錯SJMP RIGHT ;P=RB8,數(shù)據(jù)正確 COMP: JB RB8,ERR RIGHT: MOV R0,A ;保存一個字符INC R0 ;修改指針DJNZ R7,WAIT ;全部字符接收完?CLR F0 ;F0 =0,接收數(shù)據(jù)全部正確 RET ERR: SETB F0 ;F0 =1,接收數(shù)據(jù)出錯 RET,例:串行接收16個字符,存入片內(nèi)RAM的50H起始單元,采用查詢方式,波特率為2400(晶振11.0592MHz),進(jìn)行偶校驗。,1、什么是串行異步通信,它有哪些作用? 答:在異步串行通信中,數(shù)據(jù)是一幀一幀(包括一個字符代碼

28、或一字節(jié)數(shù)據(jù))傳送的,每一幀的數(shù)據(jù)格式:起始位、數(shù)據(jù)位、校驗位、停止位。通信采用幀格式,無需同步字符。存在空閑位是異步通信的特征之一。 2、80C51單片機(jī)的串行口由哪些功能部件組成?各有什么作用? 答:80C51單片機(jī)的串行接口由發(fā)送緩沖期SBUF,接收緩沖期SBUF、輸入移位寄存器、串行接口控制器SCON、定時器T1構(gòu)成的波特率發(fā)生器等部件組成。 由發(fā)送緩沖期SBUF發(fā)送數(shù)據(jù),接收緩沖期SBUF接收數(shù)據(jù)。串行接口通信的工作方式選擇、接收和發(fā)送控制及狀態(tài)等均由串行口控制寄存器SCON控制和指示。定時器T1產(chǎn)生串行通信所需的波特率。,3、簡述串行口接收和發(fā)送數(shù)據(jù)的過程。 答:串行接口的接收和發(fā)

29、送是對同一地址(99H)兩個物理空間的特殊功能寄存器SBUF進(jìn)行讀和寫的。當(dāng)向SBUF發(fā)“寫”命令時(執(zhí)行“MOV SBUF,A”),即向緩沖期SBUF裝載并開始TXD引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完置發(fā)送中斷標(biāo)志位TI=1。 在滿足串行接口接收中斷標(biāo)志位RI(SCON.0)=0的條件下,置允許接收位REN(SCON.4)=1,就會接收一幀數(shù)據(jù)進(jìn)入移位寄存器,并裝載到接收SBUF中,同時使RI=1。當(dāng)發(fā)讀SBUF命令時(執(zhí)行“MOV A, SBUF”),便由接收緩沖期SBUF取出信息通過80C51內(nèi)部總線送CPU。(方式0有所區(qū)別),4、80C51串行口有幾種工作方式?有幾種幀格式?各工作方式的波

30、特率如何確定? 答:80C51串行口有4種工作方式: 方式0(8位同步移位寄存器),方式1(10位異步收發(fā)),方式2(11位異步收發(fā)),方式3(11位異步收發(fā))。 有2種幀格式:10位,11位 方式0:方式0的波特率fosc/12(波特率固定為振蕩頻率1/12) 方式2:方式2波特率2SMOD/64fosc 方式1和方式3:方式1和方式3波特率2SMOD/32(T1溢出速率),5、若異步通信接口按方式3傳送,已知其每分鐘傳送3600個字符,其波特率是多少? 答:已知每分鐘傳送3600個字符,方式3每個字符11位,則: 波特率=(11b/字符)(3600字符/60s)=660b/s 6、80C5

31、1中SCON的SM2,TB8,RB8有何作用? 答:80C51SCON的SM2是多機(jī)通信控制位,主要用于方式2和方式3.若置SM2=1,則允許多機(jī)通信。 TB8是發(fā)送數(shù)據(jù)的第9位,在方式2或方式3中,根據(jù)發(fā)送數(shù)據(jù)的需要由軟件置位或復(fù)位。它在許多通信協(xié)議中可用作奇偶校驗位;在多機(jī)通信中作為發(fā)送地址幀或數(shù)據(jù)幀的標(biāo)志位。 RB8是接收數(shù)據(jù)的第9位,在方式2或方式3中接收到的第9位數(shù)據(jù)放在RB8位。它或是約定的奇偶校驗位,或是約定的地址/數(shù)據(jù)標(biāo)示位。,7、設(shè)fosc11.059MHz,試編寫一段程序,其功能為對串行口初始化,使之工作與方式1,波特率為1200b/s;并用查詢串行口狀態(tài)的方法,讀出接收緩

32、沖器的數(shù)據(jù)并回送到發(fā)送緩沖器。 解: START:MOV SCON,#40H ;串行接口工作于方式1 MOV TMOD,#20H ;定時器T1工作于模式2 MOV TH1,#0E8H ;賦定時器計數(shù)初值 MOV TL1,#0E8H SETB TR1 ;啟動定時器T1 MOV A,SBUF ;讀出接收緩沖器數(shù)據(jù) MOV SBUF,A ;啟動發(fā)送過程 JNB TI,$ ;等待發(fā)送完 CLR TI ;清TI標(biāo)志 SJMP $ ;結(jié)束,8、若晶振為11.0592MHz,串行口工作與方式1,波特率為4800b/s。寫出用T1作為波特率發(fā)生器的方式字和計數(shù)初值。 解: MOV TMOD,#20H ;定時器

33、T1工作于模式2 MOV TH1,#0FAH ;賦定時器計數(shù)初值 MOV TL1,#0FAH 9、為什么定時器T1用作串行口波特率發(fā)生器時,常選用工作模式2?若已知系統(tǒng)時鐘頻率和通信用的波特率,如何計算其初值? 答:因為工作模式2是自動重裝初值定時器,編程時無需重裝時間參數(shù)(計數(shù)初值),比較使用。若選用工作模式0或工作模式1,當(dāng)定時器T1溢出時,需在中斷服務(wù)程序中重裝初值。 已知系統(tǒng)時鐘頻率fosc和通信用的波特率B,可得出定時器T1模式2的初值。,10、若定時器T1設(shè)置成模式2作波特率發(fā)生器,已知fosc6MHz。求可能產(chǎn)生的最高和最低的波特率。 解:最高波特率為T1定時最小值時,此時初值為

34、255,并且SMOD=1,有: 最低波特率為T1定時最大值時,此時初值為0,并且SMOD=0,有: 11、串行通信的總線標(biāo)準(zhǔn)是什么?有哪些內(nèi)容? 答:美國電子工業(yè)協(xié)會(EIA)正式公布的串行總線接口標(biāo)準(zhǔn)有RS-232C,RS-422,RS-423和RS-485等。 在異步串行通信中應(yīng)用最廣的標(biāo)準(zhǔn)總線是RD-232C。它包括了按位串行傳輸?shù)碾姎夂蜋C(jī)械方面的規(guī)定,如適用范圍、信號特性、接口信號及引腳說明等,適用于短距離或帶調(diào)制解調(diào)的通信場合。采用RS-422, RS-485標(biāo)準(zhǔn)時,通信距離可達(dá)1000m。,12、簡述單片幾多機(jī)通信的工作過程。 答:當(dāng)一片80C51(主機(jī))與多片80C51(從機(jī))通

35、信時,所有從機(jī)的SM2位都置1.主機(jī)首先發(fā)送的一幀數(shù)據(jù)為地址,即某從機(jī)機(jī)號,其中第9位為1,所有的從機(jī)接收到數(shù)據(jù)后,將其中第9位裝入RB8中。各從機(jī)根據(jù)收到的第9位數(shù)據(jù)(RB8中)的值來決定從機(jī)可否再接收主機(jī)的信息。若(RB8)=0,說明是數(shù)據(jù)幀,則使接收中斷標(biāo)志位RI=0,信息丟失;若(RB8)=1說明是地址幀,數(shù)據(jù)裝入SBUF并置RI=1,中斷所有從機(jī),只有被尋址的目標(biāo)從機(jī)清除SM2(SM2=0),以接收主機(jī)發(fā)來的一幀數(shù)據(jù)(點對點通信)。其他從機(jī)仍然保持SM2=1.,13、當(dāng)80C51串行口按工作方式1進(jìn)行串行數(shù)據(jù)通信時。假定波特率為1200b/s,系統(tǒng)時鐘頻率fosc=6.0MHZ,以中

36、斷方式傳送16位數(shù)據(jù),數(shù)據(jù)從20H單元開始存放,接收后從40H單元開始存放。請編寫全雙工通信程序。(取SMOD=0) 解:,ORG 0000H AJMP MAIN ORG 0023H AJMP SEND (SERVE) ORG 0040H MAIN: MOV SP,#60H MOV SCON ,#40H(#50H) MOV PCON ,#00H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1 MOV R0 ,#20H MOV R1 ,#40H MOV R7 ,#10H MOV R6 ,#10H SETB ES SETB EA MOV A ,R0,MOV SBUF ,A SJMP $ SERVE: CLR RI MOV A ,SBUF MOV R1 ,A DJNZ R6 ,L1 SJMP L2 L1: INC R1 L2:

溫馨提示

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

最新文檔

評論

0/150

提交評論