東南大學(xué)單片機(jī)教程1概述第7章串行口資料_第1頁
東南大學(xué)單片機(jī)教程1概述第7章串行口資料_第2頁
東南大學(xué)單片機(jī)教程1概述第7章串行口資料_第3頁
東南大學(xué)單片機(jī)教程1概述第7章串行口資料_第4頁
東南大學(xué)單片機(jī)教程1概述第7章串行口資料_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一節(jié)

串行通訊口概述其次節(jié)

串行口結(jié)構(gòu)與工作原理第三節(jié)

波特率設(shè)計(jì)第四節(jié)

串行通訊工作方式第五節(jié)

串行口應(yīng)用舉例第六節(jié)多機(jī)串行通訊技術(shù)第7章串行通訊口作業(yè)講解1①RET指令必需作子程序的最終一條指令;RETI必需作中斷服務(wù)程序的最終一條指令。②RETI指令除復(fù)原斷點(diǎn)地址外,還復(fù)原CPU響應(yīng)中斷時硬件自動疼惜的現(xiàn)場信息。執(zhí)行RETI指令后,將清除中斷響應(yīng)時所置位的優(yōu)先級狀態(tài)觸發(fā)器,使得已申請的同級或低級中斷申請可以響應(yīng);而RET指令只能復(fù)原返回地址。作業(yè)講解2用表格說明方式0的最短定時常數(shù),8191,送入TH0,TL0的常數(shù):FF1F作業(yè)講解3晶振為12MHz,在方式1下,最大的定時時間Tmax為:

Tmax=65536μs=65.536ms另設(shè)兩個軟件計(jì)數(shù)器方案:T1定時50ms;軟件計(jì)數(shù)器1:秒計(jì)數(shù),用片內(nèi)50H作為循環(huán)次數(shù)20。軟件計(jì)數(shù)器2:分計(jì)數(shù),用片內(nèi)51H單元作為循環(huán)次數(shù)60。設(shè)置TMOD計(jì)算T1的初始值X

X=65536-50000μs/1μs

=15536D

=3CB0H作業(yè)講解3 MOV50H,#14H ;20*50ms=1s

MOV51H,#3CH ;60*1s=1min

MOVTMOD,#10H ;設(shè)定時器1為方式1

MOVTH1,#3CH ;賦初值

MOVTL1,#0B0H

SETBTR1 ;啟動T1L2: JBCTF1,L1 ;50ms到?

SJMPL2

L1: MOVTH1,#3CH MOVTL1,#0B0H DJNZ50H,L2 ;未到1s接著循環(huán)

MOV50H,#14H DJNZ51H,L2 ;未到1min接著循環(huán)

MOV51H,#3CH

CPLP1.2 ;1min到P1.2端取反 SJMPL2 ;反復(fù)循環(huán)作業(yè)講解31、無說明;2、中斷響應(yīng)子程序中利用A作為存放中間值,須要疼惜。一般用干脆地址比較好。劃分一個RAM區(qū);3、定時初值須要重置,循環(huán)初值也須要重置。4、須要注明出口和入口第一節(jié)

串行通訊口概述串行通訊:所傳送數(shù)據(jù)的各位按依次一位一位地發(fā)送或接收。經(jīng)濟(jì),但速度慢。并行通訊:所傳送數(shù)據(jù)的各位同時發(fā)送或接收。速度快,但價(jià)格貴。

串行通訊中的幾個概念:一、傳送編碼因?yàn)閱胃ㄓ嵕€僅能表示0和1兩種狀態(tài),而需傳送的信息中有字母、數(shù)字和字符等,這就要用二進(jìn)制數(shù)對傳送字符編碼。常用的主要有美國標(biāo)準(zhǔn)信息交換碼ASCII和擴(kuò)展的BCD碼EBCDIC,后一種是8位編碼,較常用在同步通信中。

二、同步和異步方式1、

異步通訊ASYNC(AsynchronousDataCommunication):①

數(shù)據(jù)以一個字符為單位進(jìn)行傳送,一幀一幀地傳送;②

在幀格式中先用一個起始位“0”表示字符的起先;③

