串行通信接口結(jié)構(gòu)和工作原理_第1頁(yè)
串行通信接口結(jié)構(gòu)和工作原理_第2頁(yè)
串行通信接口結(jié)構(gòu)和工作原理_第3頁(yè)
串行通信接口結(jié)構(gòu)和工作原理_第4頁(yè)
串行通信接口結(jié)構(gòu)和工作原理_第5頁(yè)
已閱讀5頁(yè),還剩72頁(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)介

本章介紹的主要內(nèi)容★串行通信的基本概念★串行通信接口結(jié)構(gòu)和工作原理★串行通信的控制寄存器★串行通信的應(yīng)用編程

8·1概述

單片機(jī)應(yīng)用與數(shù)據(jù)采集或工業(yè)控制時(shí),往往作為前端機(jī)安裝在工業(yè)現(xiàn)場(chǎng),遠(yuǎn)離主機(jī),現(xiàn)場(chǎng)數(shù)據(jù)采用串行通信方式發(fā)往主機(jī)進(jìn)行處理,以降低通信成本,提高通信可靠性。如下圖所示。

★數(shù)據(jù)通信方式有兩種:并行通信與串行通信★并行通信:所傳送數(shù)據(jù)的各位同時(shí)發(fā)送或接收,

數(shù)據(jù)有多少位就需要多少根數(shù)據(jù)線。特點(diǎn):速度快,成本高,適合近距離傳輸如計(jì)算機(jī)并口,打印機(jī),8255。★串行通信:所傳送數(shù)據(jù)的各位按順序一位一位地發(fā)送或接收。只需一根數(shù)據(jù),一根地線,共2根(如雙向通信發(fā)送和接收各需1根數(shù)據(jù)線。) 特點(diǎn):成本低,硬件方便,適合遠(yuǎn)距離通信,傳輸速度低。

★串行通信的分類:同步串行通信和異步串行通信

一、異步通信:

通信的雙方應(yīng)該有一個(gè)約定,什么時(shí)候開始發(fā)送,什么時(shí)候發(fā)送完畢;接收方收到的信息是否正確等,這就是通信協(xié)議。異步串行通信一幀數(shù)據(jù)格式:

一個(gè)起始位“0”,表示字符的開始,然后是5~8位數(shù)據(jù)即該字符的代碼,規(guī)定低位在前,高位在后,接下來(lái)是奇偶校驗(yàn)位(可省略),最后以停止位“1”表示字符的結(jié)束。優(yōu)點(diǎn):硬件結(jié)構(gòu)簡(jiǎn)單。缺點(diǎn):傳輸速度慢?!璓1D0D1D2D3D4D5D6D7P10第n個(gè)字符(一幀)n-1n+10D0…起始位數(shù)據(jù)位(5~8位)校驗(yàn)位停止位二、同步通信

在同步通信中,發(fā)送方在數(shù)據(jù)或字符開始處就用同步字符(常約定1~2個(gè)字節(jié))指示一幀的開始,由時(shí)鐘來(lái)實(shí)現(xiàn)發(fā)送端和接收端同步,接收方一旦檢測(cè)到與規(guī)定的同步字符符合,下面就連續(xù)按順序傳送若干個(gè)數(shù)據(jù),最后發(fā)校驗(yàn)字節(jié)。見下圖:SYN字符1SYN字符2數(shù)據(jù)1數(shù)據(jù)2….數(shù)據(jù)n連續(xù)傳送n個(gè)數(shù)據(jù)校驗(yàn)三、單工、半雙工、全雙工通信方式

按通信方向分類:?jiǎn)喂?、半雙工、全雙工通信方式

1.

單工方式:一端是發(fā)送端,另外一端是接收端:

2.半雙工方式

每端口有一個(gè)發(fā)送器和一個(gè)接收器,通過(guò)開關(guān)連接在線路上,數(shù)據(jù)可以雙向傳送,但不能同時(shí)發(fā)送和接收.

要通過(guò)換向器轉(zhuǎn)換方向。3.全雙工方式

通信雙方用兩個(gè)獨(dú)立的收發(fā)器單獨(dú)連接,可以同時(shí)發(fā)送和接收數(shù)據(jù),因而提高了速度。

1.實(shí)現(xiàn)數(shù)據(jù)格式化

