單片機(jī)第四章外圍模塊_第1頁
單片機(jī)第四章外圍模塊_第2頁
單片機(jī)第四章外圍模塊_第3頁
單片機(jī)第四章外圍模塊_第4頁
單片機(jī)第四章外圍模塊_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

單片機(jī)第四章外圍模塊1第1頁,共106頁,2023年,2月20日,星期一§4-1并行口及其應(yīng)用51系列單片機(jī)的并行口,按特性可分類為:單一的準(zhǔn)雙向口(如89C52的P1.2~P1.7)多功能復(fù)用的準(zhǔn)雙向口(如89C52的P1.0、P1.1,P3.0~P3.7)可作地址總線輸出口的準(zhǔn)雙向口(P2)可作地址/數(shù)據(jù)總線口的三態(tài)雙向口(P0)2第2頁,共106頁,2023年,2月20日,星期一每個I/O線均由鎖存器,輸出電路和輸入緩沖器組成。每一條口線可獨(dú)立用作輸入和輸出。作輸出時可鎖存數(shù)據(jù),輸入時可緩沖數(shù)據(jù)。CPU對口的讀操作有兩種:①讀—修改—寫操作(讀口鎖存器狀態(tài))例:ANLP0,A ;(P0)←(P0)∧(A)ORLP0,#data;(P0)←(P0)∨dataDECP0;(P0)←(P0)-1②讀引腳操作(讀口引腳上外部輸入信息)例MOVA,P13第3頁,共106頁,2023年,2月20日,星期一4第4頁,共106頁,2023年,2月20日,星期一§4-1-1P0口P0口是一個三態(tài)雙向口,可作為地址/數(shù)據(jù)分時復(fù)用口,也可作為通用I/O接口。其1位的結(jié)構(gòu)原理如下圖所示。P0口由8個這樣的電路組成。5第5頁,共106頁,2023年,2月20日,星期一P0口1位結(jié)構(gòu)圖起輸出鎖存作用,8個鎖存器構(gòu)成了SFR—P0V1、V2組成輸出驅(qū)動器,以增大帶負(fù)載能力三態(tài)門1是引腳輸入緩沖器讀鎖存器端口6第6頁,共106頁,2023年,2月20日,星期一2.地址/數(shù)據(jù)分時復(fù)用功能

當(dāng)P0口作為地址/數(shù)據(jù)分時復(fù)用總線時,可分為兩種情況:一種是從P0口輸出地址或數(shù)據(jù),另一種是從P0口輸入數(shù)據(jù)。

7第7頁,共106頁,2023年,2月20日,星期一在訪問片外存儲器而需從P0口輸出地址或數(shù)據(jù)信號時,控制信號應(yīng)為高電平“1”,使轉(zhuǎn)換開關(guān)MUX把反相器4的輸出端與V1接通,同時把與門3打開。1)當(dāng)?shù)刂坊驍?shù)據(jù)為“1”時,經(jīng)反相器4使V1截止,而經(jīng)與門3使V2導(dǎo)通,P0.x引腳上出現(xiàn)相應(yīng)的高電平“1”;

2)當(dāng)?shù)刂坊驍?shù)據(jù)為"0"時,經(jīng)反相器4使V1導(dǎo)通而V2截止,引腳上出現(xiàn)相應(yīng)的低電平"0"。這樣就將地址/數(shù)據(jù)的信號輸出。8第8頁,共106頁,2023年,2月20日,星期一3.通用I/O接口功能

當(dāng)P0口作為通用I/O口使用,在CPU向端口輸出數(shù)據(jù)時,對應(yīng)的控制信號為0,轉(zhuǎn)換開關(guān)把輸出級與鎖存器Q端接通,同時因與門3輸出為0使V2截止,此時,輸出級是漏極開路電路。當(dāng)寫脈沖加在鎖存器時鐘端CLK上時,與內(nèi)部總線相連的D端數(shù)據(jù)取反后出現(xiàn)在Q端,又經(jīng)輸出V1反相,在P0引腳上出現(xiàn)的數(shù)據(jù)正好是內(nèi)部總線的數(shù)據(jù)。當(dāng)要從P0口輸入數(shù)據(jù)時,引腳信息仍經(jīng)輸入緩沖器進(jìn)入內(nèi)部總線。9第9頁,共106頁,2023年,2月20日,星期一總之:一P0口作為一般I/O口使用

1P0口用作輸出口:必須外接上拉電阻,才有高電平輸出。2P0口作輸入口:先向端口鎖存器寫入“1”。二P0口作為地址/數(shù)據(jù)總線使用1以P0口引腳輸出低8位地址或數(shù)據(jù)信息2由P0口輸入數(shù)據(jù)三P0口可驅(qū)動8個LSTTL電路10第10頁,共106頁,2023年,2月20日,星期一§4-1-2P1口(準(zhǔn)雙向口)11第11頁,共106頁,2023年,2月20日,星期一①P1.0、P1.1為多功能雙向口,P1.2~P1.7為單一功能準(zhǔn)雙向口。

②P1口的第一功能是準(zhǔn)雙向口,每一位可分別定義為輸入線或輸出線。

③輸出驅(qū)動部分由場效應(yīng)管V1與內(nèi)部上拉電阻組成。當(dāng)其某位輸出高電平時,可以提供上拉電流負(fù)載。12第12頁,共106頁,2023年,2月20日,星期一④P1的某一位作為輸入線時,該位的口鎖存器必須保持“1”。使輸出場效應(yīng)管截止。該引腳才可由內(nèi)部拉高電路拉成高電平,或由外部電路拉成低電平。

