版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(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)中斷時(shí)硬件自動(dòng)疼惜的現(xiàn)場(chǎng)信息。執(zhí)行RETI指令后,將清除中斷響應(yīng)時(shí)所置位的優(yōu)先級(jí)狀態(tài)觸發(fā)器,使得已申請(qǐng)的同級(jí)或低級(jí)中斷申請(qǐng)可以響應(yīng);而RET指令只能復(fù)原返回地址。作業(yè)講解2用表格說明方式0的最短定時(shí)常數(shù),8191,送入TH0,TL0的常數(shù):FF1F作業(yè)講解3晶振為12MHz,在方式1下,最大的定時(shí)時(shí)間Tmax為:
Tmax=65536μs=65.536ms另設(shè)兩個(gè)軟件計(jì)數(shù)器方案:T1定時(shí)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è)定時(shí)器1為方式1
MOVTH1,#3CH ;賦初值
MOVTL1,#0B0H
SETBTR1 ;啟動(dòng)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作為存放中間值,須要疼惜。一般用干脆地址比較好。劃分一個(gè)RAM區(qū);3、定時(shí)初值須要重置,循環(huán)初值也須要重置。4、須要注明出口和入口第一節(jié)
串行通訊口概述串行通訊:所傳送數(shù)據(jù)的各位按依次一位一位地發(fā)送或接收。經(jīng)濟(jì),但速度慢。并行通訊:所傳送數(shù)據(jù)的各位同時(shí)發(fā)送或接收。速度快,但價(jià)格貴。
串行通訊中的幾個(gè)概念:一、傳送編碼因?yàn)閱胃ㄓ嵕€僅能表示0和1兩種狀態(tài),而需傳送的信息中有字母、數(shù)字和字符等,這就要用二進(jìn)制數(shù)對(duì)傳送字符編碼。常用的主要有美國標(biāo)準(zhǔn)信息交換碼ASCII和擴(kuò)展的BCD碼EBCDIC,后一種是8位編碼,較常用在同步通信中。
二、同步和異步方式1、
異步通訊ASYNC(AsynchronousDataCommunication):①
數(shù)據(jù)以一個(gè)字符為單位進(jìn)行傳送,一幀一幀地傳送;②
在幀格式中先用一個(gè)起始位“0”表示字符的起先;③
5-8位數(shù)據(jù),規(guī)定低位在前,高位在后;④
奇偶校驗(yàn)位(可省略)⑤
停止位“1”表示字符的結(jié)束D0D1D2D3D4D5D6D7PD0D01010N-1第N個(gè)字符(一串行幀)
N+12、同步通訊(速度快,但硬件結(jié)構(gòu)要求高)在數(shù)據(jù)或字符起先處用一同步字符來指示(常約定1—2個(gè)),由時(shí)鐘來實(shí)現(xiàn)發(fā)送端和接收端同步。一旦檢測(cè)到與規(guī)定的同步字符符合,下面就連續(xù)依據(jù)依次傳送數(shù)據(jù)。SYN字符1SYN字符2連續(xù)傳送的數(shù)據(jù)
三、波特率
波特率是異步通訊中對(duì)數(shù)據(jù)傳送速率的規(guī)定,其意義是每秒鐘傳送多少位二進(jìn)制數(shù)。
例如:數(shù)據(jù)傳送的速率每秒為120個(gè)字符,每個(gè)字符由1個(gè)起始位、
8個(gè)數(shù)據(jù)位和1個(gè)停止位組成,則其傳送波特率為:
10*120=1200b/s=1200波特每一位的傳送時(shí)間即為波特率的倒數(shù):
Td=1/1200=0.833ms
異步通訊的傳送速度一般在50到9600波特之間。四、通訊方向1、
單工傳送:只能發(fā)送或接收,這種單向傳送的方法稱單工傳送;2、
半雙工傳送:數(shù)據(jù)可在兩機(jī)之間雙向傳送,但接收和發(fā)送不能同時(shí)進(jìn)行,只能分時(shí)接收和發(fā)送;3、全雙工傳送:兩機(jī)的發(fā)送和接收可以同時(shí)進(jìn)行。圖串行通信數(shù)據(jù)傳送的三種方式(a)單工方式;(b)半雙工方式;(c)全雙工方式五、信號(hào)的調(diào)制與解調(diào)
異步通訊有距離的限制,傳輸距離較遠(yuǎn)時(shí),信號(hào)衰減、頻帶不夠?qū)?,因此,用調(diào)制器把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),并加以放大再傳送,這個(gè)過程叫調(diào)制。在接收時(shí),再用解調(diào)器檢測(cè)此模擬信號(hào),并把它轉(zhuǎn)換成數(shù)字信號(hào)再送入計(jì)算機(jī)接口,這個(gè)過程即解調(diào)。其次節(jié)
串行口結(jié)構(gòu)與工作原理一.功能與結(jié)構(gòu)圖串行口方式0結(jié)構(gòu)示意圖發(fā)送SBUF(99H)接收SBUF(99H)發(fā)送控制器接收控制器串行口中斷定時(shí)器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ù)重疊的錯(cuò)誤;MOVSBUF,A2、
對(duì)于發(fā)送器,因?yàn)榘l(fā)送時(shí)CPU是主動(dòng)的,不會(huì)產(chǎn)生寫重疊問題,一般不須要雙緩沖器結(jié)構(gòu),以保持最大傳送速率。MOVA,SBUF3、8051串行口通過編程可設(shè)置4種工作方式,三種幀格式:
方式0:以8位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接收最低位。
D0D1D2D3D4D5D6D7
方式1:以10位為一幀傳輸,設(shè)有一個(gè)起始位“0”,8個(gè)數(shù)據(jù)位和一個(gè)停止位“1”。
0D0D1D2D3D4D5D6D71
起始
停止方式2和3:以11位為一幀傳輸,設(shè)有一個(gè)起始位“0”,8個(gè)數(shù)據(jù)位,
1個(gè)可編程位(第九數(shù)據(jù)位)D8和一個(gè)停止位“1”。
0D0D1D2D3D4D5D6D7D81
起始
停止
可編程位D8由軟件置1或清0,該位可作校驗(yàn)位,也可作它用。一般用在多機(jī)通訊中。二、串行口限制寄存器SCONCPU專用寄存器SCON為串行口限制字,方式選擇、接收和發(fā)送限制以及串行口的狀態(tài)標(biāo)記。復(fù)位時(shí),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時(shí),當(dāng)發(fā)送數(shù)據(jù)第8位結(jié)束后,或在其它方式發(fā)送停止位后,由內(nèi)部硬件使TI置位,向CPU懇求中斷。CPU在響應(yīng)中斷后,必需用軟件清零。此外,TI也可供查詢運(yùn)用。3、RI:接收中斷標(biāo)記位。在方式0時(shí),當(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時(shí),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時(shí),接收到的第9位數(shù)據(jù),可作為奇偶校驗(yàn)位或地址幀或數(shù)據(jù)幀的標(biāo)記。方式1時(shí),若SM2=0,則RB8是接收到的停止位。在方式0時(shí),不運(yùn)用RB8位。7、SM2:方式2、方式3時(shí)用于多機(jī)通信的限制位。?方式2或方式3處于接收時(shí):
若SM2=1且接收到的第9位數(shù)據(jù)(RB8)為0時(shí),不啟動(dòng)接收中斷標(biāo)記RI(即RI=0),并且將接收到的前8位數(shù)據(jù)丟棄;
若SM2=1且收到的第9位RB8為1時(shí),才將接收到的前8位數(shù)據(jù)送入SBUF,并置位RI,產(chǎn)生中斷懇求。若SM2=0,則不論第9位數(shù)據(jù)為0或1,都將前8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷懇求。?方式1中,當(dāng)處于接收時(shí),若SM2=1,則只有接收到有效的停止信號(hào)為止,RI才置"1"。?方式0中SM2應(yīng)置"0"。三、專用寄存器PCON
CPU專用寄存器PCON為電源限制寄存器。
PCON(87H):SMODXXXGF1GF0PDIDLPCON的最高位SMOD是串行口波特率系數(shù)限制位。SMOD=1時(shí),波特率增大一倍。其余各位與串行口無關(guān)。SMOD=0時(shí),方式2波特率為fosc/64;
SMOD=1時(shí),方式2波特率為fosc/32;
SMOD還影響方式1、方式3波特率的計(jì)算公式。第三節(jié)
波特率設(shè)計(jì)
串行口編程可約定4種工作方式。其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率限制。一、方式0和方式21、
方式0,每個(gè)機(jī)器周期發(fā)送或接收一位數(shù)據(jù),因此波特率固定為時(shí)鐘頻率的1/12,且不受SMOD的影響。2、
方式2的波特率取決于PCON中的SMOD之值。當(dāng)SMOD=0時(shí),波特率為時(shí)鐘頻率的1/64;若SMOD=1,則波特率為時(shí)鐘頻率的1/32。
方式2波特率=(2SMOD/64)*Fosc二、方式1和方式3串行口方式1和方式3的波特率由定時(shí)器T1的溢出率與SMOD值同時(shí)確定。波特率=(2SMOD/32)*(T1的溢出率)其中:T1的溢出率取決于計(jì)數(shù)速率和定時(shí)器的預(yù)置值。1、
計(jì)數(shù)速率:當(dāng)TMOD中C/T=0,定時(shí)方式,計(jì)數(shù)速率=Fosc/12;=1,計(jì)數(shù)方式,計(jì)數(shù)速率取決于外部輸入時(shí)鐘頻率。3、溢出率為溢出周期之倒數(shù):
波特率=(2SMOD/32)(Fosc/(12*(256-X))4、定時(shí)器T1方式2的初始值為:
X=256-(fosc*(SMOD+1)/(384*波特率))
2、溢出周期:當(dāng)定時(shí)器T1作波特率發(fā)生器運(yùn)用時(shí),通常是選用自動(dòng)重裝載模式,即模式2。在模式2中,TL1作計(jì)數(shù)用,而自動(dòng)重裝載的值放在TH1內(nèi)。設(shè)計(jì)數(shù)初值為X,那么每過“256-X”個(gè)機(jī)器周期,定時(shí)器T1就會(huì)產(chǎn)生一次溢出。為了避開因溢出而產(chǎn)生不必要的中斷,此時(shí)應(yīng)禁止T1中斷。溢出周期為:(12/Fosc)*(256-X)
例:已知8051單片機(jī)時(shí)鐘振蕩器為11.0592MHZ,選用定時(shí)器T1工作方式2作波特率發(fā)生器,波特率為2400波特,求初值。解:設(shè)SMOD=0,
X=256—11.0592*106*1/(384*2400)=244=F4H
所以TH1=TL1=F4H
假如串行通訊選用很低的波特率,可將定時(shí)器T1置于方式0或方式1,即13位或16位定時(shí)方式。但在這種狀況下,T1溢出時(shí),需重裝初值,從而對(duì)波特率產(chǎn)生確定的誤差。
表:常用波特率與定時(shí)/計(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)一個(gè)數(shù)據(jù)寫入發(fā)送緩沖寄存器SBUF,串行口即把8位數(shù)據(jù)以fosc/12的波特率從RXD端送出(低位在前),發(fā)送完置中斷標(biāo)記TI為1。接收:REN是串行口接收器允許接收限制位。REN=0,禁止接收;REN=1,允許接收。當(dāng)軟件置REN為1時(shí),即起先從RXD端以fosc/12波特率輸入數(shù)據(jù)(低位在前),當(dāng)接收到8位數(shù)據(jù)時(shí),置中斷標(biāo)記RI為1。
這種擴(kuò)展方法輸入輸出的速度是不高的,如fosc=12MHZ,則每移動(dòng)一位需1us.留意:1、串行限制寄存器中TB8或RB8位在方式0中未用。2、每當(dāng)發(fā)送或接收完8位數(shù)據(jù)時(shí),由硬件將發(fā)送中斷TI或接收中斷RI標(biāo)記置位。3、CPU響應(yīng)TI或RI中斷懇求時(shí),不會(huì)清除TI或RI標(biāo)記,必需由用戶用軟件清0。4、方式0時(shí),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時(shí),就啟動(dòng)發(fā)送器發(fā)送。當(dāng)發(fā)送完一幀數(shù)據(jù)后,就把TI標(biāo)記置1,并申請(qǐng)中斷。接收:由REN置1允許接收,串行口采樣引腳RXD。當(dāng)采到1至0的跳變時(shí),確認(rèn)是起始位“0”,就起先接收一幀數(shù)據(jù)。當(dāng)RI=0且停止位為1或者SM2=0時(shí),停止位進(jìn)入RB8位,同時(shí)置位中斷標(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)識(shí)位),然后將要發(fā)送的數(shù)據(jù)寫入SBUF,即啟動(dòng)發(fā)送器。發(fā)送過程,是執(zhí)行任何一條以SBUF作為目的寄存器的指令而啟動(dòng)的?!皩慡BUF”信號(hào),把8位數(shù)據(jù)裝入SBUF,同時(shí)還把TB8裝到發(fā)送移位寄存器的第9位位置上,并通知發(fā)送限制器,要求進(jìn)行一次發(fā)送。然后即從TXD端輸出一幀信息。接收:先置位REN為1,使串行口處于允許接收狀態(tài),同時(shí)還要將RI清0。在滿足這個(gè)條件的前提下,再依據(jù)SM2的狀態(tài)(因?yàn)镾M2是方式2和方式3的多機(jī)通訊限制位)和所接收到的RB8的狀態(tài)才能確定此串行口在信息到來后是否會(huì)使RI置1,并申請(qǐng)中斷,接收數(shù)據(jù)。當(dāng)SM2=0時(shí),不管是RB8為0還是為1,RI都置1,此串行口將接收發(fā)來的信息。當(dāng)SM2=1時(shí),且RB8為1時(shí),表示在多機(jī)通訊狀況下,接收的信息為地址幀,此時(shí)RI置1。串行口將接收發(fā)來的信息。當(dāng)SM2=1時(shí),且RB8為0時(shí),表示接收的信息為數(shù)據(jù)幀,但不是發(fā)給本從機(jī)的,此時(shí)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串接而成(前級(jí)的數(shù)據(jù)輸出位QH與后級(jí)的信號(hào)輸入端SIN相連)。
現(xiàn)編程從16位擴(kuò)展口讀入20個(gè)字節(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并啟動(dòng)接收
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ò)展口并行輸入到移位寄存器的是兩個(gè)字節(jié)數(shù)據(jù),置入一次,串行口應(yīng)接收二幀數(shù)據(jù)。故已接收的數(shù)據(jù)字節(jié)數(shù)為奇數(shù)時(shí)F0=0,不再并行輸入數(shù)據(jù)就干脆啟動(dòng)接收過程。否則F0=1,在啟動(dòng)接收過程前,應(yīng)當(dāng)先在外部移位寄存器中輸入新的數(shù)據(jù)。例2用8位并行輸出串行移位寄存器74LS164作為擴(kuò)展輸出口。由于74LS164無并行輸出限制端,在串行輸入過程中,其輸出端的狀態(tài)會(huì)不斷變更,故在某些場(chǎng)合,在74LS164與輸出裝置之間,還應(yīng)加上輸出可控的緩沖級(jí)(如74LS244),以便串行輸入過程結(jié)束后再輸出。
圖中的輸出裝置是2位共陽級(jí)七段顯示發(fā)光二極管,接受靜態(tài)顯示方式。
由于74LS164在低電平輸出時(shí),允許通過電流可達(dá)8mA,故不需再加驅(qū)動(dòng)電路。與動(dòng)態(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;啟動(dòng)串行口發(fā)送過程
JNBTI,$;等待接收一幀數(shù)據(jù)
CLRTI;清串行口發(fā)送中斷標(biāo)記
INCR0;修改指針取下一個(gè)數(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個(gè)字節(jié)數(shù)據(jù)。乙機(jī)接收數(shù)據(jù)存放在3000H~300FH單元中(外部RAM)
解:
雙機(jī)通信串行口工作在方式1,定時(shí)器T1工作在方式2。
定時(shí)常數(shù):X=256-(fosc*(SMOD+1))/(384*波特率)
若SMOD=0,則X=249.49,誤差較大。
取SMOD=1,則X=242.98=243=F3H,誤差較小。
發(fā)送程序:
MOVTMOD,#20H;定時(shí)器(波特率)初始化
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;定時(shí)器(波特率)初始化
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。若出錯(cuò)置F0標(biāo)記為1,正確置F0標(biāo)記為0。然后返回。要求:定義工作方式3發(fā)送,TB8作奇偶校驗(yàn)位。接受定時(shí)器1方式2作波特率發(fā)生器,波特率為1200,F(xiàn)osc=11.0592MHZ分析:預(yù)置值TH1=0E8H。發(fā)送: MOV TMOD,#20H ;設(shè)置定時(shí)器1為方式2 MOV TL1,#0E8H ;設(shè)置預(yù)置值;
MOV TH1,#0E8H SETB TR1 ;啟動(dòng)定時(shí)器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,啟動(dòng)發(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è)置定時(shí)器1為方式2 MOV TL1,#0E8H ;設(shè)置預(yù)置值 MOV TH1,#0E8H SETB TR1 ;啟動(dòng)定時(shí)器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則出錯(cuò) SJMP YES ;二者全為1則正確PZ: JB RB8,ERR ;P=0,RB8=1則出錯(cuò)YES: MOVX @DPTR,A ;正確,存放數(shù)據(jù) INC DPTR ;修改地址指針 DJNZ R7,WAIT ;推斷數(shù)據(jù)塊接收完否 CLR PSW.5 ;接收正確,且接收完清F0標(biāo)記 RET ;返回ERR: SETB PSW.5 ;出錯(cuò)置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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件在引領(lǐng)全球科技創(chuàng)新的浪潮考核試卷
- 防治林業(yè)有害生物的生態(tài)恢復(fù)工程設(shè)計(jì)與實(shí)施考核試卷
- 非金屬礦物在高溫結(jié)構(gòu)陶瓷中的應(yīng)用考核試卷
- 消費(fèi)者細(xì)分市場(chǎng)分析-洞察分析
- 文具跨境電商的售后服務(wù)體系構(gòu)建-洞察分析
- 網(wǎng)絡(luò)化監(jiān)測(cè)數(shù)據(jù)挖掘分析-洞察分析
- 裝飾裝修木地板施工工藝流程
- 少先隊(duì)輔導(dǎo)員崗位職責(zé)
- 統(tǒng)編語文四年級(jí)教材網(wǎng)絡(luò)培訓(xùn)心得體會(huì)
- 人力資源管理工作計(jì)劃
- 欄桿百葉安裝施工方案
- (高速公路)工程施工便道施工方案-
- 低壓配電電源質(zhì)量測(cè)試記錄
- 安徽省水利工程質(zhì)量檢測(cè)和建筑材料試驗(yàn)服務(wù)收費(fèi)標(biāo)準(zhǔn)
- 2022課程標(biāo)準(zhǔn)解讀及學(xué)習(xí)心得:大單元教學(xué)的實(shí)踐與思考
- OA協(xié)同辦公系統(tǒng)運(yùn)行管理規(guī)定
- 公安警察工作匯報(bào)PPT模板課件
- 某小區(qū)建筑節(jié)能保溫工程監(jiān)理實(shí)施細(xì)則
- 污水處理中常用的專業(yè)術(shù)語
- 石英砂過濾器說明書
- 外市電引入工程實(shí)施管理要求(重要)
評(píng)論
0/150
提交評(píng)論