因?yàn)镃PU發(fā)出的數(shù)據(jù)是并行數(shù)據(jù),接口電路應(yīng)實(shí)現(xiàn)不同串行通信方式下的數(shù)據(jù)格式化任務(wù),如自動(dòng)生成起止方式的幀數(shù)據(jù)格式(異步方式)或在待傳送的數(shù)據(jù)塊前加上同步字符等。在串行傳輸中,通信的雙方都按通信協(xié)議進(jìn)行,所謂通信協(xié)議就是通信雙方必須共同遵守的一種約定,約定包括數(shù)據(jù)的格式、同步的方式、傳送的步驟、檢糾錯(cuò)方式及控制字符的定義等。串行接口的基本任務(wù)就是:

2.進(jìn)行串、并轉(zhuǎn)換在發(fā)送端,接口將CPU送來(lái)的并行信號(hào)轉(zhuǎn)換成串行數(shù)據(jù)進(jìn)行傳送;而在接收端,接口要將接收到串行數(shù)據(jù)變成并行數(shù)據(jù)送往CPU,由CPU進(jìn)行處理。3.控制數(shù)據(jù)的傳輸速率

接口應(yīng)具備對(duì)數(shù)據(jù)傳輸率—波特率的控制選擇能力,即具有波特率發(fā)生器。4.進(jìn)行傳送錯(cuò)誤檢測(cè)在發(fā)送時(shí),對(duì)傳送的數(shù)據(jù)自動(dòng)生成校驗(yàn)位或校驗(yàn)碼,在接收端能檢查校驗(yàn)位或校驗(yàn)碼,以確定傳送中是否有誤碼。

51系列單片機(jī)內(nèi)有一個(gè)全雙工的異步通信接口,通過(guò)對(duì)串行接口寫控制字可以選擇其數(shù)據(jù)格式,同時(shí)內(nèi)部有波特率發(fā)生器,提供可選的波特率,可完成雙機(jī)通信或多機(jī)通信。

四、波特率

單位時(shí)間內(nèi)傳送的信息量。在計(jì)算機(jī)中,以每秒傳送的二進(jìn)制位數(shù)為單位。例如:100字符/秒,1個(gè)字符11位,波特率為:100×11=1100(波特)平均每位傳送占用時(shí)間Td=1/1100=0.909ms(一)通信線的連接

通信速率和通信距離這兩個(gè)方面是相互制約的,降低通信速率,可以提高通信距離.

不同的通信距離,串行通信電路有不同的連接方法五.串行通信總線標(biāo)準(zhǔn)及接口RXDTXDGNDRXDTXDGNDRXDTXDGND電平轉(zhuǎn)換RXDTXDGNDRXDTXDGND電平轉(zhuǎn)換RXDTXDGND微機(jī)微機(jī)其他設(shè)備較遠(yuǎn)距離傳送電路近距離傳送電路微機(jī)接口調(diào)制解調(diào)器調(diào)制解調(diào)器接口微機(jī)電話分機(jī)電話分機(jī)遠(yuǎn)距離傳送電路數(shù)字信號(hào)通過(guò)調(diào)制器變成模擬信號(hào)通過(guò)電話線傳送到對(duì)方,接收方通過(guò)解調(diào)器將模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)接收。(二)串行通信接口總線標(biāo)準(zhǔn)

測(cè)控系統(tǒng)中,計(jì)算機(jī)通信主要采用異步串行通信方式,常用的異步總線標(biāo)準(zhǔn)有三種:●RS-232(RS-232ARS-232BRS-232C)●RS-449(RS422RS423RS485)●20mA電流環(huán)

這里重點(diǎn)介紹RS-232RS-232C:速率:20Kbit/S,最大通信距離:15mRS422:10Mbit/s,:300m90Kbit/s,:1200m1.

2.抗干擾能力采用標(biāo)準(zhǔn)的通信接口,本身具有一定的抗干擾能力,但是工業(yè)現(xiàn)場(chǎng)的情況往往很惡劣,因而要根據(jù)具體情況進(jìn)行選擇。RS232C:一般場(chǎng)合RS422:共模信號(hào)比較強(qiáng)光纖:電磁干擾較強(qiáng)二、RS-232C

美國(guó)電子工業(yè)協(xié)會(huì)(EIA)公布的一種異步通信標(biāo)準(zhǔn)。RS232C標(biāo)準(zhǔn)是:●設(shè)備之間通信的距離不大于15米●最大傳輸速率20KB/S●采用負(fù)邏輯:“1”——―5V∽―15V“0”——+5V∽+15V●不帶負(fù)載時(shí)輸出電平:―25V∽+25V●輸出短路電流:<0.5A●最大負(fù)載電容:2500pF

當(dāng)計(jì)算機(jī)采用RS232標(biāo)準(zhǔn)時(shí)必須通過(guò)電平,MAX232是EIA和TTL電平轉(zhuǎn)換芯片。內(nèi)部具有電壓提升電路,并有兩路接收器和發(fā)送器。其連線和引腳如圖

