微型計算機原理及應用課件-第6章-6_第1頁
微型計算機原理及應用課件-第6章-6_第2頁
微型計算機原理及應用課件-第6章-6_第3頁
微型計算機原理及應用課件-第6章-6_第4頁
微型計算機原理及應用課件-第6章-6_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

6.6MCS-51單片機內(nèi)部串行口及其應用6.6.1.8051串行口結構1.串行數(shù)據(jù)發(fā)送電路由“SBUF(發(fā)送)”、“零檢測器”和“發(fā)送控制器“等電路組成,用于串行口的發(fā)送;2.串行數(shù)據(jù)接收電路由“SBUF(接收)”、“接收移位寄存器”和“接收控制器”等組成,用于串行口的接收。

SBUF(發(fā)送)和SBUF(接收),

8位緩沖寄存器,共用一個端口地址99H3.數(shù)據(jù)緩沖寄存器SBUFMOVSBUF,A(發(fā)送)產(chǎn)生寫SBUF脈沖,SBUF(發(fā)送)存放將要發(fā)送的字符數(shù)據(jù)

MOVA,SBUF(接收)產(chǎn)生讀SBUF脈沖,SBUF(接收)存放串行口接收到的字符數(shù)據(jù)4.串行通信時鐘

發(fā)送和接收都是在發(fā)送時鐘和接收時鐘控制下進行的,發(fā)送時鐘和接收時鐘都必須同字符位數(shù)的波特率保持一致。

時鐘可由主機頻率fosc經(jīng)過分頻后提供,也可由內(nèi)部定時器T1溢出率經(jīng)過16分頻后提供,定時器T1的溢出率受SMOD觸發(fā)器狀態(tài)的控制,SMOD位于電源控制寄存器PCON的最高位串行口的發(fā)送

MOVSBUF,A自動在發(fā)送字符前后添加起始位、停止位和其它控制位。

5.串行口數(shù)據(jù)發(fā)送與接收串行口的接收

啟動發(fā)送

接收電路連續(xù)接收到一幀字符后就自動的去掉起始位,并使接收中斷標志位RI=1,該標志位可供查詢,也可以向CPU提出中斷請求。CPU響應中斷后可以通過接收指令(MOVA,SBUF)把接收到的數(shù)據(jù)送入指定單元。6.6.2.串行口的工作方式控制8051單片機串行口包含4種工作方式1.方式0:同步移位收發(fā)方式。

在方式0下串行口SBUF用作移位寄存器,為8051單片機提供了連接串行設備的接口。此方式下TxD(P3.1)引腳輸出外部串行設備的移位脈沖,RxD(P3.0)引腳用作串行數(shù)據(jù)的輸入和輸出,其波特率固定為fosc/12,但是由于信號的衰減,傳輸距離一般不超過2米。2.方式1:雙機異步通信方式。方式1是雙機異步通信方式。字符幀格式為10位(8位數(shù)據(jù)位、1位起始位和1位停止位),波特率由定時器T1的溢出率決定。

其中SMOD為波特率倍增選擇,由PCON寄存器的最高位設置;fosc為8051單片機主時鐘頻率,一般選6MHz或12MHz;K為定時器T1的計數(shù)器長度,T1若選工作方式2,則K=8,N為定時器計數(shù)初值。

方式2和方式3字符幀格式為11位(比方式1多1個第9位:TB8/RB8),除波特率設置方式不同外其它無差別。方式3的波特率由定時器T1(溢出率/n)確定,方式2的波特率由2SMOD×fosc/64確定;方式2和方式3雖為多機異步通信方式,但是也可用于雙機之間通信,多機通信時TB8/RB8為多機通信控制位,雙機之間通信TB8/RB8可作其它用途(如奇偶校驗位)。3.方式2和方式3:多機異步通信方式。6.6.3.8051串行口工作方式設置1.串行口控制寄存器SCON(98H)(1)SM0和SM1:串行口方式控制位,設定串行口的工作方式