⑤P1口具有驅(qū)動4個LSTTL負(fù)載的能力。13第13頁,共106頁,2023年,2月20日,星期一14第14頁,共106頁,2023年,2月20日,星期一§4-1-3P2口(準(zhǔn)雙向口)15第15頁,共106頁,2023年,2月20日,星期一

當(dāng)作為準(zhǔn)雙向通用I/O口使用時:控制信號使轉(zhuǎn)換開關(guān)接向左側(cè),鎖存器Q端經(jīng)反相器3接V1,其工作原理與P1相同,也具有輸入、輸出、端口操作三種工作方式,負(fù)載能力也與P1相同。

16第16頁,共106頁,2023年,2月20日,星期一1系統(tǒng)中外接程序存儲器時:P2口輸出程序存儲器的高8位地址,不作I/O口使用。2系統(tǒng)中無外接程序存儲器,而擴(kuò)展有片外RAM的系統(tǒng)中:①片外RAM的容量<256B:P2口仍做輸入/輸出口使用。使用R0或R1作地址指針。②片外RAM的容量>256B:P2口不能做輸入/輸出口,而做系統(tǒng)擴(kuò)展的高8位地址總線口使用。使用DPTR、P2R0、P2R1作地址指針。17第17頁,共106頁,2023年,2月20日,星期一§4-1-4P3口(準(zhǔn)雙向口)18第18頁,共106頁,2023年,2月20日,星期一P3口是一多功能口,既做準(zhǔn)雙向口又做特殊輸入輸出口。1做通用I/O口使用:

P3口做輸入使用,應(yīng)由軟件向口鎖存器寫“1”。19第19頁,共106頁,2023年,2月20日,星期一2做第二功能使用:某位做第二功能使用該位D鎖存器Q應(yīng)被硬件自動置“1”。

P3.0RXDP3.5T1P3.1TXD(出)P3.6WR(出)P3.2INT0P3.7RD(出)P3.3INT1P3.4T03P3口具有驅(qū)動4個LSTTL負(fù)載的能力。20第20頁,共106頁,2023年,2月20日,星期一I/O端口的操作方式:(1)輸出數(shù)據(jù)方式:CPU通過一條數(shù)據(jù)傳送指令就可以把輸出數(shù)據(jù)寫入P0~P3的端口鎖存器,然后通過輸出驅(qū)動器送到端口引腳線。例如,下面的指令均可在P0口輸出數(shù)據(jù)。

MOVP0,AANLP0,#dataORLP0,A(2)讀端口數(shù)據(jù)方式:

CPU讀入的這個數(shù)據(jù)并非端口引腳線上的數(shù)據(jù)。讀端口數(shù)據(jù)可以直接讀端口。例如,下面的指令均可以從P1口輸入數(shù)據(jù)。

MOVA,P1MOV20H,P1MOVR0,P1MOV@R0,P121第21頁,共106頁,2023年,2月20日,星期一(3)讀端口引腳方式:讀端口引腳方式可以從端口引腳上讀入信息。在這種方式下,CPU首先必須使欲讀端口引腳所對應(yīng)的鎖存器置1,然后才能讀端口引腳。因此,用戶在讀引腳時必須先置位鎖存器后讀,連續(xù)使用兩條指令。例如,下面的程序可以讀P1引腳上的低4位信號。

MOVP1,#0FH;置位P1引腳的低4位

MOVA,P1;讀P1引腳上的低4位信號送累加器A22第22頁,共106頁,2023年,2月20日,星期一§4-1-5并行口的應(yīng)用1外接蜂鳴器2利用可控硅控制加熱電路3BCD碼撥碼盤的接口

BCD碼撥碼盤構(gòu)造——一個撥碼盤可以輸入1位十進(jìn)制數(shù)據(jù)。撥碼盤撥到某個位置時,控制線分別與4位數(shù)據(jù)線中某幾位接通。接通線定義為“1”,不通的線定義為“0”。23第23頁,共106頁,2023年,2月20日,星期一§4-2定時器及其應(yīng)用定時器功能:

1定時操作

2測量外部輸入信號

3定時輸出

4監(jiān)視系統(tǒng)正常工作24第24頁,共106頁,2023年,2月20日,星期一§4-2-1定時器的結(jié)構(gòu)和工作原理