TTL電平可以由專用集成電路轉(zhuǎn)換成RS232C標(biāo)準(zhǔn);如:MC1488或75188TTLRS232C從MC1489或75189RS232CTTL由于MC1488需要采用±12V電源,一般在單片機(jī)通信中大量使用的是只需要+5V電源、具有發(fā)送和接收的一體化芯片,如:MAX232、ICL232、ADM202等。MCS—51之間的雙機(jī)通信

RXDTXDGNDTXDGND8xx518xx51RXDMCS—51和PC機(jī)的雙機(jī)通信MCS—51和PC機(jī)的雙機(jī)通信見下圖8.2MCS-51的串行口結(jié)構(gòu)

51單片機(jī)有一個(gè)可編程的全雙工異串行通信接口,它可作UART用,也可作同步移位寄存器,其幀格式可有8位、10位或11位,并能設(shè)置各種波特率,給使用者帶來(lái)很大的靈活性。

一、串行口的內(nèi)部結(jié)構(gòu)

發(fā)送SBUF(99H)門88圖8.7串行口結(jié)構(gòu)框圖

RXD(P3.0)TXD(P3.1)中斷接收SBUF(99H)定時(shí)器T1fosc2分頻器發(fā)送控制器接收控制器串寄行存控器制SCON(98H)輸入移位寄存器TIRI內(nèi)部總線5l單片機(jī)通過(guò)引腳RXD(P3.0)串行數(shù)據(jù)接收端)和引腳TXD(P3.l)串行數(shù)據(jù)發(fā)送端)與外界進(jìn)行通信。圖中有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器SBUF,它們占用同一地址99H,可同時(shí)發(fā)送、接收數(shù)據(jù)。

發(fā)送緩沖器只能寫入,不能讀出,CPU寫SBUF,一方面修改發(fā)送寄存器,同時(shí)啟動(dòng)數(shù)據(jù)串行發(fā)送;●接收緩沖器只能讀出、不能寫入。讀SBUF,就是讀接收寄存器?!翊锌刂萍拇嫫鱏CON用以存放串行口的控制和狀態(tài)信息。8XX51串行口正是通過(guò)對(duì)上述專用寄存器的設(shè)置、檢測(cè)與讀取來(lái)管理串行通信的。●特殊功能寄存器PCON的最高位SMOD為串行口波特率的倍增控制位。●波特率發(fā)生器可以有兩種選擇:1.定時(shí)器T1作波特率發(fā)生器,改變計(jì)數(shù)初值就可以改變串行通信的速率,稱為可變波特率。2.以內(nèi)部時(shí)鐘的分頻器作波特率發(fā)生器,因內(nèi)部時(shí)鐘頻率一定,稱為固定波特率shiftMOVA,SBUF串行數(shù)據(jù)CPUCPUSBUFSBUFshiftMOVSBUF,A并行數(shù)據(jù)并行數(shù)據(jù)甲方(發(fā)送)乙方(接收)

甲方發(fā)送時(shí),CPU執(zhí)行指令MOVSBUF,A啟動(dòng)了發(fā)送過(guò)程,數(shù)據(jù)并行送入SBUF,在發(fā)送時(shí)鐘shift的控制下由低位到高位一位一位發(fā)送,乙方在接收時(shí)鐘shift的控制下由低位到高位順序進(jìn)入移位寄存器SBUF,甲方一幀數(shù)據(jù)發(fā)送完畢,置位發(fā)送中斷標(biāo)志二、串行通信的傳送過(guò)程用下面簡(jiǎn)圖說(shuō)明TIRITI,該位可作為查詢標(biāo)志(或引起中斷),CPU可再發(fā)送下一幀數(shù)據(jù)。乙方一幀數(shù)據(jù)到齊即接收緩沖器滿,置位接收中斷標(biāo)志RI,該位可作為查詢標(biāo)志(或引起接收中斷),通過(guò)MOVA,SBUFCPU將這幀數(shù)據(jù)并行讀入。由上述可知:甲、乙方的移位時(shí)鐘頻率應(yīng)相同,即應(yīng)具有相同的波特率,否則會(huì)造成數(shù)據(jù)丟失。發(fā)送方是先發(fā)數(shù)據(jù)再查標(biāo)志,接收方是先查標(biāo)志再收數(shù)據(jù)。51單片機(jī)串行口是一個(gè)可編程接口,對(duì)它的編程只用兩個(gè)控制字分別寫入特殊功能寄存器:串行口控制寄存器SCON(98H)電源控制寄存器PCON(97H)

