單片機原理及應用之串行通信接口_第1頁
單片機原理及應用之串行通信接口_第2頁
單片機原理及應用之串行通信接口_第3頁
單片機原理及應用之串行通信接口_第4頁
單片機原理及應用之串行通信接口_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第6章

串行通信接口1、全雙工的異步通訊串行口2、4種工作方式,波特率由片內(nèi)定時器/計數(shù)器控制。3、每發(fā)送或接收一幀數(shù)據(jù),均可發(fā)出中斷請求,也可以工作在查詢方式。4、除用于串行通訊,還可用來擴展并行I/O口。6.1MCS-51單片機的串行接口串行口內(nèi)部結(jié)構(gòu)如下圖,兩個物理上獨立地接收和發(fā)送緩沖器,可同時收、發(fā)數(shù)據(jù)。兩個緩沖器共用一個特殊功能寄存器字節(jié)地址:SBUF(99H)。

控制寄存器共兩個:特殊功能寄存器SCON和PCON。

(1)SM0、SM1——串行口4種工作方式的選擇位

表串行口的4種工作方式SM0SM1方式 功能說明

000同步移位寄存器方式(用于擴展I/O口)0118位異步收發(fā),波特率可變(由定時器控制)1029位異步收發(fā),波特率為fosc/64或fosc/32113

9位異步收發(fā),波特率可變(由定時器控制)6.1.1串行口控制寄存器SCON

字節(jié)地址98H,可位尋址,格式如圖所示。

(2)SM2—多機通信控制位

用于方式2或3中。當串行口以方式2或方式3接收時,如果SM2=1,只有當接收到的第9位數(shù)據(jù)(RB8)為“1”時,才將接收到的前8位數(shù)據(jù)送入SBUF,并置“1”

RI,產(chǎn)生中斷請求;當接收到的第9位數(shù)據(jù)(RB8)為“0”時,則將接收到的前8位數(shù)據(jù)丟棄。如果SM2=0,則不論第9位數(shù)據(jù)是“1”還是“0”,都將前8位數(shù)據(jù)送入SBUF中,并置“1”

RI,產(chǎn)生中斷請求。在方式1時,如果SM2=1,則只有收到停止位時才會激活RI。在方式0時,SM2必須為0。

(3)REN——允許串行接收位由軟件置“1”或清“0”。REN=1

允許串行口接收數(shù)據(jù)。

REN=0

禁止串行口接收數(shù)據(jù)。

(4)TB8——發(fā)送的第9位數(shù)據(jù)方式2和3時,TB8是要發(fā)送的第9位數(shù)據(jù),可作為奇偶校驗位使用,也可作為地址幀或數(shù)據(jù)幀的標志。

=1為地址幀,

=0為數(shù)據(jù)幀(5)RB8——接收到的第9位數(shù)據(jù)方式2和3時,RB8存放接收到的第9位數(shù)據(jù)。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。

(6)TI——發(fā)送中斷標志位方式0時,串行發(fā)送第8位數(shù)據(jù)結(jié)束時由硬件置“1”,其它工作方式,串行口發(fā)送停止位的開始時置“1”。TI=1,表示一幀數(shù)據(jù)發(fā)送結(jié)束,可供軟件查詢,也可申請中斷。CPU響應中斷后,向SBUF寫入要發(fā)送的下一幀數(shù)據(jù)。TI必須由軟件清0。(7)RI——接收中斷標志位

方式0時,接收完第8位數(shù)據(jù)時,RI由硬件置1。其它工作方式,串行接收到停止位時,該位置“1”。RI=1,表示一幀數(shù)據(jù)接收完畢,并申請中斷,CPU從接收SBUF取走數(shù)據(jù)。該位狀態(tài)也可軟件查詢。RI必須由軟件清“0”。SMOD:波特率選擇位。

也稱SMOD位為波特率倍增位。

6.1.2特殊功能寄存器PCON

字節(jié)地址為87H,沒有位尋址功能。6.2串行口的工作方式6.2.1方式0

