并行串行接口51-2012_第1頁
并行串行接口51-2012_第2頁
并行串行接口51-2012_第3頁
并行串行接口51-2012_第4頁
并行串行接口51-2012_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第五節(jié)

I/O接口電路5-1 單片機(jī)并行接口PIO第六節(jié) 串行I/O接口SIO5-1 并行接口PIOPIO:并行I/O接口用于微型機(jī)與外部設(shè)備之間并行傳送數(shù)據(jù)。5-1-1 MCS-51的并行接口4個(gè)8位雙向并行IO接口:P0.0~P0.7、P1.0~P1.7、P2.0~P2.7、P3.0~P3.7。多功能I/O接口,CPU按當(dāng)前操作自動(dòng)進(jìn)行功能切換。片內(nèi)接口寄存器在SFR中的映象地址:

1.I/O數(shù)據(jù)鎖存器:P0、P1、P2、P3、SBUF

2.I/O控制/狀態(tài)寄存器:

IE、IP、TCON、TMOD、SCON、PCON一.PIO接口內(nèi)部結(jié)構(gòu):輸出鎖存器、輸出驅(qū)動(dòng)器、輸入緩沖器及多路功能切換電路。 輸入從I/O引腳上輸入信號,讀信號使引腳信號通過下三態(tài)門進(jìn)入內(nèi)部總線。為保證可靠輸入,先寫入“1”

。

MOV P1,#0FFH ;使輸出驅(qū)動(dòng)器截止

MOV A,P1 ;輸入二.PIO接口的三種操作

1.輸出鎖存:輸出將使數(shù)據(jù)寫入輸出鎖存器。輸出指令: MOV P1,A

MOV P1.0,C2.輸入三態(tài):輸入從I/O引腳上輸入信號,讀信號打開,引腳信號通過下三態(tài)門進(jìn)入內(nèi)部總線。為保證可靠輸入,先寫入“1”

MOV P1,#0FFH ;使輸出驅(qū)動(dòng)器截止

MOV A,P1 ;輸入3.讀-修改-寫:修改輸出鎖存器的內(nèi)容。鎖存器中的數(shù)據(jù)通過上三態(tài)門進(jìn)入內(nèi)部總線,修改后再寫入到鎖存器中。讀-修改-寫指令:PIO為目的操作數(shù)的指令

ANLP1,A三.PIO的使用

1.P0口:并行雙向接口或系統(tǒng)總線DB0~7/AB0~72.P1口:稱為用戶I/O接口。對片內(nèi)EPROM編程時(shí),用作EPROM低8位地址信號線。 四.接口負(fù)載能力

P0驅(qū)動(dòng)8個(gè)TTL電路,P1,P2,P3可驅(qū)動(dòng)4個(gè)TTL電路3.P2口:雙向I/O接口或高8位地址總線AB8~15對讀寫片外存儲器后,引腳仍恢復(fù)輸出鎖存器的內(nèi)容。

MOV P2,#20H MOV R0,#00 MOVXA,@R04.P3口:雙向并行接口和第二功能: 串行接口引腳:TXD、RXD

中斷輸入引腳:INT0、INT1

定時(shí)器輸入引腳:T0、T1

讀寫控制線:RD、WR

P1、P2和P3為準(zhǔn)雙向口。五.應(yīng)用舉例例:用4個(gè)發(fā)光二極管對應(yīng)顯示4個(gè)開關(guān)的開合狀態(tài)。 如P1.0合則P1.4亮。MCS-51P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.01.無條件傳送方式:指示燈立即反映開關(guān)狀態(tài)。 ORG0000H AJMPMAIN ORG0100HMAIN:ORLA,#0FH MOVP1,A MOVA,P1 SWAPA MOVP1,A SJMPMAIN2.中斷傳送方式:

