第六章串行口及串行通信技術(shù).ppt_第1頁(yè)
第六章串行口及串行通信技術(shù).ppt_第2頁(yè)
第六章串行口及串行通信技術(shù).ppt_第3頁(yè)
第六章串行口及串行通信技術(shù).ppt_第4頁(yè)
第六章串行口及串行通信技術(shù).ppt_第5頁(yè)
已閱讀5頁(yè),還剩56頁(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)介

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

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

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

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

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

6、的8位數(shù)據(jù),寫(xiě)入SBUF便啟動(dòng)發(fā)送。 發(fā)送指令:MOVSBUF,A 接收SBUF放已成功接收的8位數(shù)據(jù),供CPU讀取。 讀取指令: MOV A,SBUF 發(fā)送緩沖器只能寫(xiě)入,不能讀出;接收緩沖器只能讀出,不能寫(xiě)入。,SM2:多機(jī)通訊控制位,用于方式2和方式3中。,在方式2,3處于接收方式時(shí), 若SM2=1,且接收到的第9位數(shù)據(jù)RB8為0時(shí),不激活RI; 若SM2=1,且RB8=1時(shí),則置RI=1。 在方式2,3處于接收或發(fā)送方式時(shí),若SM2=0,不論接收到的第9位RB8為0還是1,TI、RI都以正常方式被激活。 在方式1處于接收時(shí),若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ù)。,可做奇偶校驗(yàn)位,由軟件置位或復(fù)位。 在多機(jī)通信中,可作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)識(shí)位,一般約定地址幀時(shí),TB8為1,數(shù)據(jù)幀時(shí),TB8為0。,RB8:在方式2,3中,接收來(lái)自發(fā)送機(jī)的第9位數(shù)據(jù)(TB8)。,REN:允許接收控制位,=1允許接收;=0禁止接收。,SMOD波特率加倍控制位。=1波特率加倍,=0則不加倍。 GF1、GF0通用標(biāo)志位。 這兩個(gè)標(biāo)志位可供用戶使用,可用

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

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

10、,發(fā)送或接收完8位數(shù)據(jù)由硬件置“1”TI或RI,CPU響應(yīng)中斷。TI或RI須由用戶軟件清“0”,可用如下指令: CLR TI;TI位清“0” CLR RI ;RI位清“0” 方式0時(shí),SM2位必須為0。,方式1:10位異步通訊方式。,一幀10位:起位(0)+8位數(shù)據(jù)位+停位(1),先發(fā)送或接收最低位。 波特率:用T1作波特率發(fā)生器,B=(2SMOD/32)T1溢出率。 發(fā)送:寫(xiě)入SBUF(啟動(dòng)發(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ù)寫(xiě)發(fā)送緩沖器SBUF的指令,就啟動(dòng)發(fā)送。 TX時(shí)鐘是發(fā)送的波特率。 發(fā)送開(kāi)始時(shí),內(nèi)部發(fā)送控制信號(hào)變?yōu)橛行А⑵鹗嘉幌騎XD輸出,此后,每經(jīng)過(guò)一個(gè)TX時(shí)鐘周期,便產(chǎn)生一個(gè)移位脈沖,并由TXD輸出一個(gè)數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,置“1” TI。,b接收 數(shù)據(jù)從RXD(P3.0)腳輸入。當(dāng)檢測(cè)到起始位的負(fù)跳變時(shí),開(kāi)始接收數(shù)據(jù)。 定時(shí)控制信號(hào)有兩種:接收移位時(shí)鐘(RX時(shí)鐘,頻率和波特率相同)和位檢測(cè)器采樣脈沖(頻率是RX時(shí)鐘的16倍,1位數(shù)據(jù)期間,有16個(gè)采樣脈沖),當(dāng)采樣到RXD端從1到0的跳變時(shí)就啟動(dòng)檢測(cè)器,接收的值是3次連續(xù)采樣(第7、8、9個(gè)脈沖時(shí)采樣)進(jìn)行表決以確認(rèn)是否是真正

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

13、寫(xiě)TB8,寫(xiě)入SBUF(啟動(dòng)發(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ī)通訊時(shí)的奇偶校驗(yàn)位或多機(jī)通訊時(shí)的地址/數(shù)據(jù)的標(biāo)志位)。 b方式2接收 SM0、SM1=10,且REN=1。數(shù)據(jù)由RXD端輸入,接收11位信息。當(dāng)位檢測(cè)到RXD從1到0的負(fù)跳變,并判斷起始位有效后,開(kāi)始收一幀信息。在接收器完第9位數(shù)據(jù)后,需滿足兩個(gè)條件,才能將接收到的數(shù)據(jù)送入SBUF。 (1)RI=

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