三、串行口的控制寄存器

3.CPU通過(guò)指令和SBUF并行交換數(shù)據(jù),并不能控制數(shù)據(jù)的串行移位,它只能查詢標(biāo)志位來(lái)確定數(shù)據(jù)的移位是否完成。8.3串行口的控制寄存器8.3.1串行口的控制寄存器SCON8XX51串行通信的方式選擇,接受和發(fā)送控制及串行口的標(biāo)志均由專用寄存器SCON控制和指示,其格式如下:SM0SM1SM2RENTB8RB8TIRI方式選擇多機(jī)控制串行接收允許/禁止欲發(fā)的第九位收到的第九位發(fā)送中斷有/無(wú)接收中斷有/無(wú)SM0.SM1:串行口工作方式控制位。00---方式0,01---方式110---方式2,11---方式3REN:串行接收允許位。0---禁止接收,1---允許接收TB8:在方式2,3中,TB8是發(fā)送機(jī)要發(fā)送的第9位數(shù)據(jù)。RB8:在方式2,3中,RB8是接受機(jī)收到的第9位數(shù)據(jù),該數(shù)據(jù)來(lái)自發(fā)送機(jī)的TB8。TI:發(fā)送中斷標(biāo)志位。發(fā)送前必須用軟件清零,發(fā)送過(guò)程中TI保持零電平,發(fā)送完一幀數(shù)據(jù)后,由硬件置“1”,如果再發(fā)送,必須用軟件再清零。RI:接收中斷標(biāo)志位。接收前,必須用軟件清零,接收過(guò)程中RI保持零電平,接收完一幀數(shù)據(jù)后由片內(nèi)硬件自動(dòng)置“1”。如果再接收必須用軟件清零。SM2:多機(jī)通信控制位,僅用于方式2和方式3。當(dāng)選擇方式2或方式3時(shí),發(fā)送機(jī)設(shè)置SM2=1,以發(fā)送第九位TB8為1作為地址幀尋找從機(jī),以TB8為0作為數(shù)據(jù)幀進(jìn)行通信,從機(jī)初始化時(shí)設(shè)置SM2=1,若接收到的第九位數(shù)據(jù)RB8=0,不置位RI,即不引起接收中斷,亦既不接收數(shù)據(jù)幀,繼續(xù)監(jiān)聽,如接收到的RB8=1,置位RI,引起接收中斷,中斷程序中判斷所接收的地址幀和本機(jī)的地址是否符合,若不符合,維持SM2=1,繼續(xù)監(jiān)聽,若符合,則清SM2,接收對(duì)放發(fā)來(lái)的后續(xù)信息.

綜上所述,SM2的作用為:在方式2,3中,發(fā)送機(jī)SM2=1(程序設(shè)置).接收機(jī)SM2=1,若RB8=1,激活RI,引起接收中斷.RB8=0,不激活RI,不引起接斷.SM2=0,無(wú)論RB8=1還是RB8=0均激活RI引起接收中斷。在方式1中,當(dāng)接收時(shí)SM2=1,則只有收到有效停止位才激活RI,在方式0中,SM2應(yīng)置為0。PCON的字節(jié)地址為87H,無(wú)位地址,只能字節(jié)尋址.,初始化時(shí)SMOD=0.SMODXXXXXXXPCON87H8.3.2電源控制寄存器PCONPCON的格式如下圖所示,串行通信只用其中的最高位SMODSMOD:波特率加倍位。在計(jì)算串行方式1、2、3的波特率時(shí),SMOD=0—不加倍;SMOD=

1—加倍