先設(shè)好開關(guān)狀態(tài),然后發(fā)出中斷請求信號,改變指示燈亮滅狀態(tài)。 ORG 0000H AJMPMAIN ORG 0003H AJMPIOINT ORG 0100HMAIN:SETBIT0 SETBEX0 SETBEAHERE:SJMPHERE ORG 0500HIOINT:MOVA,#0FFH MOV P1,A MOV A,P1 SWAPA MOV P1,A RETIP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0INT0MCS-51K+5V第六節(jié) 串行I/O接口SIO一.串行通訊的基本方式(一).異步通訊以字符為傳送單位用起始位和停止位標(biāo)識每個(gè)字符的開始和結(jié)束字符間隔不固定,只需字符傳送時(shí)同步。異步通訊常用格式:一個(gè)字符幀異步通訊的雙方需要兩項(xiàng)約定:1.字符格式一幀字符位數(shù)的規(guī)定:數(shù)據(jù)位,校驗(yàn)位,起始位和停止位。2.波特率(位/秒)對傳送速率的規(guī)定例:要求每秒傳送120個(gè)字符,每幀為10位。解:B=120×10=1200波特 每位0.83ms(二).同步通訊以一串字符為一個(gè)傳送單位,字符間不加標(biāo)識位,在一串字符開始用同步字符標(biāo)識,硬件要求高,通訊雙方須嚴(yán)格同步。D4D0D1D2D3D5D6D7停止位起始位二.串行接口功能1.發(fā)送器:并串?dāng)?shù)據(jù)格式轉(zhuǎn)換,添加標(biāo)識位和校驗(yàn)位,一幀發(fā)送結(jié)束,設(shè)置結(jié)束標(biāo)志,申請中斷。2.接收器:串并數(shù)據(jù)格式轉(zhuǎn)換,檢查錯(cuò)誤,去掉標(biāo)識位,保存有效數(shù)據(jù),設(shè)置接收結(jié)束標(biāo)志,申請中斷。3.控制器:接收編程命令和控制參數(shù),設(shè)置工作方式:同步/異步、字符格式、波特率、校驗(yàn)方式、數(shù)據(jù)位與同步時(shí)鐘比例等。三.串行數(shù)據(jù)傳送方向單工通訊:數(shù)據(jù)單向傳送。半雙工通訊:數(shù)據(jù)可分時(shí)雙向傳送。全雙工通訊:可同時(shí)進(jìn)行發(fā)送和接收。發(fā)送器接收器發(fā)送器接收器接收器發(fā)送器接收器發(fā)送器發(fā)送器接收器

6-1 MCS-51串行接口

1個(gè)全雙工串行接口,可同時(shí)進(jìn)行發(fā)送和接收。串行接口輸入/輸出引腳:TXD(P3.1)、RXD(P3.0)數(shù)據(jù)格式:按不同方式,一幀位數(shù)8/10/11發(fā)送/接收時(shí),數(shù)據(jù)皆低位在前。一幀字符發(fā)送/接收結(jié)束,置位標(biāo)志位(TI/RI)并申請SIO中斷。中斷控制:中斷允許位ES中斷入口:0023HD0D1D2D3D4D5D6D7停止位起始位D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D8停止位起始位D7一.串行接口控制1.數(shù)據(jù)緩沖器SBUF發(fā)送SBUF和接收SBUF共用一個(gè)地址99H 。 1)發(fā)送SBUF存放待發(fā)送的8位數(shù)據(jù),寫入SBUF將同時(shí) 啟動(dòng)發(fā)送。 發(fā)送指令:

MOV SBUF,A2)接收SBUF存放已接收成功的8位數(shù)據(jù),供CPU讀取。 讀取串行口接收數(shù)據(jù)指令:

MOVA,SBUF一.串行接口控制1.數(shù)據(jù)緩沖器SBUF2.串行口控制/狀態(tài)寄存器SCON(98H)SM0,SM1:選擇串行口4種工作方式。SM2:多機(jī)控制位,用于多機(jī)通訊。REN:允許接收控制位,REN=1,允許接收;REN=0,禁止接收。TB8發(fā)送的第9位數(shù)據(jù)位,可用作校驗(yàn)位和地址/數(shù)據(jù)標(biāo)識位RB8:接收的第9位數(shù)據(jù)位或停止位TI:發(fā)送中斷標(biāo)志,發(fā)送一幀結(jié)束,TI=1,必須軟件清零RI:接收中斷標(biāo)志,接收一幀結(jié)束,RI=1,必須軟件清零SM0SM1SM2RENTB8RB8TIRISM0SM1方式0000111021133.節(jié)電控制寄存器PCONSMOD(PCON.7):波特率加倍控制位。SMOD=1,波特率加倍,SMOD=0,則不加倍。二.串行接口的工作方式

SM0,SM1選擇四種工作方式。(1)方式0:同步移位寄存器方式。用于擴(kuò)展并行I/O接口。1.一幀8位,無起始位和停止位。2.RXD:數(shù)據(jù)輸入/輸出端。

TXD:同步脈沖輸出端,每個(gè)脈沖對應(yīng)一個(gè)數(shù)據(jù)位。3.波特率B=fosc/12