1定時器由一個N位計數(shù)器、計數(shù)時鐘源控制電路、狀態(tài)和控制寄存器等組成。2計數(shù)脈沖有兩個來源:①外部的脈沖源②系統(tǒng)的時鐘振蕩器。內(nèi)部時鐘外部時鐘↗N位計數(shù)器TFTMODTCON中斷25第25頁,共106頁,2023年,2月20日,星期一3用作定時器時,每經(jīng)過一個機(jī)器周期,計數(shù)器自動加1,直到計數(shù)溢出;用作計數(shù)器時,外部時鐘脈沖加在定時器的外輸入端T0(P3.4)或T1(P3.5),每出現(xiàn)一次負(fù)跳變,計數(shù)器加1。4兩個模擬開關(guān),左邊決定定時/計數(shù)器的工作狀態(tài),右邊決定脈沖源是否加在計數(shù)器的輸入端。516位的計數(shù)器由兩個8位SFRTH和TL組成。6定時器工作不占用CPU時間,除非定時器/計數(shù)器溢出,才能中斷CPU的當(dāng)前操作。26第26頁,共106頁,2023年,2月20日,星期一定時器/計數(shù)器T0、T1的結(jié)構(gòu)框圖27第27頁,共106頁,2023年,2月20日,星期一§4-2-2定時器/計數(shù)器T0和T1一方式寄存器TMOD(89H)1不能進(jìn)行位尋址,只能用字節(jié)尋址。復(fù)位時,TMOD所有位為0熟悉各位功能T1方式字段T0方式字段GATEC/TM1M0GATEC/TM1M028第28頁,共106頁,2023年,2月20日,星期一①GATE——門控位“1”:定時器的計數(shù)受外部引腳輸入電平的控制“0”:定時器的計數(shù)不受外部引腳輸入電平的控制②C/T——功能選擇位“1”:計數(shù)功能“

0”:定時功能③M1M0——工作方式選擇位29第29頁,共106頁,2023年,2月20日,星期一

適于T0,兩個8位計數(shù)器M1M0工作方式方式說明00013位定時器/計數(shù)器01116位定時器/計數(shù)器102具有自動重裝初值的8位定時器/計數(shù)器113

30第30頁,共106頁,2023年,2月20日,星期一二控制寄存器TCON(88H)1既可字節(jié)尋址又可位尋址。復(fù)位時,TCON各位為0例:SETBTR1;啟動定時器T1工作熟悉各位功能D7D6D5D4D3D2D1D08FH8EH8DH8CH8BH8AH89H88HTF1TR1TF0TR0IE1IT1IE0IT031第31頁,共106頁,2023年,2月20日,星期一TF1——定時器/計數(shù)器T1的溢出標(biāo)志位TR1——定時器/計數(shù)器T1的運(yùn)行控制位TF0——定時器/計數(shù)器T0的溢出標(biāo)志位TR0——定時器/計數(shù)器T0的運(yùn)行控制位IE1——外部中斷1下降沿觸發(fā)標(biāo)志位IE0——外部中斷0下降沿觸發(fā)標(biāo)志位IT1——外部中斷1觸發(fā)類型選擇位IT0——外部中斷0觸發(fā)類型選擇位32第32頁,共106頁,2023年,2月20日,星期一三定時器/計數(shù)器的初始化初始化即將控制字寫入定時器/計數(shù)器的過程。初始化一般步驟:1寫入初值TH0、TL0或TH1、TL12對TMOD賦值3對IE賦值(有中斷產(chǎn)生時)4①若用軟件啟動,則僅把TR0或TR1置“1”;②若用外中斷引腳電平啟動,則還需給外引腳加啟動電平。33第33頁,共106頁,2023年,2月20日,星期一四定時器/計數(shù)器的4種工作方式1方式034第34頁,共106頁,2023年,2月20日,星期一

方式0是一個13位的定時器/計數(shù)器,由TL0的低5位和TH0的8位組成。定時時間為T=12*(213-a)/foscs最大定時時間:M=213=8192T35第35頁,共106頁,2023年,2月20日,星期一例7:已知晶振頻率fosc=6MHZ,若使用T0方式0產(chǎn)生10ms定時中斷,試對T0進(jìn)行初始化編程。

MOVTH0,#63HMOVTL0,#18HSETBTR0MOVIE,#82HRET36第36頁,共106頁,2023年,2月20日,星期一例:T0工作于方式0,要求在P1.0引腳上產(chǎn)生周期為2ms的方波輸出(fosc=6MHZ)

ORG0000HAJMPMAINORG000BHAJMPINQPORG0030HMAIN:MOVTMOD,#00HMOVTH0,#0F0HMOVTL0,#0CHSETBTR0;啟動T0SETBET0;允許T0中斷

SETBEA;開放CPU中斷

AJMP$;定時中斷等待37第37頁,共106頁,2023年,2月20日,星期一

ORG4000H;中斷服務(wù)程序INQP:MOVTH0,#0F0H;重寫定時常數(shù)

MOVTL0,#0CHCPLP1.0;P1.0變反輸出

RETI

38第38頁,共106頁,2023年,2月20日,星期一2方式1

方式1是一個16位定時器/計數(shù)器,結(jié)構(gòu)和操作方式與方式0基本相同。定時時間為T=12*(216-a)/foscs最大定時時間:M=216=65536T39第39頁,共106頁,2023年,2月20日,星期一例:設(shè)fosc=12MHz,T0工作于方式1,產(chǎn)生50ms定時中斷,TF0為高級中斷源。試編寫主程序中的初試化程序和中斷服務(wù)程序,使P1.0產(chǎn)生周期為1秒的方波。MAIN:MOVSP,#EFHMOVTH0,#3CHMOVTL0,#0B0HMOVTMOD,#1MOVIP,#240第40頁,共106頁,2023年,2月20日,星期一

MOVIE,#82HSETBTR0MOV30H,#0AHPTF0:ORLTL0,#0B0H;中斷服務(wù)程序

MOVTH0,#3CHDJNZ30H,PTF0RMOV30H,#0AHCPLP1.0PTF0R:RETI41第41頁,共106頁,2023年,2月20日,星期一用查詢法:

MOV30H,#0AHMOVTH0,#3CHMOVTL0,#0B0HMOVTMOD,#1SETBTR0L2:JBCTF0,L1SJMPL2L1:MOVTH0,#3CHMOVTL0,#0B0H42第42頁,共106頁,2023年,2月20日,星期一

DJNZ30H,L2MOV30H,#0AHCPLP1.0SJMPL243第43頁,共106頁,2023年,2月20日,星期一3方式2

方式2是能重置初值的8位定時器/計數(shù)器,TL0作為8位計數(shù)器,TH0作為計數(shù)初值寄存器。適于用做較精確的定時脈沖信號發(fā)生器。定時時間T=12*(28-a)/foscs

最大定時時間:M=28=256T44第44頁,共106頁,2023年,2月20日,星期一定時器/計數(shù)器方式2的邏輯結(jié)構(gòu)45第45頁,共106頁,2023年,2月20日,星期一MOVTMOD,#60H;設(shè)置T1為方式2計數(shù)

MOVTH1,#9CH;賦初值

MOVTL1,#9CHSETBTR1DE:JBCTF1,RE;查詢計數(shù)溢出

AJMPDERE:CPLP1.0AJMPDE例:用定時器1在方式2計數(shù),要求每計滿100次,將P1.0端取反。外部計數(shù)信號由P3.5引入,每跳變一次計數(shù)器加1100=28-a;a=156=9CH46第46頁,共106頁,2023年,2月20日,星期一例:當(dāng)P3.4引腳上的電平發(fā)生負(fù)跳變時,從P1.0輸出一個500μs的同步脈沖。請編程序?qū)崿F(xiàn)該功能。查詢方式,fosc=6MHz。47第47頁,共106頁,2023年,2月20日,星期一解:(1)模式選擇

選T0為模式2,外部事件計數(shù)方式。當(dāng)P3.4引腳上的電平發(fā)生負(fù)跳變時,T0計數(shù)器加1,溢出標(biāo)志TF0置1;然后改變T0為500μs定時工作方式,并使P1.0輸出由1變?yōu)?。T0定時到產(chǎn)生溢出,使P1.0輸出恢復(fù)高電平,T0又恢復(fù)外部事件計數(shù)方式。如圖所示。48第48頁,共106頁,2023年,2月20日,星期一(2)計算初值

T0工作在外部事件計數(shù)方式,當(dāng)計數(shù)到28時,再加1計數(shù)器就會溢出。設(shè)計數(shù)初值為X,當(dāng)再出現(xiàn)一次外部事件時,計數(shù)器溢出。則:X+1=28

X=28

-1=11111111B=0FFH

T0工作在定時工作方式,設(shè)晶振頻率為6MHz,500μs相當(dāng)于250個機(jī)器周期。因此,初值X為(28-X)×2μs=500μs

X=6=06H49第49頁,共106頁,2023年,2月20日,星期一(3)程序清單START:MOVTMOD,#06H;設(shè)置T0為模式2,外部計數(shù)方式

MOVTL0,#0FFH;T0計數(shù)器初值

MOVTH0,#0FFHSETBTR0;啟動T0計數(shù)

LOOP1:JBCTF0,PTFO1;查詢T0溢出標(biāo)志,;TF0=1時轉(zhuǎn),且清TF0=0SJMPLOOP1;50第50頁,共106頁,2023年,2月20日,星期一PTFO1:CLRTR0;停止計數(shù)

MOVTMOD,#02H;設(shè)置T0為模式2,定時方式

MOVTL0,#06H;送初值,定時500μsMOVTH0,#06HCLRP1.0;P1.0清0

SETBTR0;啟動定時500μsLOOP2:JBCTF0,PTFO2;查詢T0溢出標(biāo)志,;TF0=1時轉(zhuǎn),且清TF0=0;(第一個500μs到否?)

SJMPLOOP2;等待

PTFO2:SETBP1.0;P1.0置1CLRTR0;停止計數(shù)

SJMPSTART51第51頁,共106頁,2023年,2月20日,星期一定時器/計數(shù)器方式3的邏輯結(jié)構(gòu)4方式3TH052第52頁,共106頁,2023年,2月20日,星期一

方式3只適用于T0,T0分為兩個獨(dú)立的8位計數(shù)器TL0和TH0。一般T1用作串行口波特率發(fā)生器。最大定時時間:M=28=256T例用定時器T0,分別產(chǎn)生兩個方波,一個周期為200s,另一個周期為400s(fosc=9.216MHZ)。53第53頁,共106頁,2023年,2月20日,星期一解:定時初值計算TL0=28-9.216*106*100*10-6/12=256-76.8=179.2

轉(zhuǎn)換十六進(jìn)制為0B3HTH0=28-9.216*106*200*10-6/12=256-153.6=102.4

轉(zhuǎn)換十六進(jìn)制為66H54第54頁,共106頁,2023年,2月20日,星期一

ORG0000HAJMPMAINORG000BH;TL0中斷入口

AJMPITL0ORG001BH;TH0中斷入口

AJMPITH0ORG0100HMAIN:MOVSP,#60HMOVTMOD,#03H

55第55頁,共106頁,2023年,2月20日,星期一

MOVTL0,#0B3HMOVTH0,#66HSETBTR0;啟動TL0初值

SETBTR1;啟動TH0初值

SETBET0;允許TL0中斷

SETBET1;允許TH0中斷

SETBEA;CPU中斷開放