(2)SM2:多機通信控制位,方式2、3下用于多機通信時的狀態(tài)設置,其它方式應設置為0狀態(tài)。(3)REN:允許接收控制位。REN=0,則禁止串行口接收REN=1,則允許串行口接收(4)TB8:發(fā)送數(shù)據(jù)第9位,方式2、3時存放發(fā)送數(shù)據(jù)第9位。TB8由軟件置位或復位。2.電源控制寄存器PCON

其最高位SMOD可以設置串行口波特率倍數(shù),SMOD=1,方式1、方式2和方式3下波特率加倍。發(fā)送(TI=0)MOVSBUF,AA數(shù)據(jù)送入SBUF(發(fā)送)

RxD線發(fā)出8位數(shù)據(jù),TxD線發(fā)送同步脈沖。8位數(shù)據(jù)發(fā)送完后,TI由硬件置位,向CPU請求中斷(若中斷開放)。CPU響應中斷后先用軟件使TI清零,然后再給“SBUF(發(fā)送)”送下一個欲發(fā)送字符。6.6.4.8051串行口工作過程及應用

1.工作方式0。

SM2、TB8、RB8不起作用,應設置“0”態(tài)接收(RI=0和REN=1)串行數(shù)據(jù)由RxD線輸入,TxD線輸出同步脈沖。接收電路接收到8位數(shù)據(jù)后,RI自動置“1”并發(fā)出串行口中斷請求(若中斷開放)。CPU查詢到RI=1或響應中斷后便可通過MOVA,SBUF將

SBUF(接收)數(shù)據(jù)送入A。

例8051單片機系統(tǒng)晶振頻率fosc=6MHz,根據(jù)圖示線路連接,請編出發(fā)光二極管自左至右循環(huán)點亮的程序,設循環(huán)周期為8S。ORG0000HLJMPSTARTORG0100HSTART:MOVSCON,#00HCLRP1.0MOVA,#01HMOVSBUF,ASETBP1.0WAIT:JBCTI,SBVSJMPWAITSBV:LCALLDELAY1SCLRTIRLACLRP1.0MOVSBUF,ASJMPWAITENDORG0300HDELAY1S:MOVR7,#14HMOVTMOD,#01HMOVTH0,#3CHMOVTL0,#0B0HSETBTR0HERETF0,CONSJMPHERECON:DJNZR7,NEXTRETNEXT:MOVTH0,#3CHMOVTL0,#0B0HSJMPHERE定時器T0的1S延時子程序ORG0000HLJMPSTARTORG0023H

LJMPSBVORG0100HSTART:MOVSCON,#00HCLRP1.0MOVA,#01H

MOVIE,#90HMOVSBUF,ASETBP1.0WAIT:SJMPWAITORG0200HSBV:LCALL

DELAY1SCLRTIRLACLRP1.0MOVSBUF,ASJMPWAITEND例

根據(jù)圖示電路,編出8051單片機串行輸入開關量并把它存入20H單元的程序。要求控制開關KC=1時,8051單片機處于等待狀態(tài),KC=0時,8051單片機輸入開關量。

ORG0000HLJMPSTARTORG0100H

START:SETBP1.1

JBP1.0,

$CLRP1.1

MOVSCON,#10H

JNBRI,$

CLRRI

MOVA,

SBUF

MOV20H,A

SJMPSTART

END2.工作方式1。

接收電路確定RxD線上的起始位后,在移位脈沖的作用下依次接收數(shù)據(jù)幀,把停止位送入RB8中,而后將接收到的8位數(shù)據(jù)存入SBUF并置位接收中斷標志位RI,RI=1可向CPU發(fā)出中斷請求也可供查詢。