如:fosc=12MHz, B=1MHz,每位數(shù)據(jù)占1s。4.發(fā)送過程:寫入SBUF,啟動(dòng)發(fā)送,一幀發(fā)送結(jié)束,TI=1。

接收過程:REN=1且RI=0,啟動(dòng)接收,一幀接收完畢,RI=1。

發(fā)送時(shí)序?qū)懭隨BUFRXD輸出TXDTID0D1D2D3D4D5D6D7寫REN=1RI=0RXD輸入RI接收時(shí)序(a)(b)(2)方式1。8位數(shù)據(jù)異步通訊方式。1.一幀10位:8位數(shù)據(jù)位,1個(gè)起始位(0),1個(gè)停止位(1)。2.RXD:接收數(shù)據(jù)端。

TXD:發(fā)送數(shù)據(jù)端。3.波特率:用T1作為波特率發(fā)生器,B=(2SMOD/32)×T1溢出率。4.發(fā)送:寫入SBUF,同時(shí)啟動(dòng)發(fā)送,一幀發(fā)送結(jié)束,TI=1。

接收:REN=1,允許接收。接收完一幀,使RI=1。寫入SBUF采樣(a)發(fā)送時(shí)序圖TXD數(shù)據(jù)輸出TID0D1D2D3D4D5D6D7停止位起始位RXD輸入數(shù)據(jù)(b)接收時(shí)序圖D0D1D2D3D4D5D6D7停止位起始位RI檢測負(fù)跳變當(dāng)REN=1,CPU開始采樣RXD引腳負(fù)跳變信號,若出現(xiàn)負(fù)跳變,才進(jìn)入數(shù)據(jù)接收狀態(tài),先檢測起始位,若第一位為0,繼續(xù)接收其余位。數(shù)據(jù)采樣速率為波特率16倍頻,在數(shù)據(jù)位中間,用第7、8、9個(gè)脈沖采樣3次數(shù)據(jù)位,并3中取2保留采樣值。(3)方式2和方式39位數(shù)據(jù)異步通訊方式。1.一幀為11位:9位數(shù)據(jù)位,1個(gè)起始位(0),1個(gè)停止位(1)。 第9位數(shù)據(jù)位在TB8/RB8中,常用作校驗(yàn)位和多機(jī)通訊標(biāo)識位。2.RXD:接收數(shù)據(jù)端,TXD:發(fā)送數(shù)據(jù)端。3.波特率:方式2:B=(2SMOD/64)×fosc。

方式3:B=(2SMOD/32)×T1溢出率。4.發(fā)送:先裝入TB8,寫入SBUF并啟動(dòng)發(fā)送,發(fā)送結(jié)束,TI=1。接收:REN=1,允許接收。接收完一幀,若RI=0且第9位為1(或SM2=0),將接收數(shù)據(jù)裝入接收SBUF,第9位裝入RB8,使RI=1;否則丟棄接收數(shù)據(jù),不置位RI。發(fā)送時(shí)序?qū)懭隨BUFTXD輸出TIRXD輸入接收時(shí)序RID0D1D2D3D4D5D6TB8停止位起始位D7D0D1D2D3D4D5D6RB8停止位起始位D7檢測負(fù)跳變(4)計(jì)算波特率方式0為固定波特率:B=fosc/12 方式2可選兩種波特率:B=(2SMOD/64)×fosc 方式1、3為可變波特率,用T1作波特率發(fā)生器。

B=(2SMOD/32)×T1溢出率T1為方式2的時(shí)間常數(shù):X=28-t/T溢出時(shí)間:t=(28-X)T=(28-X)×12/foscT1溢出率=1/t=fosc/[12×(2n-X)]

波特率B=(2SMOD/32)×fosc/[12×(28-X)]串行口方式1、3,根據(jù)波特率選擇T1工作方式,計(jì)算時(shí)間常數(shù)。T1選方式2:TH1=X=28-fosc/12×2SMOD/(32×B)6-2 串行口的應(yīng)用串行口初始化編程格式:

SIO:MOVSCON,#控制狀態(tài)字;寫方式字且TI=RI=0 (MOVPCON,#80H) ;波特率加倍