5-8位數(shù)據(jù),規(guī)定低位在前,高位在后;④

奇偶校驗(yàn)位(可省略)⑤

停止位“1”表示字符的結(jié)束D0D1D2D3D4D5D6D7PD0D01010N-1第N個字符(一串行幀)

N+12、同步通訊(速度快,但硬件結(jié)構(gòu)要求高)在數(shù)據(jù)或字符起先處用一同步字符來指示(常約定1—2個),由時鐘來實(shí)現(xiàn)發(fā)送端和接收端同步。一旦檢測到與規(guī)定的同步字符符合,下面就連續(xù)依據(jù)依次傳送數(shù)據(jù)。SYN字符1SYN字符2連續(xù)傳送的數(shù)據(jù)

三、波特率

波特率是異步通訊中對數(shù)據(jù)傳送速率的規(guī)定,其意義是每秒鐘傳送多少位二進(jìn)制數(shù)。

例如:數(shù)據(jù)傳送的速率每秒為120個字符,每個字符由1個起始位、

8個數(shù)據(jù)位和1個停止位組成,則其傳送波特率為:

10*120=1200b/s=1200波特每一位的傳送時間即為波特率的倒數(shù):

Td=1/1200=0.833ms

異步通訊的傳送速度一般在50到9600波特之間。四、通訊方向1、

單工傳送:只能發(fā)送或接收,這種單向傳送的方法稱單工傳送;2、

半雙工傳送:數(shù)據(jù)可在兩機(jī)之間雙向傳送,但接收和發(fā)送不能同時進(jìn)行,只能分時接收和發(fā)送;3、全雙工傳送:兩機(jī)的發(fā)送和接收可以同時進(jìn)行。圖串行通信數(shù)據(jù)傳送的三種方式(a)單工方式;(b)半雙工方式;(c)全雙工方式五、信號的調(diào)制與解調(diào)

異步通訊有距離的限制,傳輸距離較遠(yuǎn)時,信號衰減、頻帶不夠?qū)挘虼?,用調(diào)制器把數(shù)字信號轉(zhuǎn)換成模擬信號,并加以放大再傳送,這個過程叫調(diào)制。在接收時,再用解調(diào)器檢測此模擬信號,并把它轉(zhuǎn)換成數(shù)字信號再送入計(jì)算機(jī)接口,這個過程即解調(diào)。其次節(jié)

串行口結(jié)構(gòu)與工作原理一.功能與結(jié)構(gòu)圖串行口方式0結(jié)構(gòu)示意圖發(fā)送SBUF(99H)接收SBUF(99H)發(fā)送控制器接收控制器串行口中斷定時器T1輸入移位寄存器串行控制寄存器98H+TIRI門內(nèi)部總線P3.1TXDP3.0RXD1、

輸入數(shù)據(jù)先進(jìn)入輸入移位寄存器,再送入接收SBUF。在此接受了雙緩沖結(jié)構(gòu),這是為避開在接收到其次幀數(shù)據(jù)之前,CPU未剛好響應(yīng)接收器的前一幀中斷懇求,沒把前一幀數(shù)據(jù)讀走,而造成兩幀數(shù)據(jù)重疊的錯誤;MOVSBUF,A2、

對于發(fā)送器,因?yàn)榘l(fā)送時CPU是主動的,不會產(chǎn)生寫重疊問題,一般不須要雙緩沖器結(jié)構(gòu),以保持最大傳送速率。MOVA,SBUF3、8051串行口通過編程可設(shè)置4種工作方式,三種幀格式:

方式0:以8位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接收最低位。

D0D1D2D3D4D5D6D7

方式1:以10位為一幀傳輸,設(shè)有一個起始位“0”,8個數(shù)據(jù)位和一個停止位“1”。

0D0D1D2D3D4D5D6D71

起始

停止方式2和3:以11位為一幀傳輸,設(shè)有一個起始位“0”,8個數(shù)據(jù)位,

1個可編程位(第九數(shù)據(jù)位)D8和一個停止位“1”。

0D0D1D2D3D4D5D6D7D81

起始