8.4串行口的工作方式根據(jù)串行通信數(shù)據(jù)格式和波特率的不同,51系列單片機(jī)的串行通信有四種工作方式,通過(guò)編程進(jìn)行選擇,各工作方式的特點(diǎn)如下:1.方式0RXD為串行數(shù)據(jù)的發(fā)送端或接收端,TXD輸出頻率為fosc/12的時(shí)鐘脈沖。波特率固定為fosc/12(fosc為單片機(jī)晶振頻率)方式0的數(shù)據(jù)格式為8位,低位在前,高位在后移位寄位器方式多用于接口的擴(kuò)展,當(dāng)用單片機(jī)構(gòu)成系統(tǒng)時(shí),往往感到并行口不夠用,此時(shí)可通過(guò)外接串入并出移位寄存器擴(kuò)展輸出接口;通過(guò)外接并入串出移位寄存器擴(kuò)展輸入接口,方式0也可應(yīng)用于短距離的單片機(jī)之間的通信。2.方式1為10位異步通信方式,幾每幀數(shù)據(jù)由1個(gè)起始位“0”.八個(gè)數(shù)據(jù)位和1個(gè)停止位“1”共10位構(gòu)成.其中起始位和停止位在發(fā)送時(shí)是自動(dòng)插入的.以TXD為串行數(shù)據(jù)的發(fā)送端,T1提供位時(shí)鐘,RXD為數(shù)據(jù)的接收端,由T1提供移位時(shí)鐘,是波特率可變方式波特率=(2SMOD/32)×(TI的溢出率)=(2SMOD/32)×(fosc/12(256-x))根據(jù)給定的波特率,可以計(jì)算T1的計(jì)數(shù)初值X。11位異步發(fā)送/接收方式,即每幀數(shù)據(jù)由有一個(gè)起始位“0”,9個(gè)數(shù)據(jù)位和1個(gè)停止位“1”組成.發(fā)送時(shí)九個(gè)數(shù)據(jù)位,由SCON寄存器的TB8位提供,接收到的第九位數(shù)據(jù)存放在SCON寄存器的RB8位.第九位數(shù)據(jù)可作為檢驗(yàn)位,也可用于多機(jī)通信中識(shí)別傳送的是地址還是數(shù)據(jù)的特征位。波特率固定為(2SMOD/64)×fosc.3.方式24.方式3數(shù)據(jù)格式同方式2,所不同的是波特率可變,計(jì)算方式同方式1。設(shè)定工作方式、接收/發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志

80C51串行口的控制寄存器SM0SM1SM2RENTB8RB8TIRISCON(98H)SM0、SM1:工作方式設(shè)置位

00:移位寄存器,fosc/1201:10位異步收發(fā)器(8位數(shù)據(jù)),波特率可變

10:11位異步收發(fā)器(9位數(shù)據(jù)),fosc/64或fosc/3211:11位異步收發(fā)器(9位數(shù)據(jù)),波特率可變

SM2,多機(jī)通信控制位。主要用于方式2和方式3。對(duì)于接收機(jī)

SM2=0,收到RB8(0或1)既可使收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI。

SM2=1,收到的RB8=0時(shí),收到的信息丟棄,不激活RI;若收到的RB8=1時(shí),收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI,進(jìn)而在中斷服務(wù)中將數(shù)據(jù)從SBUF讀走。方式0時(shí),SM2必須是0。方式1時(shí),SM2=1時(shí),只有接收到有效停止位時(shí),RI才激活。REN,允許串行接收位。置REN=1,啟動(dòng)串口接收過(guò)程置REN=0,則禁止串口接收

TB8,在方式2、3中,是發(fā)送數(shù)據(jù)的第9位數(shù)據(jù)的奇偶校驗(yàn)位地址幀/數(shù)據(jù)幀的標(biāo)志位

RB8,在方式2、3中,是接收到數(shù)據(jù)的第9位奇偶校驗(yàn)位地址幀/數(shù)據(jù)幀的標(biāo)志位。方式1時(shí),若SM2=0,則RB8是接收到的停止位。

TI,發(fā)送中斷標(biāo)志位。方式0時(shí),串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí)其它方式,串行發(fā)送停止位的開始時(shí)硬件使TI置1,發(fā)中斷申請(qǐng)。必須在中斷服務(wù)程序中用軟件將其清0。RI,接收中斷標(biāo)志位。方式0時(shí),串行接收第8位數(shù)據(jù)結(jié)束時(shí)其它方式,串行接收停止位的中間時(shí)硬件使RI置1,發(fā)中斷申請(qǐng)。必須在中斷服務(wù)程序中用軟件將其清0。PCON

SMOD,

波特率倍增位。在方式1、2、3時(shí),波特率與SMOD有關(guān):SMOD=1時(shí),波特率提高一倍。復(fù)位時(shí),SMOD=0。SMODPCON(97H)

6.2.380C51串行口的工作方式

方式0

同步移位寄存器的輸入輸出方式。用于擴(kuò)展并行輸入或輸出口。數(shù)據(jù)由RXD引腳輸入或輸出,移位脈沖由TXD引腳輸出。8位數(shù)據(jù)。波特率為fosc/12。

方式0輸出

方式0輸入方式0接收和發(fā)送電路

方式110位數(shù)據(jù)的異步通信。幀格式如圖所示。

方式1輸出

方式1輸入

置REN為1時(shí),接收器檢測(cè)到RXD引腳輸入電平發(fā)生負(fù)跳變時(shí),則說(shuō)明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。當(dāng)RI=0,且SM2=0(或接收到的停止位為1)時(shí),將收到的9位數(shù)據(jù)的前8位裝入SBUF,第9位(停止位)進(jìn)入RB8,并置RI=1,向CPU請(qǐng)求中斷。