同步移位寄存器輸入/輸出方式,常用于外接移位寄存器,以擴展并行I/O口。8位數(shù)據(jù)為一幀,不設(shè)起始位和停止位,先發(fā)送或接收最低位。波特率固定為fosc/12。幀格式如下:方式0下,SCON中的TB8、RB8位沒有用到,發(fā)送或接收完8位數(shù)據(jù)由硬件置“1”TI或RI,CPU響應中斷。TI或RI須由用戶軟件清“0”,可用如下指令:

CLRTI ;TI位清“0” CLRRI ;RI位清“0”方式0時,SM2位必須為0。6.2.2方式1

SM0、SM1=01方式1一幀數(shù)據(jù)為10位,1個起始位(0),8個數(shù)據(jù)位,1個停止位(1),先發(fā)送或接收最低位。幀格式如下:方式1波特率=(2SMOD/32)×定時器T1的溢出率SMOD為PCON寄存器的最高位的值(0或1)。

6.2.3方式29位異步通信接口。每幀數(shù)據(jù)均為11位,1位起始位0,8位數(shù)據(jù)位(先低位),1位可程控的第9位數(shù)據(jù)和1位停止位。幀格式如下。方式2波特率=(2SMOD/64)×fosc

6.2.4方式3SM0、SM1=11,串口為方式3。波特率可變的9位異步通訊方式,除波特率外,

方式3和方式2相同。方式3的時序見方式2。方式3波特率=(2SMOD/32)×定時器T1的溢出率6.2.5波特率的制定方法方式0、方式2的波特率是固定的;方式1、方式3波特率由定時器T1的溢出率來確定。1波特率的定義對于定時器的不同工作方式,波特率的范圍不一2定時器T1產(chǎn)生波特率的計算(1)方式0波特率=時鐘頻率fosc×1/12,不受SMOD位的值的影響。若fosc=12MHz,波特率為fosc/12即1Mb/s。(2)方式2波特率=(2SMOD/64)×fosc若fosc=12MHz:SMOD=0波特率=187.5kb/s;SMOD=1波特率=375kb/s

(3)方式1或方式3時,波特率為:

波特率=(2SMOD/32)×T1的溢出率實際設(shè)定波特率時,T1常設(shè)置為方式2定時(自動裝初值)這種方式不僅操作方便,也可避免因軟件重裝初值而帶來的定時誤差。實際使用時,為避免煩雜的初值計算,常用的波特率和初值X間的關(guān)系列成表。有兩點需要注意:時鐘振蕩頻率為12MHz或6MHz時,表中初值X和相應的波特率之間有一定誤差。例如,F(xiàn)DH的對應的理論值是10416波特(時鐘6MHz)。與9600波特相差816波特,消除誤差可以調(diào)整時鐘振蕩頻率fosc實現(xiàn)。例如采用的時鐘振蕩頻率為11.0592MHz。(2)如果串行通訊選用很低的波特率,例如,波特率選為55,可將定時器T1設(shè)置為方式1定時。但在這種情況下,T1溢出時,需用在中斷服務程序中重新裝入初值。中斷響應時間和執(zhí)行指令時間會使波特率產(chǎn)生一定的誤差,可用改變初值的方法加以調(diào)整。例6-3

若8031單片機的時鐘振蕩頻率為11.0592MHz,選用T1為方式2定時作為波特率發(fā)生器,波特率為2400b/s,求初值。

上述結(jié)果可直接從表中查到。這里時鐘振蕩頻率選為11.0592MHz,就可使初值為整數(shù),從而產(chǎn)生精確的波特率。6.3串行通信應用舉例1.方式0應用MCS-51單片機串行口的方式0為同步移位寄存器方式,外接一個串入并出移位寄存器,可以擴展為一個并行口。注意:所用移位寄存器最好帶有輸出允許控制端,避免在數(shù)據(jù)串行輸出期間,并行口輸出不穩(wěn)定現(xiàn)象?!緫靡弧苛魉疅舨捎?0C51的串行口外接CD4094擴展8位并行口,如圖6-14所示,CD4094的各個輸出端均接一發(fā)光二極管,要求發(fā)光二極管從左到右流水顯示。圖6-14流水燈顯示電路圖