AJMP$

56第56頁,共106頁,2023年,2月20日,星期一

ORG0200HITL0:MOVTL0,#0B3HCPLP1.0;輸出方波200sRETIITH0:MOVTH0,#66HCPLP1.1;輸出方波400sRETI57第57頁,共106頁,2023年,2月20日,星期一五門控位的應(yīng)用GATE位是控制外部輸入脈沖對定時計數(shù)器的控制。當(dāng)為“1”時,允許外部輸入電平控制啟、停定時器。利用這個特性可測量外部輸入脈沖的寬度。例:利用T0門控位測試INT0引腳上出現(xiàn)的正脈沖的寬度,將所測得值高位存入片內(nèi)71H單元,低位存入片內(nèi)70H單元。(fosc=12MHz)測試時,應(yīng)在/INT0為低電平時,設(shè)TR0為1;當(dāng)/INT0變高時,啟動計數(shù);當(dāng)/INT0再變低時,停止計數(shù)。該計數(shù)值即被測正脈沖寬度。58第58頁,共106頁,2023年,2月20日,星期一MOVTMOD,#09H;T0定時器方式,GATE=1MOVTL0,#00HMOVTH0,#00HMOVR0,#70HJBP3.2,$;等待P3.2變低SETBTR0;啟動T0準(zhǔn)備工作JNBP3.2,$;等待P3.2變高JBP3.2,$;等待P3.2再次變低CLRTR0;停止計數(shù)MOV@R0,TL0;存放計數(shù)低字節(jié)INCR0MOV@R0,TH0;存放計數(shù)高字節(jié)SJMP$59第59頁,共106頁,2023年,2月20日,星期一§4-3串行接口UART一兩種基本的通信方式(a)并行通信;(b)串行通信60第60頁,共106頁,2023年,2月20日,星期一二串行通信傳輸方式(a)單工方式;(b)半雙工方式;(c)全雙工方式61第61頁,共106頁,2023年,2月20日,星期一三串行通信兩種基本方式1異步通信①異步通信中數(shù)據(jù)或字符是一幀一幀傳送。②幀即為一個字符的完整通信格式,又稱幀格式。在幀格式中,一個字符由4部分組成:起始位、數(shù)據(jù)位、奇偶校驗位、停止位。

串行異步傳送的字符格式62第62頁,共106頁,2023年,2月20日,星期一2同步通信

數(shù)據(jù)或字符開始處是由一同步字符來指示,并由時鐘實現(xiàn)發(fā)送端和接收端同步。四波特率(Baudrate)①波特率就是數(shù)據(jù)的傳送速率,即每秒鐘傳送的二進(jìn)制位數(shù),單位為位/秒。②要求發(fā)送端與接收端的波特率必須一致。63第63頁,共106頁,2023年,2月20日,星期一§4-3-1串行接口的組成和特性

51系列單片機(jī)的串行口是全雙工異步串行通信接口。一串行口結(jié)構(gòu)1波特率發(fā)生器主要由T1、T2及內(nèi)部的一些控制開關(guān)和分頻器組成。提供串行口的時鐘信號即TCLK、RCLK。64第64頁,共106頁,2023年,2月20日,星期一串行口結(jié)構(gòu)框圖65第65頁,共106頁,2023年,2月20日,星期一注意:接收器是雙緩沖結(jié)構(gòu),在前一個字節(jié)被從接收緩沖器SBUF讀出之前,第二個字節(jié)即開始被接收(串行輸入至移位寄存器),但是,在第二個字節(jié)接收完畢而前一個字節(jié)CPU未讀取時,會丟失前一個字節(jié).66第66頁,共106頁,2023年,2月20日,星期一2串行口的內(nèi)部包含——①串行數(shù)據(jù)緩沖寄存器SBUF數(shù)據(jù)接收緩沖器(只讀出不寫入)和數(shù)據(jù)發(fā)送緩沖器(只寫入不讀出)。物理上隔離,共用一個地址(99H)。當(dāng)向SBUF發(fā)“寫”命令時(執(zhí)行MOVSBUF,A

),即從片內(nèi)總線向發(fā)送SBUF寫入數(shù)據(jù),并開始由TXD引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完使TI=1。在滿足串行口接收中斷標(biāo)志位RI(SCON.0)=0的條件下,置允許接收位REN(SCON.4)=1就會接收一幀數(shù)據(jù)進(jìn)入移位寄存器,并裝載到接收SBUF中,同時使RI=1。當(dāng)發(fā)讀SBUF命令時(執(zhí)行MOVA,SBUF),便由接收SBUF取出信息通過內(nèi)部總線送CPU。67第67頁,共106頁,2023年,2月20日,星期一②串行口控制寄存器③串行數(shù)據(jù)輸入/輸出引腳接收方式下,串行數(shù)據(jù)從RXD(P3.0)輸入。串行口內(nèi)部在接收緩沖器之前還有移位寄存器,構(gòu)成串行接收雙緩沖結(jié)構(gòu)。避免數(shù)據(jù)接收重疊。發(fā)送方式下,串行數(shù)據(jù)從TXD(P3.1)輸出。④串行口控制邏輯68第68頁,共106頁,2023年,2月20日,星期一二串行口控制1串行口控制寄存器SCON(98H)