(MOVTMOD,#20H) ;T1作波特率發(fā)生器

(MOVTH1,#X) ;選定波特率

(MOVTL1,#X) (SETBTR1) (SETBEA) ;開串行口中斷

(SETBES)發(fā)送程序:先發(fā)送一個(gè)字符,等待TI=1后再發(fā)送下一個(gè)字符。1.查詢方式:TRAM: MOV A,@R0 ;取數(shù)據(jù)

MOV SBUF,A ;發(fā)送一個(gè)字符WAIT: JBC TI,NEXT ;等待發(fā)送結(jié)束

SJMP WAITNEXT: INC R0 ;準(zhǔn)備下一次發(fā)送

SJMP TRAM2.中斷方式:

ORG 0023H ;串行口中斷入口

AJMPSINTMAIN: … ;初始化編程

TRAM: MOV A,@R0 ;取數(shù)據(jù)

MOV SBUF,A ;發(fā)送第一個(gè)字符

H: SJMP H ;其它工作

SINT: CLRTI ;中斷服務(wù)程序

INC R0 MOV A,@R0 ;取數(shù)據(jù)

MOV SBUF,A ;發(fā)送下一個(gè)字符

RETI接收程序:REN=1、RI=0等待接收,當(dāng)RI=1,從SBUF讀取數(shù)據(jù)。1.查詢方式:WAIT: JBC RI,NEXT ;查詢等待

SJMP WAITNEXT: MOV A,SBUF ;讀取接收數(shù)據(jù)

MOV @R0,A ;保存數(shù)據(jù)

INC R0 ;準(zhǔn)備下一次接收

SJMP WAIT2.中斷方式:

ORG 0023H AJMP RINTMAIN: … ;初始化編程

H: SJMP H ;其它任務(wù)

RINT: CLR RI ;清中斷標(biāo)志

MOV A,SBUF ;讀取接收數(shù)據(jù)

MOV @R0,A ;保存數(shù)據(jù)

INC R0 RETI(一)串行口方式0用于擴(kuò)展單片機(jī)的并行I/O接口。串行口實(shí)現(xiàn):并行→串行的數(shù)據(jù)轉(zhuǎn)換74LS165/74LS164實(shí)現(xiàn):串行→并行的數(shù)據(jù)轉(zhuǎn)換。(二)異步通訊程序舉例1.發(fā)送程序:將片內(nèi)RAM50H起始單元的16個(gè)數(shù)由串行口發(fā)送。發(fā)送波特率為系統(tǒng)時(shí)鐘的32分頻,并進(jìn)行奇偶校驗(yàn)。MAINT:MOV SCON,#80H;串行口初始化

MOV PCON,#80H;波特率

SETB EA SETB ES ;開串行口中斷

MOV R0,#50H ;設(shè)數(shù)據(jù)指針

MOV R7,#10H ;數(shù)據(jù)長度LOOP: MOV A,@R0 ;取一個(gè)字符

MOV C,P ;加奇偶校驗(yàn)

MOV TB8,C MOV SBUF,A ;啟動(dòng)一次發(fā)送HERE: SJMP HERE ;CPU執(zhí)行其它任務(wù)SM0SM1SM2RENTB8RB8TIRI

ORG 0023H ;串行口中斷入口 AJMP TRANI

TRANI: PUSH A ;保護(hù)現(xiàn)場

PUSH PSW CLR TI ;清發(fā)送結(jié)束標(biāo)志

DJNZ R7,NEXT ;是否發(fā)送完?

CLR ES ;發(fā)送完,關(guān)閉串行口中斷 SJMP TEND NEXT: INC R0 ;未發(fā)送完,修改指針

MOV A,@R0 ;取下一個(gè)字符

MOV C,P ;加奇偶校驗(yàn)

MOV TB8,C MOV SBUF,A ;發(fā)送一個(gè)字符

POP PSW ;恢復(fù)現(xiàn)場

POP A TEND: RETI ;中斷返回2.接收程序:串行輸入16個(gè)字符,存入片內(nèi)RAM的50H起始單元,串行口波特率為2400(設(shè)晶振為11.0592MHz),。RECS: MOV SCON,#50H;串行口方式1允許接收 MOV TMOD,#20H;T1方式2定時(shí) MOV TL1,#0F4H ;寫入T1時(shí)間常數(shù) MOV TH1,#0F4H SETBTR1 ;啟動(dòng)T1 MOV R0,#50H ;設(shè)數(shù)據(jù)指針 MOV R7,#10H ;接收數(shù)據(jù)長度 WAIT: JBC RI,NEXT ;等待串行口接收 SJMPWAIT NEXT: MOV A,SBUF ;讀取接收字符 MOV

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論