串行通訊與實驗驗證_第1頁
串行通訊與實驗驗證_第2頁
串行通訊與實驗驗證_第3頁
串行通訊與實驗驗證_第4頁
串行通訊與實驗驗證_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

10:47:22浙江師范大學(xué)1三、串行通訊與實驗驗證MCS-51內(nèi)部有一個可編程全雙工串行接口,具有UART(通用異步接收和發(fā)送器)的全部功能,該串行口,有4種工作方式,以供不同場合使用。波特率可由軟件設(shè)置,通過對串口編程,可以實現(xiàn)串并轉(zhuǎn)換,雙機(jī)通信及多機(jī)通信。10:47:22浙江師范大學(xué)2三、串行通訊與實驗驗證全雙工串行接口(UART)?數(shù)據(jù)通信的幾個術(shù)語:

并行:數(shù)據(jù)各位同時進(jìn)行傳送

串行:數(shù)據(jù)逐位順序進(jìn)行傳送?全雙工:(串行通信)收/發(fā)可同時進(jìn)行

半雙工:(串行通信)收/發(fā)不可同時進(jìn)行?異步串行通信:以字符為單位進(jìn)行傳送

同步串行通信:以數(shù)據(jù)塊為單位進(jìn)行傳送

波特率(bps.):單位時間傳送的位數(shù)10:47:22浙江師范大學(xué)3三、串行通訊與實驗驗證發(fā)送接收發(fā)送接收A端B端

半雙工制式發(fā)送接收接收發(fā)送A端B端

全雙工制式10:47:22浙江師范大學(xué)4三、串行通訊與實驗驗證——1.內(nèi)部結(jié)構(gòu)MCS-51單片機(jī)串行口的內(nèi)部有三個特殊功能寄存器:SBUF、SCON、PCON,發(fā)送SBUF(99H)接收SBUF(99H)同步時鐘門電路發(fā)送控制器接收控制器輸入移位寄存器串行口控制寄存器(98H)內(nèi)部總線≥1串行口中斷TIRITXD(P3.1)RXD(P3.0)10:47:22浙江師范大學(xué)5三、串行通訊與實驗驗證?兩個同名的接收/發(fā)送緩沖寄存器SBUF

指令MOVSBUF,A;啟動一次數(shù)據(jù)發(fā)送,可向SBUF

再發(fā)送下一個數(shù)指令MOVA,SBUF;完成一次數(shù)據(jù)接收,SBUF可再接收下一個數(shù)?接收/發(fā)送數(shù)據(jù),無論是否采用中斷方式工作,每接收/發(fā)送一個數(shù)據(jù)都必須用指令對RI/TI清0,以備下一次收/發(fā)。?串行口相關(guān)的SFR(SCON,PCON)1.串行口的結(jié)構(gòu)2.串行口控制寄存器SCON SCON寄存器用來控制串行口的工作方式和狀態(tài),字節(jié)地址為98H。它可以位尋址。在復(fù)位時所有位被清零。SCON的格式如下所示:SCON(98H)10:47:22浙江師范大學(xué)6位76543210功能SM0SM1SM2RENTB8RB8TIRISCON(98H)SM0、SMl:串行口工作方式選擇位SM0SM1工作方式功能說明001101010123同步移位寄存器輸入/輸出,波特率為fOSC/128位UART,波特率可變(TI溢出率/n,n=16或32)9位UART,波特率為fosc/n,n=32或64)9位UART,波特率可變(TI溢出率/n,n=16或32)三、串行通訊與實驗驗證位76543210功能SM0SM1SM2RENTB8RB8TIRISM2:多機(jī)通信控制位,用于方式2和方式3中。在方式2和方式3處于接收方式時