停止

可編程位D8由軟件置1或清0,該位可作校驗(yàn)位,也可作它用。一般用在多機(jī)通訊中。二、串行口限制寄存器SCONCPU專用寄存器SCON為串行口限制字,方式選擇、接收和發(fā)送限制以及串行口的狀態(tài)標(biāo)記。復(fù)位時,SCON全部位均清0。

SCON(98H):SM0SM1SM2RENTB8RB8TIRI

位地址:9FH9EH9DH9CH9BH9AH99H98H1、串行方式選擇SM0、SM1:由軟件置位或清零,用于選擇串行口四種工作方式。

SM0SM1工作方式功能波特率

00方式0移位寄存器方式fosc/12

01方式18位異步通信方式

可變

10方式29位異步通信方式

fosc/64或fosc/32

11方式39位異步通信方式

可變2、TI:發(fā)送中斷標(biāo)記位。在方式0時,當(dāng)發(fā)送數(shù)據(jù)第8位結(jié)束后,或在其它方式發(fā)送停止位后,由內(nèi)部硬件使TI置位,向CPU懇求中斷。CPU在響應(yīng)中斷后,必需用軟件清零。此外,TI也可供查詢運(yùn)用。3、RI:接收中斷標(biāo)記位。在方式0時,當(dāng)接收數(shù)據(jù)的第8位結(jié)束后,或在其它方式接收到停止位的中間由內(nèi)部硬件使RI置位,向CPU懇求中斷。同樣,在CPU響應(yīng)中斷后,也必需用軟件清零。RI也可供查詢運(yùn)用。4、REN:允許串行接收限制位。若REN=0,則禁止接收;REN=1,則允許接收,該位由軟件置位或復(fù)位。5、TB8:發(fā)送數(shù)據(jù)D8位。在方式2和方式3時,TB8為所要發(fā)送的第9位數(shù)據(jù)。在多機(jī)通信中,以TB8位的狀態(tài)表示主機(jī)發(fā)送的是地址還是數(shù)據(jù):TB8=0為數(shù)據(jù),TB8=1為地址;也可用作數(shù)據(jù)的奇偶校驗(yàn)位。該位由軟件置位或復(fù)位。6、RB8:接收數(shù)據(jù)D8位。在方式2和方式3時,接收到的第9位數(shù)據(jù),可作為奇偶校驗(yàn)位或地址幀或數(shù)據(jù)幀的標(biāo)記。方式1時,若SM2=0,則RB8是接收到的停止位。在方式0時,不運(yùn)用RB8位。7、SM2:方式2、方式3時用于多機(jī)通信的限制位。?方式2或方式3處于接收時:

若SM2=1且接收到的第9位數(shù)據(jù)(RB8)為0時,不啟動接收中斷標(biāo)記RI(即RI=0),并且將接收到的前8位數(shù)據(jù)丟棄;

若SM2=1且收到的第9位RB8為1時,才將接收到的前8位數(shù)據(jù)送入SBUF,并置位RI,產(chǎn)生中斷懇求。若SM2=0,則不論第9位數(shù)據(jù)為0或1,都將前8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷懇求。?方式1中,當(dāng)處于接收時,若SM2=1,則只有接收到有效的停止信號為止,RI才置"1"。?方式0中SM2應(yīng)置"0"。三、專用寄存器PCON

CPU專用寄存器PCON為電源限制寄存器。

PCON(87H):SMODXXXGF1GF0PDIDLPCON的最高位SMOD是串行口波特率系數(shù)限制位。SMOD=1時,波特率增大一倍。其余各位與串行口無關(guān)。SMOD=0時,方式2波特率為fosc/64;

SMOD=1時,方式2波特率為fosc/32;

SMOD還影響方式1、方式3波特率的計(jì)算公式。第三節(jié)

波特率設(shè)計(jì)

串行口編程可約定4種工作方式。其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時器T1的溢出率限制。一、方式0和方式21、

方式0,每個機(jī)器周期發(fā)送或接收一位數(shù)據(jù),因此波特率固定為時鐘頻率的1/12,且不受SMOD的影響。2、