①SM0和SM1SM0SM1SM2RENTB8RB8TIRISM0SM1工作方式功能波特率000擴(kuò)展移位寄存器fosc/120118位UART由定時器控制1029位UARTfosc/32fosc/641139位UART由定時器控制69第69頁,共106頁,2023年,2月20日,星期一②SM2方式2和方式3的多機(jī)通信控制位

方式0,SM2=0。方式1,若SM2=1,只有接收到有效停止位,接收中斷RI才置1。方式2和方式3中,如SM2=1,則接收到的第9位數(shù)據(jù)(RB8)為0時不啟動接收中斷標(biāo)志RI(即RI=0),并且將接收到的前8位數(shù)據(jù)丟棄;RB8為1時,才將接收到的前8位數(shù)據(jù)送入SBUF,并置位RI,產(chǎn)生中斷請求。當(dāng)SM2=0時,則不論第9位數(shù)據(jù)為0或1,都將前8位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中斷請求。該功能用于多機(jī)通信中。70第70頁,共106頁,2023年,2月20日,星期一③REN允許串行接收位

1—允許接收;0—禁止接收由軟件置1或清0,相當(dāng)于串行接收的開關(guān)。在串行通信接收控制過程中,如果滿足RI=0和REN=1(允許接收)的條件,就允許接收,一幀數(shù)據(jù)就裝載入接收SBUF中。④TB8發(fā)送數(shù)據(jù)D8位

在方式2和方式3時,TB8為所要發(fā)送的第9位數(shù)據(jù)。在多機(jī)通信中,以TB8位的狀態(tài)表示主機(jī)發(fā)送的是地址還是數(shù)據(jù):TB8=0為數(shù)據(jù),TB8=1為地址;也可用作數(shù)據(jù)的奇偶校驗位。該位由軟件置位或復(fù)位。在方式0或方式1中,該為未用71第71頁,共106頁,2023年,2月20日,星期一⑤RB8接收數(shù)據(jù)D8位在方式2和方式3時,接收到的第9位數(shù)據(jù),可作為奇偶校驗位或地址幀或數(shù)據(jù)幀的標(biāo)志。方式1時,若SM2=0,則RB8是接收到的停止位。在方式0時,不使用RB8位。⑥TI發(fā)送中斷標(biāo)志在方式0時,當(dāng)發(fā)送數(shù)據(jù)第8位結(jié)束后,或在其它方式發(fā)送停止位后,由內(nèi)部硬件使TI置位,向CPU請求中斷。意味著向CPU提供“發(fā)送緩沖器SBUF已空”的信息,CPU可以準(zhǔn)備發(fā)送下一幀數(shù)據(jù)。CPU在響應(yīng)中斷后,必須用軟件清零。此外,TI也可供查詢使用。72第72頁,共106頁,2023年,2月20日,星期一⑦RI接收中斷標(biāo)志位在方式0時,當(dāng)接收數(shù)據(jù)的第8位結(jié)束后,或在其它方式接收到停止位的中間時由內(nèi)部硬件使RI置位,向CPU請求中斷。表示一幀數(shù)據(jù)接收結(jié)束,并已裝入接收SBUF中,要求CPU取走數(shù)據(jù)。在CPU響應(yīng)中斷后,也必須用軟件清零。RI也可供查詢使用。73第73頁,共106頁,2023年,2月20日,星期一2特殊功能寄存器PCON

SMOD位是串行口波特率系數(shù)控制位,為1時使波特率加倍。其余位是掉電方式控制位,與串行口無關(guān)。SMOD74第74頁,共106頁,2023年,2月20日,星期一§4-3-2串行接口的工作原理一方式01方式0為同步移位寄存器輸入/輸出方式,常用于擴(kuò)展并行I/O口。2數(shù)據(jù)由RXD串行輸入/輸出,TXD輸出移位脈沖。3數(shù)據(jù)傳輸波特率固定為fosc/12。4接收/發(fā)送的是8位數(shù)據(jù),傳輸時低位在前。75第75頁,共106頁,2023年,2月20日,星期一輸出:當(dāng)執(zhí)行寫SBUF的指令時(MOVSBUF,A),啟動串行數(shù)據(jù)發(fā)送。從低位開始串行輸出。當(dāng)完成一個字節(jié)的輸出后就停止移位,并置位TI。輸入:在REN=1,RI=0時啟動串行口接收。當(dāng)外部移位寄存器內(nèi)容移入內(nèi)部移位寄存器,并寫入SBUF,則置位RI,停止移位,完成一個字節(jié)的輸入。注意:每當(dāng)發(fā)送或接收完8位數(shù)據(jù)時,由硬件將發(fā)送中斷TI或接收中斷RI標(biāo)志置“1”;CPU響應(yīng)TI或RI中斷請求時,不會清除標(biāo)志,必須由軟件清“0”.76第76頁,共106頁,2023年,2月20日,星期一二方式11方式1時,串行口為10位通用異步接口。2數(shù)據(jù)傳輸波特率由定時/計數(shù)器T1和T2的溢出決定,由程序設(shè)定。當(dāng)T2CON中RCLK和TCLK置位時,由T2作接收/發(fā)送的波特率發(fā)生器;當(dāng)RCLK和TCLK都為0時,由T1作接收/發(fā)送的波特率發(fā)生器。3數(shù)據(jù)從引腳TXD端輸出,從引腳RXD輸入。77第77頁,共106頁,2023年,2月20日,星期一發(fā)送當(dāng)數(shù)據(jù)寫入發(fā)送緩沖器時,啟動發(fā)送器開始發(fā)送。8位數(shù)據(jù)發(fā)送完,置位TI=1,并申請中斷,通知CPU可發(fā)送下一個數(shù)據(jù)。接收在REN=1的前提下,確認(rèn)是真正起始位“0”后,開始接收一幀數(shù)據(jù)。當(dāng)RI=0且SM2=0時,數(shù)據(jù)被有效接收。將接收到的數(shù)據(jù)裝入串行口的SBUF,并置位RI.78第78頁,共106頁,2023年,2月20日,星期一三方式2和方式31CPU向發(fā)送緩沖器寫入數(shù)據(jù)就啟動串行口發(fā)送。發(fā)送完畢,使TI=1。2接收時,先置REN為“1”,將RI清“0”。再根據(jù)SM2狀態(tài)和所接收到RB8狀態(tài)決定串口在信息到來后是否會使RI=1,申請中斷,接收數(shù)據(jù)。當(dāng)SM2=0,不管RB8狀態(tài),將RI置1—串口接收當(dāng)SM2=1,RB8=1時,多機(jī)通信,接收信息為地址,將RI置1—串口接收