15、內(nèi)。,方式1,3下的波特率:,T1模2溢出時(shí)間:,T1模2定時(shí)初值:,定時(shí)器1產(chǎn)生的常用波特率,要保證主機(jī)與所選擇的從機(jī)實(shí)現(xiàn)可靠地通信,必須保證串口具有識(shí)別功能。 SCON中的SM2位就是滿足這一條件而設(shè)置的多機(jī)通信控制位。 原理:在串行口以方式2(或方式3)接收時(shí), 若SM2=1,表示置多機(jī)通信功能位,這時(shí)有兩種可能: (1)接收到的第9位數(shù)據(jù)為1時(shí),數(shù)據(jù)才裝入SBUF,并置中斷標(biāo)志RI=1向CPU發(fā)出中斷請(qǐng)求; (2)接收到的第9位數(shù)據(jù)為0時(shí),則不產(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個(gè)從機(jī),如圖。主機(jī)的RXD與從機(jī)的TXD相連,主機(jī)TXD與從機(jī)的RXD端相連。從機(jī)地址分別為00H、01H、02H。,多機(jī)通信工作過(guò)程: (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ī)送來(lái)的地址是否和本機(jī)地址相符合,相符則該從機(jī)清“0”SM2位,準(zhǔn)備接收主機(jī)的數(shù)據(jù)或命令;若

17、不符,則保持SM2=1狀態(tài)。 (3)接著主機(jī)發(fā)送數(shù)據(jù)幀,此時(shí)各從機(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ī)才能實(shí)現(xiàn)。,三、雙機(jī)串行通信硬件接口 AT80C51串行口以TTL電平串行傳輸,抗干擾性差,傳輸距離短。 為了提高串行通信的可靠性,增大串行通信的距離,一般都采用標(biāo)準(zhǔn)串行接口,如RS-232、RS-422A、RS-485等來(lái)

18、實(shí)現(xiàn)串行通信。 根據(jù)AT80C51的雙機(jī)通信距離和抗干擾性的要求,可選擇TTL電平傳輸,或選擇RS-232C、RS-422A、RS485串行接口進(jìn)行串行數(shù)據(jù)傳輸。,1TTL電平通信接口 如果兩個(gè)80C51單片機(jī)相距在幾米之內(nèi),它們的串行口可直接相連,從而直接用TTL電平傳輸方法來(lái)實(shí)現(xiàn)雙機(jī)通信,接口電路如圖7-14所示。,圖7-14,2RS-232C雙機(jī)通信接口 如果雙機(jī)通信距離在30m之內(nèi),可利用RS-232C標(biāo)準(zhǔn)接口實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的雙機(jī)通信,接口電路如圖7-15所示。 圖7-15中的MAX232A是美國(guó)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ī)通信需四芯傳輸線,對(duì)長(zhǎng)距離通信很不經(jīng)濟(jì),故通常采用雙絞線傳輸?shù)腞S-485串行通信接口,它很容易實(shí)現(xiàn)多機(jī)通信。圖7-17給出了其RS-485雙機(jī)通信接口電路,最大傳輸距離可達(dá)1000m左右。,圖7-17,SIO: MOV SCON,#控制狀態(tài)字 ;寫(xiě)方式字且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) ;開(kāi)串行口中斷 (SETB ES),四、80C51串行口初始化編程格式,五、串行口方式0的應(yīng)用,解:采用中斷方式發(fā)送數(shù)據(jù),顯示延時(shí)調(diào)用延時(shí)子程序DELAY。,例:用80C51串口外接74HC164擴(kuò)展8位并行輸出口,每位接一個(gè)發(fā)光二極管(陰接地),要求從左到右延遲輪流顯示,并不斷循環(huán)。,例:用80C51串口外接74HC165擴(kuò)展

21、8位并行輸入口,輸入數(shù)據(jù)由8個(gè)開(kāi)關(guān)提供,另有一個(gè)開(kāi)關(guān)K提供聯(lián)絡(luò)信號(hào)。當(dāng)K=0時(shí),表示要求輸入8位開(kāi)關(guān)量,作為邏輯模擬子程序的輸入信號(hào)。,解:采用查詢方式輸入。要點(diǎn): REN=1,允許接收 K閉合才輸入,六、異步通訊程序舉例,發(fā)送程序:先發(fā)送一個(gè)字符,等待TI=1后再發(fā)送下一個(gè)字符。,TRAM:MOV A,R0 ;取數(shù)據(jù) MOVSBUF,A ;發(fā)送一個(gè)字符 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ā)送第一個(gè)字符 H:SJMP H ;其它工作 SINT:CLR TI ;中斷服務(wù)程序 INCR0 MOVA,R0 ;取數(shù)據(jù) MOVSBUF,A ;發(fā)送下一個(gè)字符 RETI,中斷方式:,ORG 0000H LJMP MAINT ORG0023H ;串行口中斷入口LJMPTRANI MAINT: MOV SCON,#80H;串行口初始化 MOV PCON,#80H;波特率 SETBEA SETBES;開(kāi)串行口中斷 MOV R0,#50H ;設(shè)數(shù)據(jù)指針 MOV R7,#10H ;數(shù)據(jù)長(zhǎng)度 MOV A,R0 ;取一個(gè)字符 MOV C,P ;加偶校驗(yàn) MOV TB