若SM2=1,表示置多機(jī)通信功能。若SM2=0,不論接收到的第9位RB8是0還是l,TI、RI都以正常方式被激活,接收到的數(shù)據(jù)裝入SBUF。在方式1,若SM2=1,則只有收到有效的停止位后,RI=1。在方式0中,SM2=0。2.串行口控制寄存器SCON SCON寄存器用來控制串行口的工作方式和狀態(tài),字節(jié)地址為98H。它可以位尋址。在復(fù)位時所有位被清零。SCON的格式如下所示:SCON(98H)10:47:22浙江師范大學(xué)7SCON(98H)三、串行通訊與實驗驗證位76543210功能SM0SM1SM2RENTB8RB8TIRIREN:允許串行接收控制位。REN=l時,允許接收;REN=0時,禁止接收。2.串行口控制寄存器SCON SCON寄存器用來控制串行口的工作方式和狀態(tài),字節(jié)地址為98H。它可以位尋址。在復(fù)位時所有位被清零。SCON的格式如下所示:SCON(98H)10:47:22浙江師范大學(xué)8SCON(98H)三、串行通訊與實驗驗證位76543210功能SM0SM1SM2RENTB8RB8TIRITB8:發(fā)送數(shù)據(jù)的第9位。在方式2和方式3中,TB8是第9位發(fā)送數(shù)據(jù),可做奇偶校驗位。在多機(jī)通信中,可作為區(qū)別地址幀或數(shù)據(jù)幀的標(biāo)識位,一般約定發(fā)送地址幀時,TB8為1,發(fā)送數(shù)據(jù)幀時,TB8為0。TB8由軟件置位或復(fù)位;2.串行口控制寄存器SCON SCON寄存器用來控制串行口的工作方式和狀態(tài),字節(jié)地址為98H。它可以位尋址。在復(fù)位時所有位被清零。SCON的格式如下所示:SCON(98H)10:47:22浙江師范大學(xué)9SCON(98H)三、串行通訊與實驗驗證位76543210功能SM0SM1SM2RENTB8RB8TIRIRB8:接收數(shù)據(jù)的第9位。在方式2和方式3中,接收第9位數(shù)據(jù)。在方式1下,若SM2=0,則RB8用于存放接收到的停止位方式;方式0下,不使用RB8;2.串行口控制寄存器SCON SCON寄存器用來控制串行口的工作方式和狀態(tài),字節(jié)地址為98H。它可以位尋址。在復(fù)位時所有位被清零。SCON的格式如下所示:SCON(98H)10:47:22浙江師范大學(xué)10SCON(98H)三、串行通訊與實驗驗證位76543210功能SM0SM1SM2RENTB8RB8TIRITI:發(fā)送中斷標(biāo)志位,用于指示一幀數(shù)據(jù)發(fā)送完否。當(dāng)TI=l時,向CPU申請串行中斷,響應(yīng)中斷后,必須由軟件清除TI。就是說:TI在發(fā)送前必須由軟件復(fù)位,發(fā)送完一幀后由硬件置位。因此,CPU查詢TI狀態(tài)便可知一幀信息是否已發(fā)送完畢。2.串行口控制寄存器SCON SCON寄存器用來控制串行口的工作方式和狀態(tài),字節(jié)地址為98H。它可以位尋址。在復(fù)位時所有位被清零。SCON的格式如下所示:SCON(98H)10:47:22浙江師范大學(xué)11SCON(98H)三、串行通訊與實驗驗證位76543210功能SM0SM1SM2RENTB8RB8TIRIRI:接收中斷標(biāo)志位。用于指示一幀信息是否接收完。在方式1中,接收到第8位數(shù)據(jù)時由硬件置位;在其它方式中在接收停止位的中間點由硬件置位。接收完一幀數(shù)據(jù)RI=l,向CPU申請中斷,供CPU查詢。RI由軟件復(fù)位。2.串行口控制寄存器SCON SCON寄存器用來控制串行口的工作方式和狀態(tài),字節(jié)地址為98H。它可以位尋址。在復(fù)位時所有位被清零。SCON的格式如下所示:SCON(98H)10:47:22浙江師范大學(xué)12SCON(98H)三、串行通訊與實驗驗證SCON的所有位復(fù)位時被清零。3.電源及波特率選擇寄存器PCON PCON主要是為CHMOS型單片機(jī)的電源控制而設(shè)置的專用寄存器,沒有位尋址功能。字節(jié)地址為87H。在HMOS的8051單片機(jī)中,PCON只有最高位被定義,其它位都是虛設(shè)的。10:47:22浙江師范大學(xué)13位76543210功能SMODSSSSSSSSGF11GF00PPDDIDLLPCON的最高位SMOD為串行口波特率的倍增位。在方式1、2和3時,串行通信的波特率與SMOD有關(guān)。當(dāng)SMOD=l時,通信波特率加倍,當(dāng)SMOD=0時,波特率不變。其它各位為掉電方式控制位。三、串行通訊與實驗驗證串行口有4種工作方式,通過SCON中的SMl、SM0位決定:1.工作方式0——8位移位寄存器I/O方式為同步移位寄存器方式,波特率固定為fOSC/l2串行數(shù)據(jù)從RXD(P3.0)端輸入或輸出,同步移位脈沖由TXD(P3.1)送出移位數(shù)據(jù)的發(fā)送和接收以8位為一幀,無需起始位和停止位常用于擴(kuò)展I/O口10:47:22浙江師范大學(xué)14三、串行通訊與實驗驗證——2串行口的工作方式10:47:22浙江師范大學(xué)15三、串行通訊與實驗驗證?經(jīng)常配合“串入并出”“并入串出”移位寄存器一起使用擴(kuò)展接口