RB8=0時,接收信息為數(shù)據(jù),但不發(fā)給本從機(jī),此時RI不置1—數(shù)據(jù)丟失79第79頁,共106頁,2023年,2月20日,星期一§4-3-3波特率一方式0:波特率=振蕩器頻率/12二方式2:波特率=2SMOD*振蕩器頻率/64三方式1、3(T1產(chǎn)生波特率):波特率=2SMOD*振蕩器頻率/[32*12(256-(TH1))]注:記住當(dāng)振蕩器頻率選用11.0592MHZ時,對于常用波特率,能正確計算T1的初值。80第80頁,共106頁,2023年,2月20日,星期一§4-3-4多機(jī)通信原理在主從式多機(jī)系統(tǒng)中:

1主機(jī)發(fā)出的信息有兩類。一類為地址,用來確定需要和主機(jī)通信的從機(jī),特征是串行傳送的第9位數(shù)據(jù)為1;另一類是數(shù)據(jù),特征是串行傳送的第9位數(shù)據(jù)為0。2對從機(jī)來說,在接收時,若RI=0,則只要SM2=0,接收總能實現(xiàn);而若SM2=1,則發(fā)送的第9位TB8必須為1接收才能進(jìn)行。81第81頁,共106頁,2023年,2月20日,星期一1主機(jī)首先發(fā)出要求通信的從機(jī)地址信號。此時,所有從機(jī)的SM2都為“1”,所有從機(jī)均收到地址信號。2從機(jī)判斷主機(jī)發(fā)出的地址信號是否與本從機(jī)號相符。相符的從機(jī)SM2“0”,反之為“1”。3主機(jī)發(fā)送數(shù)據(jù)幀。僅SM2=0的從機(jī)可收到。82第82頁,共106頁,2023年,2月20日,星期一§4-3-5串行口的應(yīng)用和編程一串行口應(yīng)用同一印板內(nèi),兩個單片機(jī)串行口可直接通信。單片機(jī)與PC機(jī)之間利用串行口通信,必須進(jìn)行電平轉(zhuǎn)換。二串行口編程串行口初始化編程:選擇串行口工作方式,波特率,允許串行口中斷。即對SCON、PCON、TMOD、TCON、TH1、TL1、IE、IP、SBUF編程。83第83頁,共106頁,2023年,2月20日,星期一例1:編寫程序,功能為對串行口初始化為方式1輸入/輸出,fosc=11.0592MHZ,波特率為9600,先在串行口上輸出字符串“MCS-51”,接著讀串行口上輸入的字符,又將該字符從串行口上輸出。

MOVTMOD,#20HMOVTH1,#0FDHMOVTL1,#0FDHSETBTR1MOVSCON,#52HMOVR4,#0MOVDPTR,#TSAB84第84頁,共106頁,2023年,2月20日,星期一LP1:MOVA,R4MOVCA,@A+DPTRJZLP6LP3:JBCTI,LP2SJMPLP3LP2:MOVSBUF,AINCR4SJMPLP1LP6:JBCRI,LP5SJMPLP6LP5:MOVA,SBUFLP8:JBCTI,LP7SJMPLP8LP7:MOVSBUF,ASJMPLP6TSAB:DB‘MCS-51’DB0AH,0DH,085第85頁,共106頁,2023年,2月20日,星期一例2:89C52串行口按雙工方式進(jìn)行數(shù)據(jù)收發(fā),要求波特率為1200,串口工作在方式1。編寫有關(guān)的通信程序。設(shè)發(fā)送數(shù)據(jù)區(qū)的首地址為20H,接收數(shù)據(jù)區(qū)的首地址為40H,fosc為11.0592MHz。解:雙工通信要求收、發(fā)能同時進(jìn)行。實際上,收、發(fā)操作主要是在串行接口進(jìn)行,CPU只是把數(shù)據(jù)從接收緩沖器讀出和把數(shù)據(jù)寫入發(fā)送緩沖器。數(shù)據(jù)傳送用中斷方式進(jìn)行,響應(yīng)中斷以后,通過檢測是RI置位還是TI置位來決定CPU是進(jìn)行發(fā)送操作還是接收操作。發(fā)送和接收都通過調(diào)用子程序來完成。86第86頁,共106頁,2023年,2月20日,星期一