ORG0000H LJMPMAIN ORG2000HMAIN: MOVSCON,#00H;置串行口工作方式0 MOVA,#80H:最高位燈先亮

CLRP1.1;關(guān)閉并行輸出(避象傳輸過程中,各LED的“暗紅”現(xiàn)象)OUT0: MOVSBUF,A;開始串行輸出OUT1: JNBTI,OUT1;輸出完否?

CLRTI;完了,清TI標志,以備下次發(fā)送

SETBP1.1;打開并行口輸出

ACALLDELAY;延時一段時間

RRA;循環(huán)右移

CLRP1.1;關(guān)閉并行輸出

SJMPOUT0;循環(huán)DELAY: …………;延時子程序,不再重復

END2.異步通信應用串行口方式1和方式3都是常用的異步通信方式,方式1為8位數(shù)據(jù)位,方式3為9位數(shù)據(jù)位,兩種方式的波特率都是受定時器T1的溢出率控制。在用方式1或方式3實現(xiàn)串行異步通信時,初始化程序要設(shè)定串行口的工作方式,并對定時器T1實現(xiàn)初始化,即設(shè)定定時器方式和定時器初值。此外,還要編寫發(fā)送子程序和接收子程序?!緫枚奎c對點通信單片機1中有5個存放在30H~34H單元中數(shù)據(jù)發(fā)送給單片機2,單片機2收到該5個數(shù)據(jù)要存放在50H~54H單元中,要求采用4.8k波特率進行傳送,兩臺單片機振蕩頻率均為6MHz。

兩臺單片機發(fā)送和接收數(shù)據(jù)之前需要一“握手”信號“55H”,互相詢問對方是否準備好。任一單片機接收到對方的“握手”信號“55H”,均置本機的FO(PSW.5)標志位為“1”,表明本機已經(jīng)知道對方準備就緒,可以進行發(fā)送和接收操作。兩臺單片機的定時器T1采用工作方式2,可以避免計數(shù)溢出后用軟件重裝定時初值。先計算定時器T1的初值,取SMOD=0:定時器T1的溢出率=波特率×32/2SMOD=4800×32/20=153600然后求出其對應的計數(shù)初值為:

X=2n-[fosc/(T1的溢出率×12)]=28-[6×106/(153600×12)]253=0FDH

為了簡便起見,采用10位的串口方式1進行異步通信,參考程序如下:單片機1的程序:

ORG0000H LJMPSTART ORG0023H ;串口中斷入口地址

LJMPSEND ORG1000HSTART: MOVTMOD,#20H ;T1工作模式2 MOVSCON,#50H ;置串行口工作方式

MOVPCON,#00H ;SMOD=0,該語句也可 ;不要,因為復位后PCON=00H MOVTL1,#0FDH MOVTH1,#0FDH ;初始化波特率

SETBEA ;開中斷

SETBES ;允許串行口中斷

SETBTR1 ;T1開始工作INT: MOVSBUF,#55H ;發(fā)送出“握手”信號

MOVR1,#0FFHLOOP: NOP DJNZR1,LOOP ;

JNBFO,INT MOVSBUF,30H ;MOVR0,#31H LJMP$SEND: JBF0,LAB1 MOVA,SBUF ;

CJNEA,#55H,LAB0 SETBFO ;LAB0: CLRRI ;CLRTI ;

RETILAB1: MOVSBUF,@R0 INCR0 CJNER0,#35H,LAB2 CLRESLAB2: CLRTI ;

RETI END單片機2的程序:

ORG0000HLJMPSTARTORG0023H ;串口中斷入口地址

LJMPINPUTORG1000HSTART: MOVTMOD,#20H ;T1工作模式2MOVSCON,#50H ;置串行口工作方式

MOVPCON,#00H ;SMOD=0,該語

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論