方式2的波特率取決于PCON中的SMOD之值。當(dāng)SMOD=0時,波特率為時鐘頻率的1/64;若SMOD=1,則波特率為時鐘頻率的1/32。

方式2波特率=(2SMOD/64)*Fosc二、方式1和方式3串行口方式1和方式3的波特率由定時器T1的溢出率與SMOD值同時確定。波特率=(2SMOD/32)*(T1的溢出率)其中:T1的溢出率取決于計(jì)數(shù)速率和定時器的預(yù)置值。1、

計(jì)數(shù)速率:當(dāng)TMOD中C/T=0,定時方式,計(jì)數(shù)速率=Fosc/12;=1,計(jì)數(shù)方式,計(jì)數(shù)速率取決于外部輸入時鐘頻率。3、溢出率為溢出周期之倒數(shù):

波特率=(2SMOD/32)(Fosc/(12*(256-X))4、定時器T1方式2的初始值為:

X=256-(fosc*(SMOD+1)/(384*波特率))

2、溢出周期:當(dāng)定時器T1作波特率發(fā)生器運(yùn)用時,通常是選用自動重裝載模式,即模式2。在模式2中,TL1作計(jì)數(shù)用,而自動重裝載的值放在TH1內(nèi)。設(shè)計(jì)數(shù)初值為X,那么每過“256-X”個機(jī)器周期,定時器T1就會產(chǎn)生一次溢出。為了避開因溢出而產(chǎn)生不必要的中斷,此時應(yīng)禁止T1中斷。溢出周期為:(12/Fosc)*(256-X)

例:已知8051單片機(jī)時鐘振蕩器為11.0592MHZ,選用定時器T1工作方式2作波特率發(fā)生器,波特率為2400波特,求初值。解:設(shè)SMOD=0,

X=256—11.0592*106*1/(384*2400)=244=F4H

所以TH1=TL1=F4H

假如串行通訊選用很低的波特率,可將定時器T1置于方式0或方式1,即13位或16位定時方式。但在這種狀況下,T1溢出時,需重裝初值,從而對波特率產(chǎn)生確定的誤差。

表:常用波特率與定時/計(jì)數(shù)器1各參數(shù)關(guān)系見書中P123第四節(jié)

串行通訊工作方式一、方式01、

在方式0下,串行口作同步移位寄存器用,其波特率是固定的,為fosc/12。2、

串行數(shù)據(jù)由RXD(P3.0)端輸入或輸出。3、

同步移位脈沖由TXD(P3.1)端送出。4、

這種方式常用于擴(kuò)展I/O口

RXD8051TXD1274LS164345610111213數(shù)據(jù)輸出移位脈沖D7D0串入并出寄存器方式0用于I/O擴(kuò)展輸出RXDTXD

80519274LS165

654314131211數(shù)據(jù)輸入移位脈沖D0D7并入串出寄存器方式0用于I/O擴(kuò)展輸入發(fā)送:當(dāng)一個數(shù)據(jù)寫入發(fā)送緩沖寄存器SBUF,串行口即把8位數(shù)據(jù)以fosc/12的波特率從RXD端送出(低位在前),發(fā)送完置中斷標(biāo)記TI為1。接收:REN是串行口接收器允許接收限制位。REN=0,禁止接收;REN=1,允許接收。當(dāng)軟件置REN為1時,即起先從RXD端以fosc/12波特率輸入數(shù)據(jù)(低位在前),當(dāng)接收到8位數(shù)據(jù)時,置中斷標(biāo)記RI為1。

這種擴(kuò)展方法輸入輸出的速度是不高的,如fosc=12MHZ,則每移動一位需1us.留意:1、串行限制寄存器中TB8或RB8位在方式0中未用。2、每當(dāng)發(fā)送或接收完8位數(shù)據(jù)時,由硬件將發(fā)送中斷TI或接收中斷RI標(biāo)記置位。3、CPU響應(yīng)TI或RI中斷懇求時,不會清除TI或RI標(biāo)記,必需由用戶用軟件清0。4、方式0時,SM2位必需為0。二、方式11、

串行口為8位通用異步接口,一幀信息為10位。2、

1位起始位0,8位數(shù)據(jù)位和1位停止位1;3、

傳送波特率可調(diào)

發(fā)送:數(shù)據(jù)從TXD端輸出,當(dāng)數(shù)據(jù)寫入發(fā)送緩沖器SBUF時,就啟動發(fā)送器發(fā)送。當(dāng)發(fā)送完一幀數(shù)據(jù)后,就把TI標(biāo)記置1,并申請中斷。接收:由REN置1允許接收,串行口采樣引腳RXD。當(dāng)采到1至0的跳變時,確認(rèn)是起始位“0”,就起先接收一幀數(shù)據(jù)。當(dāng)RI=0且停止位為1或者SM2=0時,停止位進(jìn)入RB8位,同時置位中斷標(biāo)記RI;否則,信息將丟失。所以通常方式1下,設(shè)SM2=0。三、方式21、

串行口為9位通用異步接口,一幀信息為11位。2、

1位起始位0,8位數(shù)據(jù)位,1位可編程位和1位停止位1;3、

傳送波特率與SMOD有關(guān)。發(fā)送:發(fā)送前,先依據(jù)通訊協(xié)議由軟件設(shè)置TB8(如作奇偶校驗(yàn)位或地址/數(shù)據(jù)標(biāo)識位),然后將要發(fā)送的數(shù)據(jù)寫入SBUF,即啟動發(fā)送器。發(fā)送過程,是執(zhí)行任何一條以SBUF作為目的寄存器的指令而啟動的?!皩慡BUF”信號,把8位數(shù)據(jù)裝入SBUF,同時還把TB8裝到發(fā)送移位寄存器的第9位位置上,并通知發(fā)送限制器,要求進(jìn)行一次發(fā)送。然后即從TXD端輸出一幀信息。接收:先置位REN為1,使串行口處于允許接收狀態(tài),同時還要將RI清0。在滿足這個條件的前提下,再依據(jù)SM2的狀態(tài)(因?yàn)镾M2是方式2和方式3的多機(jī)通訊限制位)和所接收到的RB8的狀態(tài)才能確定此串行口在信息到來后是否會使RI置1,并申請中斷,接收數(shù)據(jù)。當(dāng)SM2=0時,不管是RB8為0還是為1,RI都置1,此串行口將接收發(fā)來的信息。當(dāng)SM2=1時,且RB8為1時,表示在多機(jī)通訊狀況下,接收的信息為地址幀,此時RI置1。串行口將接收發(fā)來的信息。當(dāng)SM2=1時,且RB8為0時,表示接收的信息為數(shù)據(jù)幀,但不是發(fā)給本從機(jī)的,此時RI不置1,因此所接收的數(shù)據(jù)幀將丟失。四、方式3