發(fā)送電路自動在8位發(fā)送數(shù)據(jù)前后分別添加1位起始位和1位停止位,而后在移位脈沖作用下通過TxD線依次發(fā)送數(shù)據(jù)幀,發(fā)送完成后TxD線恢復高電平且置位發(fā)送中斷標志位TI,TI=1可向CPU發(fā)出中斷請求也可供查詢。發(fā)送(TI=0)MOVSBUF,A接收(RI=0、REN=1和SM2=0)例已知8051單片機串行口采用方式1進行通信,設單片機主頻為6MHz,定時器T1用作波特率發(fā)生器(方式2),要求通信波特率為9600bps。被發(fā)送數(shù)據(jù)塊在內(nèi)部RAM的地址為TBLOCK單元,字符塊長度為LEN,字符塊長度LEN率先發(fā)送,用查詢法編寫串行口方式1發(fā)送程序。ORG0000HLJMPSTARTORG0100HTBLOCKDATA20HLENDATA14HSTART:MOVTMOD,#20HMOVTL1,#0FDHMOVTH1,#0FDHMOVPCON,#80HSETBTR1MOVSCON,#40HMOVR0,#TBLOCKMOVA,#LENMOVR2,AMOVSBUF,AHERE:JBCTI,TXSVESJMPHERETXSVE:CLRTIMOVA,@R0MOVSBUF,A

WAIT:JBCTI,NEXTSJMPWAITDJNZR2,NEXTSJMPSTOPNEXT:INCR0SJMPTXSVESTOP:SJMPSTOPEND例

已知8051單片機串行口采用方式1進行通信,設單片機主頻為6MHz,定時器T1用作波特率發(fā)生器(方式2),要求通信波特率為9600bps。接收數(shù)據(jù)塊在內(nèi)部RAM的首地址為RBLOCK單元,接收數(shù)據(jù)塊長度為LEN,用中斷法編寫串行口方式1下的接收程序。ORG0000HLJMPSTARTORG0023HLJMPREPORG0100HRBLOCKDATA30HLENDATA14HSTART:MOVTMOD,#20HMOVTL1,#0FDHMOVTH1,#0FDHMOVPCON,#80HSETBTR1MOVSCON,#50HMOVR0,#RBLOCKSETBEASETBESHERE:SJMPHEREORG0200H

REP:MOVR2,SBUFCLREARXD:CLRRIWAIT:JNBRI,WAITMOVA,SBUFMOV@R0,AINCR0DJNZR2,RXDSETBEARETIEND

多機通信時,SM2=0、REN=1、TB8/RB8做多機通信控制位。

雙機之間通信時,SM2=0、REN=1、TB8/RB8可做奇偶位。3.工作方式2和方式3。發(fā)送(TI=0)發(fā)送前要求把第9位數(shù)據(jù)位預先裝入SCON的TB8,由用戶安排,可以是奇偶校驗位或其他控制位。

SETBTB8

CLRTB8

MOVSBUF,A接收(RI=0\REN=1\SM2=0)RB8存放第9數(shù)據(jù)位。例

主從式8051單片機構成的多機通信系統(tǒng)如圖所示,設單片機主頻為6MHz,定時器T1用作波特率發(fā)生器(方式2),要求通信波特率為9600bps。請編出主機和從機的通信程序(1)主機SM2設為0,所有從機SM2設為1,以便接收主機發(fā)來的地址,主從機的REN均設為1。(2)主機向?qū)ぶ窂臋C發(fā)送地址時,第9數(shù)據(jù)位(TB8)設為1發(fā)送,以指示所有從機接收此地址。(3)所有從機在SM2=1、RB8=1和RI=0時,接收主機發(fā)來的從機地址,進入相應的中斷服務程序,并和本機地址比較以確認是否為被尋址從機。(4)被尋址從機通過指令清除SM2,以正常接收數(shù)據(jù),并向主機發(fā)回接收到的從機地址,供主機核對。未被尋址的從機保持SM2=1,并退出各自中斷服務程序。(5)完成主機和被尋址從機之間的數(shù)據(jù)通信,被尋址從機在通信完成后重新使SM2=1,并退出中斷服務程序,等待下次通信。

在多機通信中,主機通常把從機地址作為8位數(shù)據(jù)(TB8=1)發(fā)送。因此,8051構成的多機通信系統(tǒng)最多允許255臺從機(地址為00H-FEH),F(xiàn)FH作為復位控制命令由主機發(fā)送給從機,以便使被尋址從機的SM2=1。

在多機通信中,須傳送供主機或從機識別的命令或狀態(tài)字。