方式2和方式311位數(shù)據(jù)的異步通信。起始位1位,數(shù)據(jù)9位,停止位1位方式2的波特率固定為晶振頻率的1/64或1/32方式3的波特率由定時(shí)器T1的溢出率決定

方式2和方式3輸出先把起始位0輸出到TXD,然后發(fā)送移位寄存器的輸出位(D0)。每一移位脈沖都使輸出移位寄存器的各位移動(dòng)一位,并由TXD引腳輸出。最后一次移位后,置TI=1,請(qǐng)求中斷。

方式2和方式3輸入數(shù)據(jù)從右邊移入輸入移位寄存器,最后一次移位后,若RI=0,且SM2=0(或接收到的第9位數(shù)據(jù)為1)時(shí),接收到的數(shù)據(jù)裝入接收緩沖器SBUF和RB8(接收數(shù)據(jù)的第9位),置RI=1,向CPU請(qǐng)求中斷。如果條件不滿足,則數(shù)據(jù)丟失,且不置位RI波特率的計(jì)算

方式0、2的波特率是固定的,而方式1、3的波特率是可變的,由定時(shí)器T1的溢出率來(lái)決定。

方式0波特率=fosc/12方式2波特率=(2SMOD/64)·fosc方式1波特率=(2SMOD/32)·(T1溢出率)方式3波特率=(2SMOD/32)·(T1溢出率)T1溢出率=fosc/{12×[256-(TH1)]}T1方式2,TR1=1(以啟動(dòng)定時(shí)器)串行口初始化具體步驟:確定T1的工作方式(編程TMOD寄存器);計(jì)算T1的初值,裝載TH1、TL1;啟動(dòng)T1(編程TCON中的TR1位);確定串行口控制(編程SCON寄存器);串行口在中斷方式工作時(shí),還要進(jìn)行中斷設(shè)置(編程IE、IP寄存器)。8.5串行口的應(yīng)用編程串行口的波特率有兩種方式:固定波特率可變波特率注意:使用可變波特率時(shí),先確定TI的計(jì)數(shù)初值,并對(duì)TI進(jìn)行初始化。串行通信的編程方式:查詢方式:查TI或RI是否為“1”。中斷方式:如果預(yù)先開了中斷,當(dāng)TI、RI為“1”,會(huì)自動(dòng)產(chǎn)生中斷。注意:兩種方式中當(dāng)發(fā)送或接受數(shù)據(jù)后都要注意清TI或RI。查詢方式發(fā)送程序:(先發(fā)后查)發(fā)送一個(gè)數(shù)據(jù)→查詢TI→發(fā)送下一個(gè)數(shù)據(jù)查詢方式接收程序:(先查后收)查詢RI→讀入一個(gè)數(shù)據(jù)→查詢RI→讀下一個(gè)數(shù)據(jù)中斷方式發(fā)送程序:發(fā)送一個(gè)數(shù)據(jù)→等待中斷,在中斷中再發(fā)送下一個(gè)數(shù)據(jù)。中斷方式接收程序:等待中斷,在中斷中再接收一個(gè)數(shù)據(jù)。8.5.1查詢方式查詢方式發(fā)送流程圖和接收流程圖見下頁(yè)T1初始化、啟動(dòng)T1工作設(shè)定串行通信方式置發(fā)送數(shù)據(jù)塊首址數(shù)據(jù)塊長(zhǎng)度計(jì)數(shù)器清TI發(fā)送數(shù)據(jù)TI=1?修改地址指針和塊長(zhǎng)度計(jì)數(shù)器全部數(shù)據(jù)發(fā)送完?開始結(jié)束查詢方式發(fā)送流程圖YNYNT1初始化、啟動(dòng)T1工作設(shè)定串行通信方式,允許接收置接收緩沖區(qū)首址接收數(shù)據(jù)塊長(zhǎng)度清RIRI=1?修改地址指針和塊長(zhǎng)度計(jì)數(shù)器全部數(shù)據(jù)接收完?開始結(jié)束接收數(shù)據(jù)Y查詢方式接收流程圖YNYN8.5.2中斷方式中斷方式的初始化編程同查詢方式,不同的是要開中斷,即置位EA和ES,編寫中斷服務(wù)程序。中斷方式串行通信的程序流程見下圖:T1初始化、啟動(dòng)T1工作設(shè)定串行通信方式置發(fā)送數(shù)據(jù)塊首址數(shù)據(jù)塊長(zhǎng)度計(jì)數(shù)器發(fā)送數(shù)據(jù)全部數(shù)據(jù)發(fā)送完?YN中斷方式發(fā)送流程圖等待中斷1