方式3為波特率可變的11位異步通訊方式。除波特率外,方式3和方式2完全相同。第五節(jié)

串行口應(yīng)用舉例一、方式0舉例,用串行口擴(kuò)展I/O口

例1用并行輸入8位移位寄存器74LS165作為擴(kuò)展輸入口。下圖是利用8051的3根口線擴(kuò)展為16根輸入口線的好用電路,其由2塊74LS165串接而成(前級的數(shù)據(jù)輸出位QH與后級的信號輸入端SIN相連)。

現(xiàn)編程從16位擴(kuò)展口讀入20個字節(jié)數(shù)據(jù)(讀十次),并把它們轉(zhuǎn)存到內(nèi)部RAM的50H~63H中。

P3.08051

P3.1

P1.0QHSIN74LS165S/LCKQH74LS165S/LCK+5VD0D7D0D76129111516810

MOVR7,#14H ;設(shè)置讀入字節(jié)數(shù)

MOVR0,#50H ;設(shè)片內(nèi)RAM指針 SETBF0 ;設(shè)置讀入字節(jié)奇偶數(shù)標(biāo)記RCV0:CLRP1.0 ;并行口輸入數(shù)據(jù),允許74165串行移位

SETBP1.0

RCV1:MOVSCON,#10H;設(shè)串行口方式0并啟動接收