兩條控制命令為:00H-主機發(fā)送從機接收命令;01H-從機發(fā)送主機接收命令。以數(shù)據(jù)形式發(fā)送(既第9數(shù)據(jù)位TB8設為0)。

從機狀態(tài)字。該狀態(tài)字由被尋址從機發(fā)送,為主機所接收,用于指示從機的工作狀態(tài)。(1)主機程序。由主機程序和主機通信子程序組成。主程序用于定時器T1初始化、串行口初始化和傳遞主機通信子程序所需入口參數(shù)。通信子程序用于主機和從機間一個數(shù)據(jù)塊的傳送。程序中所用寄存器分配如下:

R0:存放主機發(fā)送數(shù)據(jù)塊始址

R1:存放主機接收數(shù)據(jù)塊始址

R2:存放被尋址的從機地址

R3:存放主機發(fā)出的命令

R4:存放發(fā)送數(shù)據(jù)塊長度

R5:存放接收數(shù)據(jù)塊長度ORG0000HLJMPSTART

ORG0100H

SLAVEDATA00H

COMMANDDATA00H/01HSTART:MOVTMOD,#20H

MOVTH1,#0F4H

MOVTL1,#0F4H

SETBTR1

MOVSCON,#0D8H

MOVPCON,#00H

MOVR0,#40HMOVR1,#20HMOVR2,#SLAVE

MOVR3,#COMMAND

MOVR4,#20

MOVR5,#20

LCALLMCOMMU

SJMP$

ORG0200HMCOMMU:MOVA,R2

MOVSBUF,A

JNBRI,

$

CLRRIMOVA,SBUFXRLA,R2

JZMTXD2

MTXD1:MOVSBUF,#0FFH

SETBTB8SJMPMCOMMU

MTXD2:CLRTB8

MOVSBUF,R3

JNBRI,$

CLRRIMOVA,SBUFJNBACC.7,MTXD3

SJMPMTXD11)主機主程序2)主機通信子程序

MTXD3:CJNER3,#00H,MRXDJNBACC.0,MTXD1

MTXD4:MOVSBUF,@R0

JNBTI,$

CLRTI

INCR0

DJNZR4,MTXD4

RETMRXD:JNBACC.1,MTXD1

MRXD1:JNBRI,$

CLRRIMOVA,SBUFMOV@R1,A

INCR1DJNZR5,MRXD1

RETEND(2)從機程序從機程序有從機主程序和從機中斷服務程序組成。主程序用于定時器T1初始化、串行口初始化和中斷初始化。中斷服務程序用于對主機的通信。在中斷服務程序中,SLAVE是從機的本機地址,F(xiàn)0H(即PSW.5)為本機發(fā)送就緒位地址,PSW.1=1為本機接收就緒位地址。寄存器分配為:

R0:存放發(fā)送數(shù)據(jù)塊始址

R1:存放接收數(shù)據(jù)塊始址

R2:存放發(fā)送數(shù)據(jù)塊長度

R3:存放接收數(shù)據(jù)塊長度

ORG0000HLJMPSTARTORG0023HLJMPSINTSBV

ORG0100H

SLAVEDATA00HSTART:MOVTMOD,#20HMOVTH1,#0F4H

MOVTL1,#0F4H

SETBTR1

MOVSCON,#0F8H

MOVPCON,#00HMOVR0,#20H

MOVR1,#40H

MOVR2,#20MOVR3,#20SETBEA

SETBES

CLRRISJMP$1)從機主程序LOOP1:MOVSBUF,@R0

JNBTI,$

CLRTIINCR0DJNZR2,LOOP1

SETBSM2SJMPRETURNSCHRX:JBPSW.1,SRXDMOVSBUF,#00HSETBSM2SJMPRETURN

SRXD:MOVSBUF,#01HLOOP2:JNBRI,$

CLRRIMOV@R1,SBUF

INCR1DJNZR3,LOOP2

SETBSM2SJMPRETURN

END

SRXD2:MOVA,SBUFCJNEA,#02H,NEXT

NEXT:JCSRXD3

CLRTIMOVSBUF,#80H

溫馨提示

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

評論

0/150

提交評論