EA,1ES發(fā)送數(shù)據(jù)中斷返回0

EA,0ES中斷服務(wù)程序主程序修改地址指針和塊長(zhǎng)度計(jì)數(shù)器清TIYNT1初始化、啟動(dòng)T1工作設(shè)定串行通信方式置接收數(shù)據(jù)塊首址數(shù)據(jù)塊長(zhǎng)度計(jì)數(shù)器全部數(shù)據(jù)接收完?YN中斷方式接收流程圖等待中斷1

EA,1ES中斷返回0

EA,0ES中斷服務(wù)程序主程序修改地址指針和塊長(zhǎng)度計(jì)數(shù)器清RI接收數(shù)據(jù)YN例8-1.在內(nèi)部數(shù)據(jù)存貯器20H~3FH單元中共有32個(gè)數(shù)據(jù),要求采用方式1串行發(fā)送出去,傳送速率為1200波特,設(shè)fosc=12MHZ。方法:T1工作于方式2作波特率發(fā)生器,取SMOD=0,T1的時(shí)間常數(shù)計(jì)算如下:

波特率=

1200=(1/32)×12×10/12(256-x)x=230=E6H

2SMODfosc12(256-x)×326發(fā)送程序:

ORG0000HMOVTMOD,#20H;T1方式2MOVTH1,#0E6HMOVTL1,#0E6H;T1時(shí)間常數(shù)SETBTR1;啟動(dòng)T1MOVSCON,#40H;串行口工作于方式1MOVR0,#20H;R0指發(fā)送緩沖區(qū)首MOVR7,#32;R7作發(fā)送數(shù)據(jù)計(jì)數(shù)LO:MOVSBUF,@R0;發(fā)送數(shù)據(jù)JNBTI,$;一幀未發(fā)完繼續(xù)查詢CLRTI;一幀發(fā)完清TI

INCR0DJNZR7,LO;數(shù)據(jù)塊未發(fā)完繼續(xù)SJMP$接收程序:

ORG0000HMOVTMOD,#20HMOVTH1,#0E6HMOVTL1,#0E6HSETBTR1;初始化T1,并啟動(dòng)T1MOVSCON,#50H;設(shè)定串行方式1,并允許接收MOVR0,#20HMOVR7,#32LOOP:JNBRI,$;一幀收完?CLRRI;收完清RIMOV@R0,SBUF;將數(shù)據(jù)讀入INCR0DJNZR7,LOOPSJMP$RXD89C51TXDP1.0例8-2接線如圖,編一個(gè)自發(fā)自收程序,檢查單片機(jī)的串行口是否完好,f=12MHz,波特率=600,取SMOD=0。解:依據(jù)公式 波特率=

求得匯編語(yǔ)言編程 MOVTMOD,#20H MOVTH1,#0CCH MOVTL1,#0CCH;設(shè)定波特率 SETBTR1 MOVSCON,#50HABC:CLRTIMOVP1,#0FEH;LED滅ACALLDAY;延時(shí) MOVA,#OFFHMOVSBUF,A;發(fā)送數(shù)據(jù)FFH JNBRI,$;RI=0等待 CLRRI MOVA,SBUF;接收數(shù)據(jù),A=FFH MOVP1,A;燈亮 JNBTI,$ ;TI=0等待 ACALLDAY;延時(shí) SJMPABCDAY:MOVR0,#0DAL:MOVR1,#0 DJNZR1,$DJNZR0,DAL RET如果發(fā)送接收正確,可觀察到P1.0接的發(fā)光二極管閃亮。例8-4例如串行通信方式0,擴(kuò)展I/O接口,接八個(gè)數(shù)碼管,使內(nèi)部數(shù)據(jù)存儲(chǔ)器58H~-5FH單元的內(nèi)容為0XH。

分析由于TXD,RXD運(yùn)行在工作方式0時(shí),可方便的連接串入并出移位寄存器74LS164,TXD發(fā)送移位脈沖,RXD發(fā)送數(shù)據(jù),P3.3用于顯示器的輸入控制,通過(guò)74LS164接八個(gè)數(shù)碼管,電路如下圖所示。ΩΩ