JNBRI,$ ;等待接收一幀數(shù)據(jù)CLRRI ;清接收中斷標(biāo)記

MOVA,SBUF ;取緩沖器數(shù)據(jù)

MOV@R0,A

INCR0

CPLF0

JBF0,RCV2;判是否接收完偶數(shù)幀,接收完則重新并行置入

DECR7

SJMPRCV1 ;否則再接收一幀RCV2:DJNZR7,RCV0 ;判是否已讀入預(yù)定的字節(jié)數(shù)程序中F0作為讀入字節(jié)的奇偶性標(biāo)記。由于每次由擴(kuò)展口并行輸入到移位寄存器的是兩個字節(jié)數(shù)據(jù),置入一次,串行口應(yīng)接收二幀數(shù)據(jù)。故已接收的數(shù)據(jù)字節(jié)數(shù)為奇數(shù)時F0=0,不再并行輸入數(shù)據(jù)就干脆啟動接收過程。否則F0=1,在啟動接收過程前,應(yīng)當(dāng)先在外部移位寄存器中輸入新的數(shù)據(jù)。例2用8位并行輸出串行移位寄存器74LS164作為擴(kuò)展輸出口。由于74LS164無并行輸出限制端,在串行輸入過程中,其輸出端的狀態(tài)會不斷變更,故在某些場合,在74LS164與輸出裝置之間,還應(yīng)加上輸出可控的緩沖級(如74LS244),以便串行輸入過程結(jié)束后再輸出。

圖中的輸出裝置是2位共陽級七段顯示發(fā)光二極管,接受靜態(tài)顯示方式。

由于74LS164在低電平輸出時,允許通過電流可達(dá)8mA,故不需再加驅(qū)動電路。與動態(tài)掃描顯示比較,靜態(tài)顯示方式的優(yōu)點(diǎn)是CPU不必常見的為顯示服務(wù),軟件設(shè)計(jì)比較簡潔,很簡潔做到顯示不閃爍。

編程把片內(nèi)20H、21H中的數(shù)字取出,由串行口送給顯示器,顯示相應(yīng)的數(shù)字。+5VP3.08051P3.1

P1.0

QAQHA,B74LS164CLRCK

QAQHA,B74LS164CLRCK+5V

共陽極LED

。ga

共陽極LED

。ga3131,298714 MOVR7,#02H;設(shè)置顯示位數(shù) MOVR0,#20H;設(shè)顯示數(shù)據(jù)區(qū)指針

MOVSCON,#00H;設(shè)串行口方式0DISP1: MOVA,@R0

MOVDPTR,#TABH

MOVCA,@A+DPTR;取顯示碼

MOVSBUF,A;啟動串行口發(fā)送過程

JNBTI,$;等待接收一幀數(shù)據(jù)

CLRTI;清串行口發(fā)送中斷標(biāo)記

INCR0;修改指針取下一個數(shù)

DJNZR7,DISP1

RET

TAB: DBC0H,F9H,A4H,B0H,99H;0,1,2,3,4的顯示代碼

DB92H,82H,F8H,80H,98H;5,6,7,8,9的顯示代碼方式1舉例例:雙機(jī)通信,甲機(jī)發(fā)送乙機(jī)接收,波特率2400,晶振6MHz,T1作為波特率發(fā)生器,串行口工作在方式1。甲機(jī)送出數(shù)據(jù)為50H起先的16個字節(jié)數(shù)據(jù)。乙機(jī)接收數(shù)據(jù)存放在3000H~300FH單元中(外部RAM)

解:

雙機(jī)通信串行口工作在方式1,定時器T1工作在方式2。

定時常數(shù):X=256-(fosc*(SMOD+1))/(384*波特率)

若SMOD=0,則X=249.49,誤差較大。

取SMOD=1,則X=242.98=243=F3H,誤差較小。

發(fā)送程序:

MOVTMOD,#20H;定時器(波特率)初始化

MOVTL1,#0F3H

MOVTH1,#0F3H

SETBTR1

MOVSCON,#40H;串行口初始化

MOVPCON,#80H