主程序

MOVTMOD,#20H;T1設(shè)為模式2MOVTL1,#0E8H;MOVTH1,#0E8H;SETBTR1;啟動定時器1MOVSCON,#50H;設(shè)置為方式1,REN=1MOVR0,#20H;發(fā)送數(shù)據(jù)區(qū)首址

MOVR1,#40H;接收數(shù)據(jù)區(qū)首址

ACALLSOUT;先輸出一個字符

SETBESSETBEA……

中斷服務(wù)程序

ORG0023H;串行口中斷入口

AJMPSBR1;轉(zhuǎn)至中斷服務(wù)程序

ORG0100HSBR1:JNBRI,SEND;TI=1,為發(fā)送中斷

ACALLSIN;RI=1,為接收中斷

SJMPNEXT;轉(zhuǎn)至統(tǒng)一的出口SEND:ACALLSOUT;調(diào)用發(fā)送子程序NEXT:RETI;中斷返回

87第87頁,共106頁,2023年,2月20日,星期一發(fā)送子程序SOUT:CLRTIMOVA,@R0;取發(fā)送數(shù)據(jù)到AINCR0;修改發(fā)送數(shù)據(jù)指針

MOVSBUF,A;發(fā)送

RET;返回接收子程序

SIN:CLRRIMOVA,SBUF;讀出接收緩沖區(qū)內(nèi)容

MOV@R1,A;讀入接收緩沖區(qū)

INCR1;修改接收數(shù)據(jù)指針

RET;返回88第88頁,共106頁,2023年,2月20日,星期一用串行口進(jìn)行雙機(jī)異步通信——

例3:將甲機(jī)片內(nèi)RAM50H—5FH單元中的數(shù)據(jù)塊從串行口輸出。定義在方式3下發(fā)送,TB8作奇偶校驗位。采用定時器1方式2作波特率發(fā)生器,波特率為1200,fosc=11.0592MHz。

使乙機(jī)從甲機(jī)接收16個字節(jié)數(shù)據(jù)塊,并存入片外3000H—300FH單元。接收過程中要求判奇偶標(biāo)志RB8。若出錯則置F0標(biāo)志為1,反之為0,然后返回。89第89頁,共106頁,2023年,2月20日,星期一甲機(jī)發(fā)送子程序——MOVTMOD,#20HMOVTL1,#0EBHMOVTH1,#0E8HSETBTR1MOVSCON,#0C0HMOVR0,#50HMOVR7,#10HTRS:MOVA,@R0MOVC,PMOVTB8,CMOVSBUF,AWAIT:JNBTI,$CLRTIINCR0DJNZR7,TRSRET90第90頁,共106頁,2023年,2月20日,星期一乙機(jī)接收子程序——

MOVTMOD,#20HMOVTL1,#0EBHMOVTH1,#0E8HSETBTR1MOVSCON,#0C0HMOVDPTR,#3000HMOVR7,#10HSETBRENWAIT:JNBRI,$CLRRIMOVA,SBUFJNBPSW.0,PZJNBRB8,ERRSJMPYESPZ:JBRB8,ERRYES:MOVX@DPTR,AINCDPTRDJNZR7,WAITCLRPSW.5RETERR:SETBPSW.5RET注意:雙機(jī)通信時,兩機(jī)應(yīng)用相同的工作方式和波特率。91第91頁,共106頁,2023年,2月20日,星期一§4-3-6RS232C總線和電平轉(zhuǎn)換器RS-232C是由美國電子工業(yè)協(xié)會(EIA)正式公布的,在異步串行通信中應(yīng)用最廣的標(biāo)準(zhǔn)總線(C表示此標(biāo)準(zhǔn)修改了三次)。它包括了按位串行傳輸?shù)碾姎夂蜋C(jī)械方面的規(guī)定,適用于短距離或帶調(diào)制解調(diào)器的通信場合。為了提高數(shù)據(jù)傳輸率和通信距離,EIA又公布了RS-422,RS-423和RS-485串行總線接口作準(zhǔn)。92第92頁,共106頁,2023年,2月20日,星期一

ELARS-232C是目前最常用的串行接口標(biāo)準(zhǔn),用于實現(xiàn)計算機(jī)與計算機(jī)之間、計算機(jī)與外設(shè)之間的數(shù)據(jù)通信。該標(biāo)準(zhǔn)的目的是定義數(shù)據(jù)終端設(shè)備(DTE)之間接口的電氣特性。一般的串行通信系統(tǒng)是指微機(jī)和調(diào)制解調(diào)器(modem),如圖。調(diào)制解調(diào)器叫數(shù)據(jù)電路終端設(shè)備(簡稱DCE)。RS-232C提供了單片機(jī)與單片機(jī)、單片機(jī)與PC機(jī)間串行數(shù)據(jù)通信的標(biāo)準(zhǔn)接口。通信距離可達(dá)到15m。93第93頁,共106頁,2023年,2月20日,星期一RS-232C接口的具體規(guī)定如下:

(l)范圍

RS-232C標(biāo)準(zhǔn)適用于DCE和DTE間的串行二進(jìn)制通信,最高的數(shù)據(jù)速率為19.2kb/s。如果不增加其他設(shè)備的話,RS-232C標(biāo)準(zhǔn)的電纜長度最大

溫馨提示

  • 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

提交評論