?方式0工作時,多用查詢方式編程:發(fā)送:MOVSBUF,A

接收:JNBRI,$

JNBTI,$CLRRI

CLRTIMOVA,SBUF?復(fù)位時,SCON已經(jīng)被清零,缺省值:方式0?接收前,務(wù)必先置位REN=1允許接收數(shù)據(jù)三、串行通訊與實驗驗證10:47:22浙江師范大學(xué)16?發(fā)送:SBUF中的串行數(shù)據(jù)由RxD逐位移出;

TxD輸出移位時鐘,頻率=fosc/12;

每送出8位數(shù)據(jù)TI就自動置1;

需要用軟件清零TI。?接收:串行數(shù)據(jù)由RxD逐位移入SBUF中;

TxD輸出移位時鐘,頻率=fosc/12;

每接收8位數(shù)據(jù)RI就自動置1;

需要用軟件清零RI。三、串行通訊與實驗驗證10:47:22浙江師范大學(xué)17串行口方式0的擴(kuò)展應(yīng)用串行口常用工作方式0擴(kuò)展出并行I/O口,工作方式1、2、3則常用于串行通信74LS164是串入并出芯片;74LS165是并入串出芯片ABCLKhgfedcbaCLRABCLKCLRABCLKCLR+5V74LS16474LS16474LS164hgfedcbahgfedcba+5V共陽LED數(shù)碼管VCCTxDRxD51單片機(jī)三、串行通訊與實驗驗證10:47:22浙江師范大學(xué)18例:利用串行口工作方式0擴(kuò)展出8位并行I/O口,驅(qū)動共陽LED數(shù)碼管顯示0—9。ABCLKhgfedcbaCLR+5VVCCTxDRxD51單片機(jī)74LS164共陽LED數(shù)碼管10:47:22浙江師范大學(xué)19三、串行通訊與實驗驗證根據(jù)通過串行口和74LS164驅(qū)動共陽LED數(shù)碼管(查表)顯示0-9數(shù)字的子程序:DSPLY:MOVDPTR,#TABLEMOVCA,@A+DPTRMOVSBUF,AJNBTI,$CLRTIRETTABLE:DB0C0H,0F9H,0A4HDB0B0H,99H,92HDB82H,0F8H,80H,90Hhgfedcba累加器A110000000C0H=“0”101100000B0H=“3”共陽極hgfedcbaabcdgefh注意:這里沒有設(shè)置SCON,而是采用了復(fù)位后的默認(rèn)值00H10:47:22浙江師范大學(xué)20三、串行通訊與實驗驗證?常用于串行通訊。除發(fā)/收8位數(shù)據(jù)外,還在D0位前有一個起始位“0”;在D7位后有一個停止位“1”。?方式1工作時:發(fā)送端自動添加一個起始位和一個停止位;接收端自動去掉一個起始位和一個停止位。工作方式1:8位UART(1+8+1位)波特率可變?波特率可變