××例8-4程序如下: ORG0050H SETBP3.3;允許移位寄存器工作 MOVSCON,#0;選串行通信方式0 MOVR7,#08H;顯示八個(gè)字符 MOVR0,#5FH;先送最后一個(gè)顯示字符 MOVDPTR,#TBA;DPTR指向字形表首址DLO:MOVA,@R0;取待顯示數(shù)碼MOVCA,@A+DPTR;查字形表MOVSBUF,A;送出顯示 JNBTI,$;一幀輸出完? CLRTI ;已完,清中斷標(biāo)志 DECR0;修改顯示數(shù)據(jù)地址 DJZNR7,DLO CLRP3.3 ;8位送完,關(guān)發(fā)送脈沖 SJMP$TBA:DB0C0H,0F9H,0A4H,B0H,99H,92H DB82H,0F8H,80H,90H,83H,83H,0C6H DB0A1H,86H,84H,0FFH,0BFH點(diǎn)對(duì)點(diǎn)的通信

硬件連接

6.3單片機(jī)串行口應(yīng)用舉例

應(yīng)用程序

設(shè)1號(hào)機(jī)是發(fā)送方,2號(hào)機(jī)是接收方。當(dāng)1號(hào)機(jī)發(fā)送時(shí),先發(fā)送一個(gè)“E1”聯(lián)絡(luò)信號(hào),2號(hào)機(jī)收到后回答一個(gè)“E2”應(yīng)答信號(hào),表示同意接收。當(dāng)1號(hào)機(jī)收到應(yīng)答信號(hào)“E2”后,開始發(fā)送數(shù)據(jù),每發(fā)送一個(gè)數(shù)據(jù)字節(jié)都要計(jì)算“校驗(yàn)和”,假定數(shù)據(jù)塊長(zhǎng)度為16個(gè)字節(jié),起始地址為40H,一個(gè)數(shù)據(jù)塊發(fā)送完畢后立即發(fā)送“校驗(yàn)和”。2號(hào)機(jī)接收數(shù)據(jù)并轉(zhuǎn)存到數(shù)據(jù)緩沖區(qū),起始地址也為40H,每接收到一個(gè)數(shù)據(jù)字節(jié)便計(jì)算一次“校驗(yàn)和”,當(dāng)收到一個(gè)數(shù)據(jù)塊后,再接收1號(hào)機(jī)發(fā)來(lái)的“校驗(yàn)和”,并將它與2號(hào)機(jī)求出的校驗(yàn)和進(jìn)行比較。若兩者相等,說(shuō)明接收正確,2號(hào)機(jī)回答00H;若兩者不相等,說(shuō)明接收不正確,2號(hào)機(jī)回答0FFH,請(qǐng)求重發(fā)。1號(hào)機(jī)接到00H后結(jié)束發(fā)送。若收到的答復(fù)非零,則重新發(fā)送數(shù)據(jù)一次。雙方約定采用串行口方式1進(jìn)行通信,一幀信息為10位,其中有1個(gè)起始位、8個(gè)數(shù)據(jù)位和一個(gè)停止位;波特率為2400波特,T1工作在定時(shí)器方式2,振蕩頻率選用11.0592MHZ,查表可得TH1=TL1=0F4H,PCON寄存器的SMOD位為0。

發(fā)送程序清單如下:ASTART:CLREAMOVTMOD,#20H;定時(shí)器1置為方式2MOVTH1,#0F4H;裝載定時(shí)器初值,波特率2400MOVTL1,#0F4HMOVPCON,#00HSETBTR1;啟動(dòng)定時(shí)器MOVSCON,#50H;設(shè)定串口方式1,且準(zhǔn)備接收應(yīng)答信號(hào)ALOOP1:MOVSBUF,#0E1H;發(fā)聯(lián)絡(luò)信號(hào)JNBTI,$;等待一幀發(fā)送完畢CLRTI;允許再發(fā)送JNBRI,$;等待2號(hào)機(jī)的應(yīng)答信號(hào)CLRRI;允許再接收MOVA,SBUF;2號(hào)機(jī)應(yīng)答后,讀至AXRLA,#0E2H;判斷2號(hào)機(jī)是否準(zhǔn)備完畢JNZALOOP1;2號(hào)機(jī)未準(zhǔn)備好,繼續(xù)聯(lián)絡(luò)ALOOP2:MOVR0,#40H;2號(hào)機(jī)準(zhǔn)備好,設(shè)定數(shù)據(jù)塊地址指針初值MOVR7,#10H;設(shè)定數(shù)據(jù)塊長(zhǎng)度初值MOVR6,#00H;清校驗(yàn)和單元

ALOOP3:MOVSBUF,@R0;發(fā)送一個(gè)數(shù)據(jù)字節(jié)MOVA,R6AD

溫馨提示

  • 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ù)覽,若沒有圖紙預(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)論