23、8,C MOV SBUF,A ;啟動(dòng)一次發(fā)送 HERE:SJMPHERE;CPU執(zhí)行其它任務(wù),例:將片內(nèi)RAM 50H起始單元的16個(gè)數(shù)由串行口發(fā)送,要求用中斷方式發(fā)送,波特率為系統(tǒng)時(shí)鐘的32分頻,并進(jìn)行偶校驗(yàn)。,TRANI:PUSH ACC;保護(hù)現(xiàn)場(chǎng) 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 ;取下一個(gè)字符 MOV C,P ;加偶校驗(yàn) MOV TB8,C MOV SBUF,A ;發(fā)送一個(gè)字符 TEND: POP PSW ;恢

24、復(fù)現(xiàn)場(chǎng) 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個(gè)字符,存入片內(nèi)RAM的50H起始單元,采用中斷方式,

25、波特率為2400(晶振11.0592MHz),不校驗(yàn)。,ORG0000H LJMPMAINT ORG0023H ;串行口中斷入口AJMPRINT MAINT: MOV SCON,#50H ;串行口方式1允許接收MOV TMOD,#20H ;T1方式2定時(shí)MOV TL1,#0F4H ;寫(xiě)入T1時(shí)間常數(shù)MOV TH1,#0F4HSETB TR1 ;啟動(dòng)T1 SETBEA;CPU開(kāi)中 SETBES;串口開(kāi)中 MOV R0,#50H ;設(shè)數(shù)據(jù)指針MOV R7,#10H ;接收數(shù)據(jù)長(zhǎng)度 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 ;保存一個(gè)字符INC R0 ;修改指針 REND: RETI ;中斷返回,RECS: MOV SCON,#0D0H ;串行口方式3允許接收MOV TMOD,#20H ;T1方式2定時(shí)MOV TL1,#0F4H ;寫(xiě)入T1時(shí)間常數(shù)MOV TH1,#0F4HSETB TR1 ;啟動(dòng)T1MOV R0,#50H ;設(shè)數(shù)據(jù)指針MOV R7,#10H ;接收數(shù)據(jù)長(zhǎng)度 WAIT: JBC RI,NEXT ;等待串行口接收SJMP WAIT NEXT:MOV A,SBUF ;取一個(gè)接收字符JNB

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

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

29、送是對(duì)同一地址(99H)兩個(gè)物理空間的特殊功能寄存器SBUF進(jìn)行讀和寫(xiě)的。當(dāng)向SBUF發(fā)“寫(xiě)”命令時(shí)(執(zhí)行“MOV SBUF,A”),即向緩沖期SBUF裝載并開(kāi)始TXD引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完置發(fā)送中斷標(biāo)志位TI=1。 在滿足串行接口接收中斷標(biāo)志位RI(SCON.0)=0的條件下,置允許接收位REN(SCON.4)=1,就會(huì)接收一幀數(shù)據(jù)進(jìn)入移位寄存器,并裝載到接收SBUF中,同時(shí)使RI=1。當(dāng)發(fā)讀SBUF命令時(shí)(執(zhí)行“MOV A, SBUF”),便由接收緩沖期SBUF取出信息通過(guò)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個(gè)字符,其波特率是多少? 答:已知每分鐘傳送3600個(gè)字符,方式3每個(gè)字符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é)議中可用作奇偶校驗(yàn)位;在多機(jī)通信中作為發(fā)送地址幀或數(shù)據(jù)幀的標(biāo)志位。 RB8是接收數(shù)據(jù)的第9位,在方式2或方式3中接收到的第9位數(shù)據(jù)放在RB8位。它或是約定的奇偶校驗(yàn)位,或是約定的地址/數(shù)據(jù)標(biāo)示位。,7、設(shè)fosc11.059MHz,試編寫(xiě)一段程序,其功能為對(duì)串行口初始化,使之工作與方式1,波特率為1200b/s;并用查詢串行口狀態(tài)的方法,讀出接收緩

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

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

34、255,并且SMOD=1,有: 最低波特率為T(mén)1定時(shí)最大值時(shí),此時(shí)初值為0,并且SMOD=0,有: 11、串行通信的總線標(biāo)準(zhǔn)是什么?有哪些內(nèi)容? 答:美國(guó)電子工業(yè)協(xié)會(huì)(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ī)定,如適用范圍、信號(hào)特性、接口信號(hào)及引腳說(shuō)明等,適用于短距離或帶調(diào)制解調(diào)的通信場(chǎng)合。采用RS-422, RS-485標(biāo)準(zhǔn)時(shí),通信距離可達(dá)1000m。,12、簡(jiǎn)述單片幾多機(jī)通信的工作過(guò)程。 答:當(dāng)一片80C51(主機(jī))與多片80C51(從機(jī))通

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

36、斷方式傳送16位數(shù)據(jù),數(shù)據(jù)從20H單元開(kāi)始存放,接收后從40H單元開(kāi)始存放。請(qǐng)編寫(xiě)全雙工通信程序。(取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. 本站所有資源如無(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)論