——用定時器T1作波特率發(fā)生器:公式:波特率=(2SMOD/32)T1的溢出率10:47:22浙江師范大學(xué)21三、串行通訊與實驗驗證波特率=(2SMOD/32)T1的溢出率?

溢出率:T1溢出的頻繁程度即:T1溢出一次所需時間的倒數(shù)。?

初值X=2n-2SMODfosc32波特率

12?

波特率=2SMODfosc3212(2n-X)其中:X是定時器初值10:47:22浙江師范大學(xué)22三、串行通訊與實驗驗證?

初值X=2n-2SMODfosc32波特率

12?

計算波特率:要求用T1工作于方式2來產(chǎn)生波特率1200,已知晶振頻率=6MHz。要求出T1的初值:初值X=28-206106321200

12=256-=256-13.026106460800243=0F3H10:47:22浙江師范大學(xué)23三、串行通訊與實驗驗證

?表格有多種,晶振也不止一種常用波特率和T1初值查表串口波特率(方式1,3)foscSMOD位(PCON中)定時器T1C/T方式初值192006MHz1020FEH96006MHz1020FDH48006MHz0020FDH24006MHz0020FAH12006MHz0020F3H6006MHz0020E8H1106MHz00272H10:47:22浙江師范大學(xué)24三、串行通訊與實驗驗證?RxD引腳為接收端,TxD引腳為發(fā)送端,由波特率發(fā)生器T1控制發(fā)送速度,不同于方式0:收/發(fā)都需要由TxD送出移位時鐘。

?T1作波特率發(fā)生器時初始化包括:

選定時器工作方式2(TMOD選8位自動重裝);

將計算(或查表)出的初值X賦給TH1,TL1;

啟動T1(SETBTR1);

對T1不要開中斷!!工作方式1的接收/發(fā)送?串行口的初始化包括:

對SCON選工作方式對PCON設(shè)波特率加倍位“SMOD”(缺省值=0)

如果是接收數(shù)據(jù),仍要先置“1”REN位

10:47:22浙江師范大學(xué)25三、串行通訊與實驗驗證MAIN:ORG0023H

MOVTMOD,#20HSBR1:JNBRI,SEND

MOVTL1,#0F3HLCALLSIN

MOVTH1,#0F3HSJMPNEXT

SETBTR1SEND:LCALLSOUT

MOVSCON,#50HNEXT:RETI

…………SETBEASIN:……SETBESRETLCALLSOUTSOUT:……SJMP$RET串行通信方式1應(yīng)用例:用T1工作于方式2,產(chǎn)生波特率1200bps10:47:22浙江師范大學(xué)26三、串行通訊與實驗驗證?由于波特率固定,常用于單片機(jī)間通訊。數(shù)據(jù)由8+1位組成,通常附加的一位(TB8/RB8)用于“奇偶校驗”。工作方式2:9位UART(1+8+1+1位)兩種波特率?方式2的波特率=fosc2SMOD/64

即:fosc1/32或fosc1/64兩種0D0D1D2D3D4D5D6D70/118位數(shù)據(jù)起始位停止位10:47:22浙江師范大學(xué)27三、串行通訊與實驗驗證例:發(fā)送中斷服務(wù)程序,以TB8作為奇偶校驗位,處理方法:數(shù)據(jù)寫入SBUF之前,先將數(shù)據(jù)的奇偶位寫入TB8。CPU執(zhí)行一條寫SBUF的命令后,便立即啟動發(fā)送器發(fā)送,發(fā)送完一幀信息后,TI被置1,再次向CPU申請中斷。因此在進(jìn)入中斷服務(wù)子程序后,必須將TI清零。10:47:22浙江師范大學(xué)28三、串行通訊與實驗驗證PIPL:

PUSHPSW ;保護(hù)現(xiàn)場PUSHACLRTI ;清零發(fā)送中斷標(biāo)志MOVA,@R0 ;取數(shù)據(jù)

MOVC,P

;奇偶位送CMOVTB8,C ;奇偶位送TB8MOVSBUF,A;發(fā)送數(shù)據(jù)INCR0 ;數(shù)據(jù)指針加1POPA ;恢復(fù)現(xiàn)場POPPSWRETI10:47:22浙江師范大學(xué)29三、串行通訊與實驗驗證工作方式3:當(dāng)SM0,SM1為11時,串行口工作于方式39位UART(1+8+1+1位)波特率可變串口方式3和方式2唯一的區(qū)別是波特率機(jī)制不同。?方式2的波特率固定為時鐘周期的32或64分頻,不可變。此工作方式與其他串行通訊設(shè)備連接困難,因此不常用。?方式3的波特率可變,按公式計算:波特率=(2SMOD/32)T1的溢出率?波特率=2SMODfosc3212(2n-X)其中:X是定時器初值10:47:22浙江師范大學(xué)30三、串行通訊與實驗驗證——3串行口的波特率MCS-51單片機(jī)串行通信的波持率隨串行口工作方式選擇不同而異,它除了與系統(tǒng)的振蕩頻率fosc,電源控制寄存器PCON的SMOD位有關(guān)外,還與定時器T1的設(shè)置有關(guān)。收發(fā)雙方必須采用相同的波特率。方式0和方式2的波特率是固定的;方式1和方式3的波特率是可變的,由定時器T1的溢出率決定。10:47:22浙江師范大學(xué)31三、串行通訊與實驗驗證1.方式0和方式2方式0:

波特率為時鐘頻率的1/12,即fOSC/12,固定不變。方式2:

波特率取決于PCON中的SMOD值,選定公式為波特率=2SMOD×fosc/64,固定為二種:當(dāng)SMOD=l時,波特率為fosc/32;當(dāng)SMOD=0時,波特率為fosc/64。10:47:22浙江師范大學(xué)32三、串行通訊與實驗驗證2.方式1和方式3在方式l和方式3下,波特率由定時器Tl的溢出率和SMOD共同決定,因而波特率也是可變的。相應(yīng)公式為:波特率=2SMOD/32×n(定時器T1的溢出率)溢出率為溢出周期的倒數(shù),所以波特率為:波特率

=

定時器T1的溢出率取決于定時器T1的預(yù)置值。10:47:22浙江師范大學(xué)33三、串行通訊與實驗驗證波特率也是可變的。溢出周期為:fOSC/12×1/(2n一X)式中,n為定時器T1的位數(shù),它和定時器T1的設(shè)定方式有關(guān)。即:若定時器T1為方式0,則n=13若定時器T1為方式1,則n=16若定時器T1為方式2或3,則n=810:47:22浙江師范大學(xué)34三、串行通訊與實驗驗證

定時器T1通常采用方式2。方式2:TH1和TLl分別設(shè)定為兩個8位重裝計數(shù)器(當(dāng)TLl從全“1”變?yōu)槿?”時,TH1重裝TL1)。