MOVR0,#50H

MOVR7,#10H

TRS: MOVA,@R0

MOVSBUF,AWAIT: JBCTI,CONT

AJMPWAIT

CONT: INCR0

DJNZR7,TRS

RET

接收程序: MOVTMOD,#20H;定時器(波特率)初始化

MOVTL1,#0F3H

MOVTH1,#0F3H

SETBTR1

MOVSCON,#50H;串行口初始化

MOVPCON,#80H

MOVDPTR,#3000H

MOVR7,#10H

WAIT: JBCRI,READ AJMPWAIT

READ: MOVA,SBUF

MOVX@DPTR,A

INCDPTR

DJNZR7,WAIT RET

例:方式3舉例編程把甲機(jī)片內(nèi)RAM50H—5FH單元中的數(shù)據(jù)塊從串行口輸出。乙機(jī)從甲機(jī)接收16字節(jié)數(shù)據(jù)塊,并存入片外3000H—300FH單元。接收過程要求推斷奇偶校驗(yàn)標(biāo)記RB8。若出錯置F0標(biāo)記為1,正確置F0標(biāo)記為0。然后返回。要求:定義工作方式3發(fā)送,TB8作奇偶校驗(yàn)位。接受定時器1方式2作波特率發(fā)生器,波特率為1200,F(xiàn)osc=11.0592MHZ分析:預(yù)置值TH1=0E8H。發(fā)送: MOV TMOD,#20H ;設(shè)置定時器1為方式2 MOV TL1,#0E8H ;設(shè)置預(yù)置值;

MOV TH1,#0E8H SETB TR1 ;啟動定時器1 MOV SCON,#0C0H ;設(shè)置串行口為方式3 MOV PCON,#00H ;SMOD=0 MOV R0,#50H ;設(shè)數(shù)據(jù)塊指針

MOV R7,#10H ;設(shè)數(shù)據(jù)長度TRS: MOV A,@R0 ;取數(shù)據(jù)到A

MOV C,P MOV TB8,C ;奇偶位P送TB8

MOV SBUF,A ;數(shù)據(jù)送SBUF,啟動發(fā)送WAIT: JBC TI,CONT ;判一幀是否發(fā)送完

AJMP MAIT ;未完等待CONT: INC R0 ;更新數(shù)據(jù)單元

DJNZ R7,TRS ;循環(huán)發(fā)送至結(jié)束

RET ;返回接收: MOV TMOD,#20H ;設(shè)置定時器1為方式2 MOV TL1,#0E8H ;設(shè)置預(yù)置值 MOV TH1,#0E8H SETB TR1 ;啟動定時器1 MOV SCON,#0C0H ;設(shè)置串行口為方式3 MOV PCON,#00H ;SMOD=0 MOV DPTR,#3000H;設(shè)置數(shù)據(jù)塊指針 MOV R7,#10H ;設(shè)數(shù)據(jù)塊長度 SETB REN ;允許接收WAIT: JBC RI,READ ;判一幀是否接收完 AJMP WAIT ;未完接著等待READ: MOV A,SBUF ;讀入一幀數(shù)據(jù) JNB PSW.0,PZ ;奇偶位P為0則轉(zhuǎn) JNB RB8,ERR ;P=1,RB8=0則出錯 SJMP YES ;二者全為1則正確PZ: JB RB8,ERR ;P=0,RB8=1則出錯YES: MOVX @DPTR,A ;正確,存放數(shù)據(jù) INC DPTR ;修改地址指針 DJNZ R7,WAIT ;推斷數(shù)據(jù)塊接收完否 CLR PSW.5 ;接收正確,且接收完清F0標(biāo)記 RET ;返回ERR: SETB PSW.5 ;出錯置F0標(biāo)記為1 RET ;返回第六節(jié)多機(jī)串行通訊技術(shù)一、多機(jī)通訊的基本原理圖主從式多機(jī)通訊系統(tǒng)

MCS-51系列單片機(jī)的串行通訊方式2和方式3具有多機(jī)通訊功能,可構(gòu)成各種分布式通

溫馨提示

  • 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

提交評論