這種方式,不僅可使操作方便,也可避免因重裝初值(時間常數(shù)初值)而帶來的定時誤差。方式1或方式3下所選波特率常常需要通過計算來確定初值。10:47:22浙江師范大學(xué)35三、串行通訊與實驗驗證4SMOD位對波特率的影響在波特率的設(shè)置中,SMOD位影響著波特率的準(zhǔn)確度的問題值得注意。例:設(shè)波特率選為2400,時,SMOD可以任選為0和1,但是由于對SMOD不同的選擇產(chǎn)生不同的波特率誤差:1.選擇SMOD=0時,此時10:47:22浙江師范大學(xué)36三、串行通訊與實驗驗證將此值置入TH1,可得實際的波特率及誤差為:10:47:22浙江師范大學(xué)37三、串行通訊與實驗驗證2.SMOD=1,此時將此值置入TH1,可得實際的波特率及誤差為:10:47:22浙江師范大學(xué)38三、串行通訊與實驗驗證SMOD值雖然是可以任意選擇的值,但在某些情況下會直接影響波特率誤差范圍。

通常波特率相對誤差不大于2.5%,為了保證通信的可靠性,當(dāng)不同機(jī)種相互之間進(jìn)行通信時,尤其要注意這點。10:47:22浙江師范大學(xué)39三、串行通訊與實驗驗證例:通信波特率為2400bps,fOSC=11.0592MHz,T1工作在方式2,其SMOD=0,計算T1的初值X,且編寫初始化程序。

根據(jù)波特率=2SMOD/32×n得n=76800根據(jù)n=fOSC/〔12×(2K一X)〕得X=244即:X=F4H,相應(yīng)的程序為:MOVTMOD,#20HMOVTLl,#0F4HMOVTHl,#0F4HSETBTRl10:47:22浙江師范大學(xué)40三、串行通訊與實驗驗證——5串口通信應(yīng)用1.單片機(jī)串行通信口測試?yán)喝鐖D將單片機(jī)的發(fā)送端與接收端接在一起,可以測試單片機(jī)的串口通信功能。設(shè)單片機(jī)主頻為6MHz,波特率為2400bps。程序執(zhí)行后,8個發(fā)光二極管閃爍表示通信正常。8051TXDRXDP1.0P1.1P1.7330330330742447424474244...VCC...10:47:22浙江師范大學(xué)41三、串行通訊與實驗驗證定時器采用工作模式2,初值為FAH,程序:

ORG0000HMOVTMOD,#20H;定時器1設(shè)為模式2MOVTL1,#0FAHMOVTH1,#0FAH;置定時器初值SETBTR1;啟動T1MOVSCON,#50H;串口設(shè)置為方式1,REN=1STA:CLRTI;清發(fā)送標(biāo)志MOVP1,#00H;送亮燈信號ACALLDELAY;調(diào)延時MOVA,#0FFHMOVSBUF,A;發(fā)送滅燈信號10:47:22浙江師范大學(xué)42三、串行通訊與實驗驗證

JXFS:JNBTI,JXFS;發(fā)送等待

JXJS:JNBRI,JXJS;接收等待

CLRRI;清接收標(biāo)志

MOVA,SBUF;接收數(shù)據(jù)

MOVP1,A;接收數(shù)據(jù)(滅燈信號)送P1口

ACALLDELAY;調(diào)延時

SJMPSTA;重復(fù)DELAY:

MOVR0,#0FFH;延時子程序DAL:MOVR1,#0FFHDAL1:DJNZR1,DAL1DJNZR0,DALRETEND10:47:22浙江師范大學(xué)43三、串行通訊與實驗驗證2.MCS-51單片機(jī)雙機(jī)通信技術(shù)

如果兩個單片機(jī)應(yīng)用系統(tǒng)相距很近,可將它們的串行口直接相連,即可實現(xiàn)雙機(jī)通信,如圖:8051TXDRXDGND8051RXDTXDGND10:47:22浙江師范大學(xué)44三、串行通訊與實驗驗證為了增加通信距離,減少通道及電源干擾,可以在通信線路上采取光電隔離的方法,利用RS-422標(biāo)準(zhǔn)進(jìn)行雙機(jī)通信。一種實用的接口電路如圖:10:47:22浙江師范大學(xué)45三、串行通訊與實驗驗證例:利用方式1實現(xiàn)單片機(jī)雙機(jī)通信,主頻為6MHz,波特率為2400bps,當(dāng)兩個單片機(jī)距離較近時,甲、乙兩機(jī)的發(fā)送端與接收端分別直接相聯(lián),兩機(jī)共地。執(zhí)行程序,甲機(jī)將亮燈信號發(fā)送給乙機(jī),若通信正常,乙機(jī)接收到信號后點亮8個發(fā)光二極管。電路原理圖如圖所示,下面介紹甲機(jī)發(fā)送,乙機(jī)采用查詢與中斷兩種工作方式接收。8051TXDRXDGND8051RXDTXDGND甲機(jī)發(fā)送程序:ORG0000HSTA:MOVTMOD,#20H;設(shè)置波特率MOVTL1,#0FAHMOVTH1,#0FAHSETBTR1MOVSCON,#40H;置工作方式1CLRTIMOVA,#00HMOVSBUF,A;發(fā)送亮燈信號WAIT:JBCTI,CONT;發(fā)送成功清標(biāo)志

AJMPWAIT;等待發(fā)送完畢CONT:SJMPSTA;重復(fù)發(fā)送

END乙機(jī)查詢工作方式接收:ORG0000HMOVTMOD,#20H;設(shè)置通信波特率MOVTL1,#0FAHMOVTH1,#0FAHSETBTR1MOVSCON,#40HCLRRISETBREN;允許接收WAIT:JBCRI,READ;接收成功清標(biāo)志AJMPWAIT;接收未完等待READ:MOVA,SBUFMOVP1,A;接收亮燈信號送P1口SJMP$END乙機(jī)中斷工作方式接收:ORG0000HAJMPMAINORG0023HAJMPZD;轉(zhuǎn)串口中斷程序MAIN:MOVTMOD,#20HMOVTL1,#0FAHMOVTH1,#0FAHSETBTR1MOVSCON,#50HCLRRIMOVIE,#90H;開中斷SJMP$ZD:CLRRI;清接收標(biāo)志MOVA,SBUF;讀接收信號MOVP1,ARETI;中斷返回END10:47:22浙江師范大學(xué)49三、串行通訊與實驗驗證例:編程將甲機(jī)片內(nèi)50H單元開始的20個數(shù)據(jù)從串行口輸出,乙機(jī)接收甲機(jī)發(fā)送過來的數(shù)據(jù)塊,并存入片內(nèi)

50H開始的20個單元。采用方式2通信,數(shù)據(jù)幀格式是11位的,TB8為奇偶校驗位,接收過程要求判斷RB8,若出錯置F0標(biāo)志為1,正確則置F0標(biāo)志為0,然后返回。發(fā)送波特率375kbps,晶振為12MHz,所以SMOD=l。

由于傳送數(shù)據(jù)的波特率與定時器無關(guān),所以程序中無需對定時器編程。發(fā)送子程序如下:MOVSCON,#80H;設(shè)置串行口為方式2MOVPCON,#80H;SMOD=lMOVR0,#50H;設(shè)數(shù)據(jù)塊指針MOVR7,#20;設(shè)數(shù)據(jù)塊長度STA:MOVA,@R0;取數(shù)據(jù)給AMOVC,PMOVTB8,C;奇偶位P送給TB8,

MOVSBUF,A;啟動發(fā)送WAIT:

JBCTI,CONT;若發(fā)完一幀數(shù)據(jù),清標(biāo)志后發(fā)

下一幀數(shù)據(jù)

AJMPWAIT;未完等待CONT:

INCR0;修改數(shù)據(jù)指針DJNZR7,STA;循環(huán)發(fā)送至結(jié)束RET乙機(jī)接收程序如下:

在進(jìn)行雙機(jī)通信時,兩機(jī)應(yīng)采用相同的工作方式和波特率。

參考接收子程序如下:

MOVSCON,#90H;設(shè)置串行口為方式2,;REN為1,允許接收MOVPCON,#80H;SMOD=1MOVR0,#50H;設(shè)置數(shù)據(jù)塊首址MOVR7,#20

溫馨提示

  • 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

提交評論