




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第四章第四章 51系列單片機(jī)系列單片機(jī) 的功能模塊及應(yīng)用的功能模塊及應(yīng)用主要掌握并行口、串行口、定主要掌握并行口、串行口、定時(shí)器的結(jié)構(gòu)、工作原理及應(yīng)用時(shí)器的結(jié)構(gòu)、工作原理及應(yīng)用24-1 并行口及其應(yīng)用并行口及其應(yīng)用51系列單片機(jī)的并行口,按特性可分類為:?jiǎn)我坏臏?zhǔn)雙向口(如89C52的P1.2P1.7)多功能復(fù)用的準(zhǔn)雙向口(如89C52的P1.0、P1.1,P3.0P3.7)可作地址總線輸出口的準(zhǔn)雙向口(P2)可作地址/數(shù)據(jù)總線口的三態(tài)雙向口(P0)3每個(gè)I/O線均由鎖存器,輸出電路和輸入緩沖器組成。每一條口線可獨(dú)立用作輸入和輸出。作輸出時(shí)可鎖存數(shù)據(jù),輸入時(shí)可緩沖數(shù)據(jù)。CPU對(duì)口的讀操作有兩種
2、:讀修改寫操作(讀口鎖存器狀態(tài))例:ANL P0,A ;(P0)(P0)(A) ORL P0,#data ;(P0)(P0)data DEC P0 ;(P0)(P0) -1讀引腳操作(讀口引腳上外部輸入信息)例 MOV A,P1454-1-1 P0 口口 P0口是一個(gè)三態(tài)雙向口,可作為地址口是一個(gè)三態(tài)雙向口,可作為地址/數(shù)據(jù)分時(shí)復(fù)用口,也可作為通用數(shù)據(jù)分時(shí)復(fù)用口,也可作為通用I/O接口。接口。 其其1位的結(jié)構(gòu)原理如下圖所示。位的結(jié)構(gòu)原理如下圖所示。P0口由口由8個(gè)這樣的電路組成。個(gè)這樣的電路組成。6P0.x地址 /數(shù)據(jù) 控制D Q鎖存器CLK_QMUX&1V2V1讀引腳內(nèi)部總線讀 鎖存
3、器寫鎖存器VCC2134P0口口1位結(jié)構(gòu)圖位結(jié)構(gòu)圖起輸出鎖存作用,8個(gè)鎖存器構(gòu)成了SFRP0V1、V2組成輸出驅(qū)動(dòng)器,以增大帶負(fù)載能力三態(tài)門1是引腳輸入緩沖器讀鎖存器端口7 2地址/數(shù)據(jù)分時(shí)復(fù)用功能 當(dāng)P0口作為地址/數(shù)據(jù)分時(shí)復(fù)用總線時(shí),可分為兩種情況:一種是從P0口輸出地址或數(shù)據(jù),另一種是從P0口輸入數(shù)據(jù)。 8在訪問(wèn)片外存儲(chǔ)器而需從P0口輸出地址或數(shù)據(jù)信號(hào)時(shí),控制信號(hào)應(yīng)為高電平“1”,使轉(zhuǎn)換開(kāi)關(guān)MUX把反相器4的輸出端與V1接通,同時(shí)把與門3打開(kāi)。1)當(dāng)?shù)刂坊驍?shù)據(jù)為“1”時(shí),經(jīng)反相器4使V1截止,而經(jīng)與門3使V2導(dǎo)通,P0.x引腳上出現(xiàn)相應(yīng)的高電平“1”; 2)當(dāng)?shù)刂坊驍?shù)據(jù)為0時(shí),經(jīng)反相器4
4、使V1導(dǎo)通而V2截止,引腳上出現(xiàn)相應(yīng)的低電平0。這樣就將地址/數(shù)據(jù)的信號(hào)輸出。93通用I/O接口功能 當(dāng)P0口作為通用I/O口使用,在CPU向端口輸出數(shù)據(jù)時(shí),對(duì)應(yīng)的控制信號(hào)為0,轉(zhuǎn)換開(kāi)關(guān)把輸出級(jí)與鎖存器Q端接通,同時(shí)因與門3輸出為0使V2截止,此時(shí),輸出級(jí)是漏極開(kāi)路電路輸出級(jí)是漏極開(kāi)路電路。當(dāng)寫脈沖加在鎖存器時(shí)鐘端CLK上時(shí),與內(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ù)時(shí),引腳信息仍經(jīng)輸入緩沖器進(jìn)入內(nèi)部總線。10總之:一 P0口作為一般I/O口使用 1 P0口用作輸出口:必須外接上拉電阻必須外接上拉電阻,才有高電平
5、輸出。2 P0口作輸入口:先向端口鎖存器寫入寫入“1”。二 P0口作為地址/數(shù)據(jù)總線使用1 以P0口引腳輸出低8位地址或數(shù)據(jù)信息2 由P0口輸入數(shù)據(jù)三 P0口可驅(qū)動(dòng)8個(gè)LSTTL電路114-1-2 P1口(準(zhǔn)雙向口)口(準(zhǔn)雙向口)12P1.0、P1.1為多功能雙向口, P1.2P1.7為單一功能準(zhǔn)雙向口。P1口的第一功能是準(zhǔn)雙向口,每一位可分別定義為輸入線或輸出線。輸出驅(qū)動(dòng)部分由場(chǎng)效應(yīng)管V1與內(nèi)部上拉電阻組成。當(dāng)其某位輸出高電平時(shí),可以提供上拉電流負(fù)載。89C5289C52P1.0K 0P0.0+5V10K K 013P1的某一位作為輸入線輸入線時(shí),該位的口鎖存器必須保持“1”。使輸出場(chǎng)效應(yīng)管
6、截止。該引腳才可由內(nèi)部拉高電路拉成高電平,或由外部電路拉成低電平。P1口具有驅(qū)動(dòng)4個(gè)LSTTL負(fù)載的能力。14154-1-3 P2口(準(zhǔn)雙向口口(準(zhǔn)雙向口)D Q鎖存器CLK_Q1P2.xV1讀引腳內(nèi)部總線讀鎖存器寫鎖存器地址控制VCC內(nèi)部上拉電阻MUX213圖2.11 P2口1位結(jié)構(gòu)圖16 當(dāng)作為準(zhǔn)雙向通用I/O口使用時(shí): 控制信號(hào)使轉(zhuǎn)換開(kāi)關(guān)接向左側(cè),鎖存器Q端經(jīng)反相器3接V1,其工作原理與P1相同,也具有輸入、輸出、端口操作三種工作方式,負(fù)載能力也與P1相同。 171 系統(tǒng)中外接程序存儲(chǔ)器時(shí):P2口輸出程序存儲(chǔ)器的高8位地址,不作I/O口使用。2 系統(tǒng)中無(wú)外接程序存儲(chǔ)器,而擴(kuò)展有片外RAM
7、的系統(tǒng)中: 片外RAM的容量256B:P2口仍做輸入/輸出口使用。使用R0或R1作地址指針。片外RAM的容量256B : P2口不能做輸入/輸出口,而做系統(tǒng)擴(kuò)展的高8位地址總線口使用。使用DPTR、P2R0、P2R1作地址指針。 184-1-4 P3口(準(zhǔn)雙向口)口(準(zhǔn)雙向口)19 P3口是一多功能口,既做準(zhǔn)雙向口又做特殊輸入輸出口。1 做通用I/O口使用: P3口做輸入使用,應(yīng)由軟件向口鎖存器寫“1”。202 做第二功能使用: 某位做第二功能使用該位D鎖存器Q應(yīng)被硬件自動(dòng)置“1”。 P3.0 RXD P3.5 T1 P3.1 TXD (出) P3.6 WR(出) P3.2 INT0 P3.7
8、 RD(出) P3.3 INT1 P3.4 T03 P3口具有驅(qū)動(dòng)4個(gè)LSTTL負(fù)載的能力。21I/OI/O端口的操作方式:端口的操作方式:(1 1)輸出數(shù)據(jù)方式)輸出數(shù)據(jù)方式:CPU通過(guò)一條數(shù)據(jù)傳送指令就可以把輸出通過(guò)一條數(shù)據(jù)傳送指令就可以把輸出數(shù)據(jù)寫入數(shù)據(jù)寫入P0P3的端口鎖存器,然后通過(guò)輸出驅(qū)動(dòng)器送到的端口鎖存器,然后通過(guò)輸出驅(qū)動(dòng)器送到端口引腳線。例如,下面的指令均可在端口引腳線。例如,下面的指令均可在P0口輸出數(shù)據(jù)??谳敵鰯?shù)據(jù)。 MOV P0, A ANL P0, #data ORL P0, A(2 2)讀端口數(shù)據(jù)方式:)讀端口數(shù)據(jù)方式: CPU讀入的這個(gè)數(shù)據(jù)并非端口引腳線上讀入的這個(gè)
9、數(shù)據(jù)并非端口引腳線上的數(shù)據(jù)。讀端口數(shù)據(jù)可以直接讀端口。例如,下面的指令均的數(shù)據(jù)。讀端口數(shù)據(jù)可以直接讀端口。例如,下面的指令均可以從可以從P1口輸入數(shù)據(jù)。口輸入數(shù)據(jù)。 MOV A, P1 MOV 20H, P1 MOV R0, P1 MOV R0, P122(3 3)讀端口引腳方式:)讀端口引腳方式:讀端口引腳方式可以從端口引腳讀端口引腳方式可以從端口引腳上讀入信息。在這種方式下,上讀入信息。在這種方式下,CPU首先必須使欲讀端首先必須使欲讀端口引腳所對(duì)應(yīng)的鎖存器口引腳所對(duì)應(yīng)的鎖存器置置1,然后才能讀端口引腳。,然后才能讀端口引腳。因此,用戶在讀引腳時(shí)必須先因此,用戶在讀引腳時(shí)必須先置位置位鎖存
10、器后讀,連續(xù)鎖存器后讀,連續(xù)使用兩條指令。例如,下面的程序可以讀使用兩條指令。例如,下面的程序可以讀P1引腳上的引腳上的低低4位信號(hào)。位信號(hào)。 MOV P1, #0FH ; 置位置位P1引腳的低引腳的低4位位 MOV A, P1 ; 讀讀P1引腳上的低引腳上的低4位信號(hào)送累加器位信號(hào)送累加器A234-1-5 并行口的應(yīng)用并行口的應(yīng)用1 外接蜂鳴器2 利用可控硅控制加熱電路3 BCD碼撥碼盤的接口 BCD碼撥碼盤構(gòu)造一個(gè)撥碼盤可以輸入1位十進(jìn)制數(shù)據(jù)。撥碼盤撥到某個(gè)位置時(shí),控制線分別與4位數(shù)據(jù)線中某幾位接通。接通線定義為“1”,不通的線定義為“0”。244-2 定時(shí)器及其應(yīng)用定時(shí)器及其應(yīng)用定時(shí)器功
11、能:定時(shí)器功能: 1 定時(shí)操作定時(shí)操作 2 測(cè)量外部輸入信號(hào)測(cè)量外部輸入信號(hào) 3 定時(shí)輸出定時(shí)輸出 4 監(jiān)視系統(tǒng)正常工作監(jiān)視系統(tǒng)正常工作254-2-1定時(shí)器的結(jié)構(gòu)和工作原理定時(shí)器的結(jié)構(gòu)和工作原理1 定時(shí)器由一個(gè)N位計(jì)數(shù)器、計(jì)數(shù)時(shí)鐘源控制電路、狀態(tài)和控制寄存器等組成。 2 計(jì)數(shù)脈沖有兩個(gè)來(lái)源:外部的脈沖源系統(tǒng)的時(shí)鐘振蕩器。內(nèi)部時(shí)鐘外部時(shí)鐘N位計(jì)數(shù)器TFTMOD TCON中斷中斷263 用作定時(shí)器時(shí),每經(jīng)過(guò)一個(gè)機(jī)器周期,計(jì)數(shù)用作定時(shí)器時(shí),每經(jīng)過(guò)一個(gè)機(jī)器周期,計(jì)數(shù)器自動(dòng)加器自動(dòng)加1,直到計(jì)數(shù)溢出;用作計(jì)數(shù)器時(shí),直到計(jì)數(shù)溢出;用作計(jì)數(shù)器時(shí),外部時(shí)鐘脈沖加在定時(shí)器的外輸入端外部時(shí)鐘脈沖加在定時(shí)器的外輸入
12、端T0(P3.4)或或T1(P3.5),每出現(xiàn)一次負(fù)跳變,每出現(xiàn)一次負(fù)跳變,計(jì)數(shù)器加計(jì)數(shù)器加1。4 兩個(gè)模擬開(kāi)關(guān),左邊決定定時(shí)兩個(gè)模擬開(kāi)關(guān),左邊決定定時(shí)/計(jì)數(shù)器的工計(jì)數(shù)器的工作狀態(tài),右邊決定脈沖源是否加在計(jì)數(shù)器的作狀態(tài),右邊決定脈沖源是否加在計(jì)數(shù)器的輸入端。輸入端。5 16位的計(jì)數(shù)器由兩個(gè)位的計(jì)數(shù)器由兩個(gè)8位位SFR TH和和TL組成組成。6定時(shí)器工作不占用定時(shí)器工作不占用CPUCPU時(shí)間,除非定時(shí)器時(shí)間,除非定時(shí)器/ /計(jì)計(jì)數(shù)器溢出,才能中斷數(shù)器溢出,才能中斷CPUCPU的當(dāng)前操作。的當(dāng)前操作。27定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0、T1的結(jié)構(gòu)框圖的結(jié)構(gòu)框圖284-2-2 定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)
13、數(shù)器T0和和T1一方式寄存器一方式寄存器TMOD(89H)1 不能進(jìn)行位尋址,只能用字節(jié)尋址。復(fù)不能進(jìn)行位尋址,只能用字節(jié)尋址。復(fù)位時(shí),位時(shí),TMOD所有位為所有位為02熟悉各位功能熟悉各位功能T1方式字段方式字段 T0方式字段方式字段GATEC/TM1 M GATEC/TM1M029 GATE門控位“1”:定時(shí)器的計(jì)數(shù)受外部引腳輸入電平的控制“0”:定時(shí)器的計(jì)數(shù)不受外部引腳輸入電平的控制 C/T功能選擇位“1”:計(jì)數(shù)功能 “ 0”:定時(shí)功能 M1M0工作方式選擇位30 適于適于T0,兩個(gè),兩個(gè)8位計(jì)數(shù)器位計(jì)數(shù)器M1M0工作方式工作方式方方 式式 說(shuō)說(shuō) 明明00013位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)
14、數(shù)器01116位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器102具有自動(dòng)重裝初值的具有自動(dòng)重裝初值的8位定時(shí)器位定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器113 31二二 控制寄存器控制寄存器TCON(88H)1 既可字節(jié)尋址又可位尋址。復(fù)位時(shí),既可字節(jié)尋址又可位尋址。復(fù)位時(shí),TCON各位為各位為0例:例:SETB TR1 ;啟動(dòng)定時(shí)器;啟動(dòng)定時(shí)器T1工作工作2熟悉各位功能熟悉各位功能D7 D6 D5 D4 D3 D2 D1 D08FH8EH 8DH 8CH 8BH 8AH 89H 88HTF1TR1TF0 TR0 IE1IT1IE0IT032TF1定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T1的溢出標(biāo)志位的溢出標(biāo)志位TR1定時(shí)器定時(shí)器/計(jì)數(shù)器
15、計(jì)數(shù)器T1的運(yùn)行控制位的運(yùn)行控制位TF0定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0的溢出標(biāo)志位的溢出標(biāo)志位TR0定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器T0的運(yùn)行控制位的運(yùn)行控制位IE1外部中斷外部中斷1下降沿觸發(fā)標(biāo)志位下降沿觸發(fā)標(biāo)志位IE0外部中斷外部中斷0下降沿觸發(fā)標(biāo)志位下降沿觸發(fā)標(biāo)志位IT1外部中斷外部中斷1觸發(fā)類型選擇位觸發(fā)類型選擇位IT0外部中斷外部中斷0觸發(fā)類型選擇位觸發(fā)類型選擇位33三三 定時(shí)器定時(shí)器/計(jì)數(shù)器的初始化計(jì)數(shù)器的初始化 初始化即將控制字寫入定時(shí)器初始化即將控制字寫入定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器的過(guò)程。的過(guò)程。初始化一般步驟初始化一般步驟:1 寫入初值寫入初值TH0、TL0或或TH1、TL12 對(duì)對(duì)TM
16、OD賦值賦值3 對(duì)對(duì)IE賦值(有中斷產(chǎn)生時(shí))賦值(有中斷產(chǎn)生時(shí))4 若用軟件啟動(dòng),則僅把若用軟件啟動(dòng),則僅把TR0或或TR1置置“1”; 若用外中斷引腳電平啟動(dòng),則還需給外若用外中斷引腳電平啟動(dòng),則還需給外 引腳加啟動(dòng)電平。引腳加啟動(dòng)電平。34四四 定時(shí)器定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)器的4種工作方式種工作方式1 方式方式035 方式方式0是一個(gè)是一個(gè)13位的定時(shí)器位的定時(shí)器/計(jì)數(shù)器,計(jì)數(shù)器,由由TL0的低的低5位和位和TH0的的8位組成。位組成。 定時(shí)時(shí)間為定時(shí)時(shí)間為T=12*(213-a)/fosc s最大定時(shí)時(shí)間:最大定時(shí)時(shí)間:M=213=8192T36例例7:已知晶振頻率:已知晶振頻率fosc=
17、6MHZ,若使用,若使用T0方式方式0產(chǎn)生產(chǎn)生10ms定時(shí)中斷,試對(duì)定時(shí)中斷,試對(duì)T0進(jìn)行初進(jìn)行初始化編程。始化編程。 MOV TH0,#63H MOV TL0,#18H SETB TR0 MOV IE ,#82H RET37例:例:T0工作于方式工作于方式0,要求在,要求在P1.0引腳上產(chǎn)生引腳上產(chǎn)生周期為周期為2ms的方波輸出的方波輸出(fosc=6MHZ) ORG 0000H AJMP MAIN ORG 000BH AJMP INQP ORG 0030HMAIN: MOV TMOD, #00H MOV TH0, #0F0H MOV TL0, #0CH SETB TR0 ;啟動(dòng);啟動(dòng)T0
18、SETB ET0 ;允許;允許T0中斷中斷 SETB EA ;開(kāi)放;開(kāi)放CPU中斷中斷 AJMP $ ;定時(shí)中斷等待;定時(shí)中斷等待38 ORG 4000H ;中斷服務(wù)程序;中斷服務(wù)程序INQP: MOV TH0, #0F0H ;重寫定時(shí)常數(shù);重寫定時(shí)常數(shù) MOV TL0, #0CH CPL P1.0 ;P1.0變反輸出變反輸出 RETI 392 方式方式1 方式方式1是一個(gè)是一個(gè)16位定時(shí)器位定時(shí)器/計(jì)數(shù)器,結(jié)構(gòu)計(jì)數(shù)器,結(jié)構(gòu)和操作方式與方式和操作方式與方式0基本相同。定時(shí)時(shí)間為基本相同。定時(shí)時(shí)間為T=12*(216-a)/fosc s最大定時(shí)時(shí)間:最大定時(shí)時(shí)間:M=216=65536T40例:
19、設(shè)例:設(shè)fosc=12MHz,T0工作于方式工作于方式1,產(chǎn)生,產(chǎn)生50ms定時(shí)中斷,定時(shí)中斷,TF0為高級(jí)中斷源。試為高級(jí)中斷源。試編寫主程序中的初試化程序和中斷服務(wù)程編寫主程序中的初試化程序和中斷服務(wù)程序,使序,使P1.0產(chǎn)生周期為產(chǎn)生周期為1秒的方波。秒的方波。MAIN:MOV SP, #EFH MOV TH0, #3CH MOV TL0, #0B0H MOV TMOD , #1 MOV IP, #2 41 MOV IE, #82H SETB TR0 MOV 30H, #0AHPTF0:ORL TL0, #0B0H;中斷服務(wù)程序中斷服務(wù)程序 MOV TH0, #3CH DJNZ 30H,
20、 PTF0R MOV 30H, #0AH CPL P1.0PTF0R:RETI42用查詢法:用查詢法: MOV 30H, #0AH MOV TH0, #3CH MOV TL0, #0B0H MOV TMOD, #1 SETB TR0L2: JBC TF0, L1 SJMP L2L1: MOV TH0, #3CH MOV TL0, #0B0H43 DJNZ 30H, L2 MOV 30H, #0AH CPL P1.0 SJMP L2443 方式方式2 方式方式2是能重置初值的是能重置初值的8位定時(shí)器位定時(shí)器/計(jì)數(shù)器,計(jì)數(shù)器,TL0作為作為8位計(jì)數(shù)器,位計(jì)數(shù)器,TH0作為計(jì)數(shù)初值寄存器。適于用做較
21、精作為計(jì)數(shù)初值寄存器。適于用做較精確的定時(shí)脈沖信號(hào)發(fā)生器。確的定時(shí)脈沖信號(hào)發(fā)生器。 定時(shí)時(shí)間定時(shí)時(shí)間 T=12*(28-a)/fosc s 最大定時(shí)時(shí)間:最大定時(shí)時(shí)間:M=28=256T45振蕩器 12TLx (8 位)TFx& 11C/_TC/_Tfosc中斷請(qǐng)求TxGATE_INTxTRxTHx(8 位 )4重裝初值控制S1Tcy圖 2.15 定時(shí)器/計(jì)數(shù)器方式2的邏輯結(jié)構(gòu)S2 定時(shí)器/計(jì)數(shù)器方式2的邏輯結(jié)構(gòu)46 MOV TMOD, #60H ; 設(shè)置設(shè)置T1為方式為方式2計(jì)數(shù)計(jì)數(shù) MOV TH1, #9CH ;賦初值;賦初值 MOV TL1, #9CH SETB TR1DE:JB
22、C TF1, RE ;查詢計(jì)數(shù)溢出;查詢計(jì)數(shù)溢出 AJMP DERE: CPL P1.0 AJMP DE例:用定時(shí)器例:用定時(shí)器1在方式在方式2計(jì)數(shù),要求每計(jì)滿計(jì)數(shù),要求每計(jì)滿100次,將次,將P1.0端取反。端取反。外部計(jì)數(shù)信號(hào)由P3.5引入,每跳變一次計(jì)數(shù)器加1100=28-a ; a=156=9CH47保護(hù)現(xiàn)場(chǎng)賦計(jì)數(shù)初值到1s?(32H)加1(32H)=60?(32H)清0(31H)加1(31H)=60?(31H)清0(30H)加1(30H)=24?(30H)清0恢復(fù)現(xiàn)場(chǎng)返回例例4.13(書(書111)aaNNNNYYYY圖 中斷服務(wù)程序流程圖48例:當(dāng)P3.4引腳上的電平發(fā)生負(fù)跳變時(shí),
23、 從P1.0輸出一個(gè)500s的同步脈沖。請(qǐng)編程序?qū)崿F(xiàn)該功能。查詢方式,fosc=6MHz。49解:(1)模式選擇 選T0為模式2,外部事件計(jì)數(shù)方式。 當(dāng)P3.4引腳上的電平發(fā)生負(fù)跳變時(shí),T0計(jì)數(shù)器加1,溢出標(biāo)志TF0置1;然后改變T0為500s定時(shí)工作方式,并使P1.0輸出由1變?yōu)?。T0定時(shí)到產(chǎn)生溢出,使P1.0輸出恢復(fù)高電平,T0又恢復(fù)外部事件計(jì)數(shù)方式。 如 圖所示。50(2)計(jì)算初值 T0工作在外部事件計(jì)數(shù)方式,當(dāng)計(jì)數(shù)到28時(shí),再加1計(jì)數(shù)器就會(huì)溢出。設(shè)計(jì)數(shù)初值為X,當(dāng)再出現(xiàn)一次外部事件時(shí),計(jì)數(shù)器溢出。 則: X+1=28 X= 28 1=11111111B=0FFH T0工作在定時(shí)工作方
24、式,設(shè)晶振頻率為6MHz,500s相當(dāng)于250個(gè)機(jī)器周期。因此,初值X為 (28X)2s=500s X=6=06H51(3)程序清單START: MOV TMOD,#06H ;設(shè)置T0為模式2,外部計(jì)數(shù)方式 MOV TL0,#0FFH ;T0計(jì)數(shù)器初值 MOV TH0,#0FFH SETB TR0 ;啟動(dòng)T0計(jì)數(shù) LOOP1:JBC TF0,PTFO1 ;查詢T0溢出標(biāo)志, ;TF0=1時(shí)轉(zhuǎn),且清TF0=0 SJMP LOOP1 ; 52 PTFO1:CLR TR0 ;停止計(jì)數(shù) MOV TMOD,#02H ;設(shè)置T0為模式2,定時(shí)方式 MOV TL0,#06H ;送初值,定時(shí)500s MOV
25、TH0,#06H CLR P1.0 ; P1.0清0 SETB TR0 ;啟動(dòng)定時(shí)500s LOOP2 : JBC TF0,PTFO2 ;查詢T0溢出標(biāo)志, ;TF0=1時(shí)轉(zhuǎn),且清TF0=0 ; (第一個(gè)500s到否?) SJMP LOOP2 ;等待 PTFO2 : SETB P1.0 ; P1.0置1 CLR TR0 ;停止計(jì)數(shù) SJMP START53振蕩器 12TL0 (8位)& 11C/_TC/_Tfosc中斷請(qǐng)求T0GATE_TR 0TH1(8位 )S2S1TF0TF1TR1TcyTcyINTx圖 2.16定時(shí)器 /計(jì)數(shù)器方式3的邏輯結(jié)構(gòu)S定時(shí)器定時(shí)器/計(jì)數(shù)器方式計(jì)數(shù)器方式3
26、的邏輯結(jié)構(gòu)的邏輯結(jié)構(gòu) 4 方式方式3TH054 方式方式3只適用于只適用于T0,T0分為兩個(gè)獨(dú)立的分為兩個(gè)獨(dú)立的8位計(jì)數(shù)器位計(jì)數(shù)器TL0和和TH0。一般。一般T1用作串行口用作串行口波特率發(fā)生器。波特率發(fā)生器。 最大定時(shí)時(shí)間:最大定時(shí)時(shí)間:M=28=256T5556例例 用定時(shí)器用定時(shí)器T0,分別產(chǎn)生兩個(gè)方波,一,分別產(chǎn)生兩個(gè)方波,一個(gè)周期為個(gè)周期為200 s,另一個(gè)周期為,另一個(gè)周期為400 s,該單片機(jī)同時(shí)使用串行口該單片機(jī)同時(shí)使用串行口,用定時(shí)器用定時(shí)器/計(jì)數(shù)計(jì)數(shù)器作為波特率發(fā)生器。器作為波特率發(fā)生器。(fosc =9.216MHZ)。57解:定時(shí)初值計(jì)算解:定時(shí)初值計(jì)算TL0=28-9
27、.216*106*100*10-6/12 =256-76.8 =179.2 轉(zhuǎn)換十六進(jìn)制為轉(zhuǎn)換十六進(jìn)制為0B3HTH0=28-9.216*106*200*10-6/12 =256-153.6 =102.4 轉(zhuǎn)換十六進(jìn)制為轉(zhuǎn)換十六進(jìn)制為66H58 ORG 0000H AJMP MAIN ORG 000BH ;TL0中斷入口中斷入口 AJMP ITL0 ORG 001BH ;TH0中斷入口中斷入口 AJMP ITH0 ORG 0100HMAIN:MOV SP, #60H MOV TMOD, #23H 59 MOV TL0, #0B3H MOV TH0, #66H MOV TL1,#data ;da
28、ta是根據(jù)波特率是根據(jù)波特率 ;要求設(shè)置的常數(shù)(;要求設(shè)置的常數(shù)(初值)初值) MOV TH1,#data SETB TR0 ;啟動(dòng);啟動(dòng)TL0初值初值 SETB TR1 ;啟動(dòng);啟動(dòng)TH0初值初值 SETB ET0 ;允許允許TL0中斷中斷 SETB ET1 ;允許允許TH0中斷中斷 SETB EA ;CPU中斷開(kāi)放中斷開(kāi)放 AJMP $ 60 ORG 0200HITL0:MOV TL0, #0B3H CPL P1.0 ;輸出方波輸出方波200 s RETIITH0:MOV TH0, #66H CPL P1.1 ;輸出方輸出方波波400 s RETI61例:設(shè)某用戶系統(tǒng)已使用了兩個(gè)例:設(shè)某用
29、戶系統(tǒng)已使用了兩個(gè)外部中斷源,并置定時(shí)器外部中斷源,并置定時(shí)器T1T1工作工作在模式在模式2 2,作串行口波特率發(fā)生,作串行口波特率發(fā)生器用?,F(xiàn)要求再增加一個(gè)外部中器用。現(xiàn)要求再增加一個(gè)外部中斷源,并由斷源,并由P1.0P1.0引腳輸出一個(gè)引腳輸出一個(gè)5kHz5kHz的方波。的方波。FoscFosc=12MHz.=12MHz.62解:解:(1)工作模式)工作模式 可設(shè)置可設(shè)置T0T0工作在模式工作在模式3 3計(jì)數(shù)器方式計(jì)數(shù)器方式,把,把T0T0的引腳的引腳作附加的外部中斷輸入端,作附加的外部中斷輸入端,TL0TL0的計(jì)數(shù)初值為的計(jì)數(shù)初值為FFHFFH,當(dāng)檢測(cè)到當(dāng)檢測(cè)到T0T0引腳電平出現(xiàn)由引腳
30、電平出現(xiàn)由1 1至至0 0的負(fù)跳變時(shí),的負(fù)跳變時(shí),TL0TL0產(chǎn)生溢出,申請(qǐng)中斷產(chǎn)生溢出,申請(qǐng)中斷,相當(dāng)于一個(gè)邊沿觸發(fā)的外部,相當(dāng)于一個(gè)邊沿觸發(fā)的外部中斷源中斷源。 T0T0模式模式3 3下,下,TL0TL0作計(jì)數(shù)用,而作計(jì)數(shù)用,而TH0TH0用作用作8 8位的定位的定時(shí)器時(shí)器,定時(shí)控制,定時(shí)控制P1.0P1.0引腳輸出引腳輸出5kHz5kHz的方波信號(hào)。的方波信號(hào)。 63(2)計(jì)算初值)計(jì)算初值TL0TL0的計(jì)數(shù)初值為的計(jì)數(shù)初值為FFHFFH。TH0TH0的計(jì)數(shù)初值的計(jì)數(shù)初值X X為:為: P1.0P1.0方波周期方波周期T=1/(5kHz)=0.2ms=200sT=1/(5kHz)=0.2
31、ms=200s 用用TH0TH0作定時(shí)作定時(shí)100s100s時(shí),時(shí), X=256-100 X=256-100 12/12=15612/12=15664(3)程序清單)程序清單 MOV TMOD,#27H ;T0為模式為模式3,計(jì)數(shù)方式計(jì)數(shù)方式 ; T1為模式為模式2,定時(shí)方,定時(shí)方式式 MOV TL0,#0FFH ;TL0計(jì)數(shù)初值計(jì)數(shù)初值 MOV TH0,#156 ;TH0計(jì)數(shù)初值計(jì)數(shù)初值 MOV TL1,#data ;data是根據(jù)波特率是根據(jù)波特率 ;要求設(shè)置的常數(shù)(;要求設(shè)置的常數(shù)(初值)初值) MOV TH1,#data MOV TCON,#55H ;外中斷;外中斷0,外中斷,外中斷1
32、邊沿觸發(fā),邊沿觸發(fā), ;啟動(dòng);啟動(dòng)T0,T1 MOV IE,#9FH ; 開(kāi)放全部開(kāi)放全部中斷中斷 65TL0溢出中斷服務(wù)程序(由溢出中斷服務(wù)程序(由000BH轉(zhuǎn)來(lái))轉(zhuǎn)來(lái))TL0INT:MOV TL0,#0FFH ;TL0重賦初值重賦初值 ;(中斷處理);(中斷處理) RETI TH0溢出中斷服務(wù)程序(由溢出中斷服務(wù)程序(由001BH轉(zhuǎn)來(lái))轉(zhuǎn)來(lái))TH0INT:MOV TH0,#156 ;TH0重賦初值重賦初值 CPL P1.0 ;P1.0取反輸出取反輸出 RETI串行口及外部中斷串行口及外部中斷0,外部中斷,外部中斷1的服務(wù)程序略。的服務(wù)程序略。66設(shè)時(shí)鐘頻率為設(shè)時(shí)鐘頻率為6MHz6MHz。編
33、寫利用。編寫利用T0T0產(chǎn)生產(chǎn)生1s1s定時(shí)的程序。定時(shí)的程序。67五五 門控位的應(yīng)用門控位的應(yīng)用GATE位是控制外部輸入脈沖對(duì)定時(shí)計(jì)數(shù)器的位是控制外部輸入脈沖對(duì)定時(shí)計(jì)數(shù)器的控制。當(dāng)為控制。當(dāng)為“1”時(shí),允許外部輸入電平控制時(shí),允許外部輸入電平控制啟、停定時(shí)器。利用這個(gè)特性可測(cè)量外部輸啟、停定時(shí)器。利用這個(gè)特性可測(cè)量外部輸入脈沖的寬度入脈沖的寬度。例:利用T0門控位測(cè)試INT0引腳上出現(xiàn)的正脈沖的寬度,將所測(cè)得值高位存入片內(nèi)71H單元,低位存入片內(nèi)70H單元。(fosc=12MHz)測(cè)試時(shí),應(yīng)在/INT0為低電平時(shí),設(shè)TR0為1;當(dāng)/INT0變高時(shí),啟動(dòng)計(jì)數(shù);當(dāng)/INT0再變低時(shí),停止計(jì)數(shù)。該
34、計(jì)數(shù)值即被測(cè)正脈沖寬度。68MOV TMOD , #09H;T0定時(shí)器方式,GATE=1MOV TL0, #00HMOV TH0, #00HMOV R0, #70HJB P3.2, $ ;等待P3.2變低SETB TR0 ;啟動(dòng)T0準(zhǔn)備工作JNB P3.2, $ ;等待P3.2變高JB P3.2, $ ;等待P3.2再次變低CLR TR0 ;停止計(jì)數(shù)MOV R0, TL0 ;存放計(jì)數(shù)低字節(jié)INC R0MOV R0, TH0 ;存放計(jì)數(shù)高字節(jié)SJMP $ 694-3 串行接口串行接口UART一一 兩種基本的通信方式兩種基本的通信方式 0 1 0 0 1 0 0 1D0D1D2D3D4D5D6D7
35、狀態(tài)控制(選通)計(jì)算機(jī)計(jì)算機(jī)(或外設(shè)) 0 1 0 0 1 0 0 1(a)8T計(jì)算機(jī)計(jì)算機(jī)計(jì)算機(jī)(或外設(shè))(b).(a) 并行通信;(b) 串行通信70二串行通信傳輸方式二串行通信傳輸方式ASSB(a)(b)(c)ABAB(a) 單工方式;(b) 半雙工方式;(c) 全雙工方式71三串行通信兩種基本方式三串行通信兩種基本方式1異步通信異步通信異步通信中數(shù)據(jù)或字符是一幀一幀傳送。異步通信中數(shù)據(jù)或字符是一幀一幀傳送。幀即為一個(gè)字符的完整通信格式,又稱幀格幀即為一個(gè)字符的完整通信格式,又稱幀格式。在幀格式中,一個(gè)字符由式。在幀格式中,一個(gè)字符由4部分組成:起部分組成:起始位、數(shù)據(jù)位、奇偶校驗(yàn)位、停
36、止位。始位、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位。 串行異步傳送的字符格式722 同步通信同步通信 數(shù)據(jù)或字符開(kāi)始處是由一同步字符來(lái)指示,數(shù)據(jù)或字符開(kāi)始處是由一同步字符來(lái)指示,并由時(shí)鐘實(shí)現(xiàn)發(fā)送端和接收端同步。并由時(shí)鐘實(shí)現(xiàn)發(fā)送端和接收端同步。四四 波特率波特率(Baud rate) 波特率就是數(shù)據(jù)的傳送速率,即每秒鐘傳波特率就是數(shù)據(jù)的傳送速率,即每秒鐘傳送的二進(jìn)制位數(shù),單位為位送的二進(jìn)制位數(shù),單位為位/秒。秒。 要求發(fā)送端與接收端的波特率必須一致。要求發(fā)送端與接收端的波特率必須一致。734-3-1 串行接口的組成和特性 51系列單片機(jī)的串行口是全雙工異步串行系列單片機(jī)的串行口是全雙工異步串行通信接口。通信
37、接口。一一 串行口結(jié)構(gòu)串行口結(jié)構(gòu)1 波特率發(fā)生器波特率發(fā)生器 主要由主要由T1、T2及內(nèi)部的一些控制開(kāi)關(guān)和分頻器及內(nèi)部的一些控制開(kāi)關(guān)和分頻器組成。提供串行口的時(shí)鐘信號(hào)即組成。提供串行口的時(shí)鐘信號(hào)即TCLK、RCLK。74EAESSM0 SM1 SM2 REN TB8 RB8TIRI波波特特率率發(fā)發(fā)生生器器發(fā)送SBUFTI 串行口 (TX) RI 控制邏輯 (RX)接收SBUF串串行行口口中中斷斷T TX XC CL LK KR RX XC CL LK KT TX XD DR RX XD D內(nèi)內(nèi)部部總總線線I IE ES SC CO ON N串行口結(jié)構(gòu)框圖75注意注意:接收器是雙緩沖結(jié)構(gòu),在前一
38、個(gè)字節(jié)被從接收緩沖器接收器是雙緩沖結(jié)構(gòu),在前一個(gè)字節(jié)被從接收緩沖器SBUF讀讀出之前,第二個(gè)字節(jié)即開(kāi)始被接收(串行輸入至移位寄存器),但出之前,第二個(gè)字節(jié)即開(kāi)始被接收(串行輸入至移位寄存器),但是,在第二個(gè)字節(jié)接收完畢而前一個(gè)字節(jié)是,在第二個(gè)字節(jié)接收完畢而前一個(gè)字節(jié)CPU未讀取時(shí),會(huì)丟失前未讀取時(shí),會(huì)丟失前一個(gè)字節(jié)一個(gè)字節(jié).762 串行口的內(nèi)部包含串行口的內(nèi)部包含串行數(shù)據(jù)緩沖寄存器串行數(shù)據(jù)緩沖寄存器SBUF數(shù)據(jù)接收緩沖器數(shù)據(jù)接收緩沖器(只讀出不寫入只讀出不寫入)和數(shù)據(jù)發(fā)送緩沖器和數(shù)據(jù)發(fā)送緩沖器(只寫只寫入不讀出入不讀出)。物理上隔離,共用一個(gè)地址。物理上隔離,共用一個(gè)地址( 99H )。當(dāng)向當(dāng)
39、向SBUF發(fā)發(fā)“寫寫”命令時(shí)(執(zhí)行命令時(shí)(執(zhí)行MOV SBUF,A ),即),即從片內(nèi)總線向發(fā)送從片內(nèi)總線向發(fā)送SBUF寫入數(shù)據(jù)寫入數(shù)據(jù),并開(kāi)始由并開(kāi)始由TXD引腳向引腳向外發(fā)送一幀數(shù)據(jù),發(fā)送完使外發(fā)送一幀數(shù)據(jù),發(fā)送完使TI=1。在滿足串行口接收中斷標(biāo)志位在滿足串行口接收中斷標(biāo)志位RI(SCON.0)=0的條件的條件下,置允許接收位下,置允許接收位REN(SCON.4)=1就會(huì)接收一幀數(shù)就會(huì)接收一幀數(shù)據(jù)進(jìn)入移位寄存器,并裝載到接收據(jù)進(jìn)入移位寄存器,并裝載到接收SBUF中,同時(shí)使中,同時(shí)使RI=1。當(dāng)發(fā)讀。當(dāng)發(fā)讀SBUF命令時(shí)(執(zhí)行命令時(shí)(執(zhí)行MOV A,SBUF),便),便由接收由接收SBUF
40、取出信息通過(guò)內(nèi)部總線送取出信息通過(guò)內(nèi)部總線送CPU。77串行口控制寄存器串行口控制寄存器串行數(shù)據(jù)輸入串行數(shù)據(jù)輸入/輸出引腳輸出引腳 接收方式下,串行數(shù)據(jù)從接收方式下,串行數(shù)據(jù)從RXD(P3.0)輸入。輸入。串行口內(nèi)部在接收緩沖器之前還有移位寄存串行口內(nèi)部在接收緩沖器之前還有移位寄存器,構(gòu)成串行接收雙緩沖結(jié)構(gòu)。避免數(shù)據(jù)接器,構(gòu)成串行接收雙緩沖結(jié)構(gòu)。避免數(shù)據(jù)接收重疊。收重疊。 發(fā)送方式下,串行數(shù)據(jù)從發(fā)送方式下,串行數(shù)據(jù)從TXD(P3.1)輸出。輸出。串行口控制邏輯串行口控制邏輯78二串行口控制二串行口控制1 串行口控制寄存器串行口控制寄存器SCON(98H) SM0和和SM1SM0SM1 SM2
41、REN TB8 RB8TIRISM0 SM1工作方式功 能波特率0 0 0擴(kuò)展移位寄存器 fosc/120 1 18位UART由定時(shí)器控制1 0 29位UARTfosc/32 fosc/641 1 39位UART由定時(shí)器控制79SM2 方式方式2和方式和方式3的多機(jī)通信控制位的多機(jī)通信控制位方式方式0,SM2=0。方式方式1,若,若SM2=1,只有接收到有效停止位,接,只有接收到有效停止位,接收中斷收中斷RI才置才置1。方式方式2和方式和方式3中,如中,如SM2=1,則接收到的第,則接收到的第9位位數(shù)據(jù)數(shù)據(jù)(RB8)為為0時(shí)不啟動(dòng)接收中斷標(biāo)志時(shí)不啟動(dòng)接收中斷標(biāo)志RI(即即RI=0),并且將接收
42、到的前并且將接收到的前8位數(shù)據(jù)丟棄;位數(shù)據(jù)丟棄;RB8為為1時(shí),才時(shí),才將接收到的前將接收到的前8位數(shù)據(jù)送入位數(shù)據(jù)送入SBUF,并置位,并置位RI,產(chǎn)生中斷請(qǐng)求。當(dāng)產(chǎn)生中斷請(qǐng)求。當(dāng)SM2=0時(shí),則不論第時(shí),則不論第9位數(shù)據(jù)位數(shù)據(jù)為為0或或1,都將前,都將前8位數(shù)據(jù)裝入位數(shù)據(jù)裝入SBUF中,并產(chǎn)生中中,并產(chǎn)生中斷請(qǐng)求。該功能用于多機(jī)通信中。斷請(qǐng)求。該功能用于多機(jī)通信中。80REN 允許串行接收位允許串行接收位 1允許接收;允許接收;0禁止接收禁止接收 由軟件置由軟件置1或清或清0,相當(dāng)于串行接收的開(kāi)關(guān)。,相當(dāng)于串行接收的開(kāi)關(guān)。 在串行通信接收控制過(guò)程中,如果滿足在串行通信接收控制過(guò)程中,如果滿足
43、RI0和和REN1(允許接收)的條件,就允許接收,一(允許接收)的條件,就允許接收,一幀數(shù)據(jù)就裝載入接收幀數(shù)據(jù)就裝載入接收SBUF中。中。TB8 發(fā)送數(shù)據(jù)發(fā)送數(shù)據(jù)D8位位 在方式在方式2和方式和方式3時(shí),時(shí),TB8為所要發(fā)送的第為所要發(fā)送的第9位數(shù)據(jù)。位數(shù)據(jù)。在多機(jī)通信中,以在多機(jī)通信中,以TB8位的狀態(tài)表示主機(jī)發(fā)送的位的狀態(tài)表示主機(jī)發(fā)送的是地址還是數(shù)據(jù):是地址還是數(shù)據(jù):TB8=0為數(shù)據(jù),為數(shù)據(jù),TB8=1為地址;為地址;也可用作數(shù)據(jù)的奇偶校驗(yàn)位。該位由軟件置位或也可用作數(shù)據(jù)的奇偶校驗(yàn)位。該位由軟件置位或復(fù)位。復(fù)位。在方式在方式0或方式或方式1中,該位未用中,該位未用81RB8 接收數(shù)據(jù)接收數(shù)
44、據(jù)D8位位 在方式在方式2和方式和方式3時(shí),接收到的第時(shí),接收到的第9位數(shù)據(jù),可位數(shù)據(jù),可作為奇偶校驗(yàn)位或地址幀或數(shù)據(jù)幀的標(biāo)志。作為奇偶校驗(yàn)位或地址幀或數(shù)據(jù)幀的標(biāo)志。方式方式1時(shí),若時(shí),若SM2=0,則,則RB8是接收到的停止是接收到的停止位。在方式位。在方式0時(shí),不使用時(shí),不使用RB8位。位。TI 發(fā)送中斷標(biāo)志發(fā)送中斷標(biāo)志 在方式在方式0時(shí),當(dāng)發(fā)送數(shù)據(jù)第時(shí),當(dāng)發(fā)送數(shù)據(jù)第8位結(jié)束后,或在其位結(jié)束后,或在其它方式發(fā)送停止位后,由內(nèi)部硬件使它方式發(fā)送停止位后,由內(nèi)部硬件使TI置位置位,向向CPU請(qǐng)求中斷。意味著向請(qǐng)求中斷。意味著向CPU提供提供“發(fā)送發(fā)送緩沖器緩沖器SBUF已空已空”的信息,的信息
45、,CPU可以準(zhǔn)備發(fā)可以準(zhǔn)備發(fā)送下一幀數(shù)據(jù)。送下一幀數(shù)據(jù)。CPU在響應(yīng)中斷后,必須用在響應(yīng)中斷后,必須用軟件清零。此外,軟件清零。此外,TI也可供查詢使用。也可供查詢使用。82RI接收中斷標(biāo)志位接收中斷標(biāo)志位 在方式在方式0時(shí),當(dāng)接收數(shù)據(jù)的第時(shí),當(dāng)接收數(shù)據(jù)的第8位結(jié)束后,或在位結(jié)束后,或在其它方式接收到停止位的中間時(shí)由內(nèi)部硬件其它方式接收到停止位的中間時(shí)由內(nèi)部硬件使使RI置位,向置位,向CPU請(qǐng)求中斷。表示一幀數(shù)據(jù)請(qǐng)求中斷。表示一幀數(shù)據(jù)接收結(jié)束,并已裝入接收接收結(jié)束,并已裝入接收SBUF中,要求中,要求CPU取走數(shù)據(jù)。在取走數(shù)據(jù)。在CPU響應(yīng)中斷后,也必須用軟響應(yīng)中斷后,也必須用軟件清零。件清零
46、。RI也可供查詢使用。也可供查詢使用。832 特殊功能寄存器特殊功能寄存器PCONSMOD位是串行口波特率系數(shù)控制位,為位是串行口波特率系數(shù)控制位,為1時(shí)時(shí)使波特率加倍。使波特率加倍。其余位是掉電方式控制位,其余位是掉電方式控制位,與串行口無(wú)關(guān)與串行口無(wú)關(guān)。SMOD844-3-2串行接口的工作原理串行接口的工作原理一 方式方式01 方式方式0為同步移位寄存器輸入為同步移位寄存器輸入/輸出方式,常輸出方式,常用于擴(kuò)展并行用于擴(kuò)展并行I/O口??凇? 數(shù)據(jù)由數(shù)據(jù)由RXD串行輸入串行輸入/輸出,輸出,TXD輸出移位脈輸出移位脈沖。沖。3 數(shù)據(jù)傳輸波特率固定為數(shù)據(jù)傳輸波特率固定為fosc/12。4 接
47、收接收/發(fā)送的是發(fā)送的是8位數(shù)據(jù),傳輸時(shí)位數(shù)據(jù),傳輸時(shí)低位在前低位在前。85輸出:輸出: 當(dāng)執(zhí)行寫SBUF的指令時(shí)(MOV SBUF,A),啟動(dòng)串行數(shù)據(jù)發(fā)送。從低位開(kāi)始串行輸出。當(dāng)完成一個(gè)字節(jié)的輸出后就停止移位,并置位TI。 輸入:輸入: 在REN=1,RI=0時(shí)啟動(dòng)串行口接收。當(dāng)外部移位寄存器內(nèi)容移入內(nèi)部移位寄存器,并寫入SBUF,則置位RI,停止移位,完成一個(gè)字節(jié)的輸入。注意:每當(dāng)發(fā)送或接收完8位數(shù)據(jù)時(shí),由硬件將發(fā)送中斷TI或接收中斷RI標(biāo)志置“1”;CPU響應(yīng)TI或RI中斷請(qǐng)求時(shí),不會(huì)清除標(biāo)志,必須由軟件清“0”.86二 方式11 方式1時(shí),串行口為10位通用異步接口。2 數(shù)據(jù)傳輸波特率
48、由定時(shí)/計(jì)數(shù)器T1和T2的溢出決定,由程序設(shè)定。 當(dāng)T2CON中RCLK和TCLK置位時(shí),由T2作接收/發(fā)送的波特率發(fā)生器;當(dāng)RCLK和TCLK都為0時(shí),由T1作接收/發(fā)送的波特率發(fā)生器。3 數(shù)據(jù)從引腳TXD端輸出,從引腳RXD輸入。87發(fā)送發(fā)送 當(dāng)數(shù)據(jù)寫入發(fā)送緩沖器時(shí),啟動(dòng)發(fā)送器開(kāi)始發(fā)送。8位數(shù)據(jù)發(fā)送完,置位TI=1,并申請(qǐng)中斷,通知CPU可發(fā)送下一個(gè)數(shù)據(jù)。接收接收 在REN=1的前提下,確認(rèn)是真正起始位“0”后,開(kāi)始接收一幀數(shù)據(jù)。當(dāng)RI=0且SM2=0時(shí),數(shù)據(jù)被有效接收。將接收到的數(shù)據(jù)裝入串行口的SBUF,并置位RI.88三 方式2和方式31 CPU向發(fā)送緩沖器寫入數(shù)據(jù)就啟動(dòng)串行口發(fā)送。發(fā)
49、送完畢,使TI=1。2 接收時(shí),先置REN為“1”,將RI清“0”。再根據(jù)SM2狀態(tài)和所接收到RB8狀態(tài)決定串口在信息到來(lái)后是否會(huì)使RI=1,申請(qǐng)中斷,接收數(shù)據(jù)。當(dāng)SM2=0,不管RB8狀態(tài),將RI置1串口接收當(dāng)SM2=1, RB8=1時(shí),多機(jī)通信,接收信息為地 址,將RI置1串口接收 RB8=0時(shí),接收信息為數(shù)據(jù),但不發(fā)給本從機(jī),此時(shí)RI不置1數(shù)據(jù)丟失894-3-3 波特率一 方式0:波特率=振蕩器頻率/12二 方式2:波特率=2SMOD*振蕩器頻率/64三 方式1、3(T1產(chǎn)生波特率):波特率=2SMOD*振蕩器頻率/32*12(256-(TH1)注:記住當(dāng)振蕩器頻率選用11.0592MH
50、Z時(shí),對(duì)于常用波特率,能正確計(jì)算T1的初值。904-3-4 多機(jī)通信原理在主從式多機(jī)系統(tǒng)中: 1主機(jī)發(fā)出的信息有兩類。一類為地址,用來(lái)確定需要和主機(jī)通信的從機(jī),特征是串行傳送的第9位數(shù)據(jù)為1;另一類是數(shù)據(jù),特征是串行傳送的第9位數(shù)據(jù)為0。2對(duì)從機(jī)來(lái)說(shuō),在接收時(shí),若RI=0,則只要SM2=0,接收總能實(shí)現(xiàn);而若SM2=1,則發(fā)送的第9位TB8必須為1接收才能進(jìn)行。911 主機(jī)首先發(fā)出要求通信的從機(jī)地址信號(hào)。此時(shí),所有從機(jī)的SM2都為“1”,所有從機(jī)均收到地址信號(hào)。2 從機(jī)判斷主機(jī)發(fā)出的地址信號(hào)是否與本從機(jī)號(hào)相符。相符的從機(jī)SM2“0”,反之為“1”。3 主機(jī)發(fā)送數(shù)據(jù)幀。僅SM2=0的從機(jī)可收到。
51、924-3-5 串行口的應(yīng)用和編程一串行口應(yīng)用同一印板內(nèi),兩個(gè)單片機(jī)串行口可直接通信。單片機(jī)與PC機(jī)之間利用串行口通信,必須進(jìn)行電平轉(zhuǎn)換。二串行口編程串行口初始化編程: 選擇串行口工作方式,波特率,允許串行口中斷。即對(duì)SCON、PCON、TMOD、TCON、TH1、TL1、IE、IP、SBUF編程。93例1:編寫程序,功能為對(duì)串行口初始化為方式1輸入/輸出,fosc=11.0592MHZ,波特率為9600,先在串行口上輸出字符串“MCS-51”,接著讀串行口上輸入的字符,又將該字符從串行口上輸出。 MOV TMOD, #20H MOV TH1, #0FDH MOV TL1, #0FDH SET
52、B TR1 MOV SCON, #52H MOV R4, #0 MOV DPTR, #TSAB94LP1: MOV A, R4 MOVC A, A+DPTR JZ LP6LP3: JBC TI, LP2 SJMP LP3LP2: MOV SBUF, A INC R4 SJMP LP1LP6: JBC RI, LP5 SJMP LP6LP5: MOV A, SBUFLP8:JBC TI, LP7 SJMP LP8LP7:MOV SBUF, A SJMP LP6TSAB:DB MCS-51 DB 0AH,0DH,0 95例例2:89C52串行口按雙工方式進(jìn)行數(shù)據(jù)收發(fā),要求波串行口按雙工方式進(jìn)行數(shù)據(jù)
53、收發(fā),要求波特率為特率為1200,串口工作在方式串口工作在方式1。編寫有關(guān)的通信程。編寫有關(guān)的通信程序。設(shè)發(fā)送數(shù)據(jù)區(qū)的首地址為序。設(shè)發(fā)送數(shù)據(jù)區(qū)的首地址為20H,接收數(shù)據(jù)區(qū)的,接收數(shù)據(jù)區(qū)的首地址為首地址為40H,fosc為為11.0592MHz。解解:雙工通信要求收、發(fā)能同時(shí)進(jìn)行。實(shí)際上,收、發(fā)操作主要雙工通信要求收、發(fā)能同時(shí)進(jìn)行。實(shí)際上,收、發(fā)操作主要是在串行接口進(jìn)行,是在串行接口進(jìn)行,CPU只是把數(shù)據(jù)從接收緩沖器讀出和把只是把數(shù)據(jù)從接收緩沖器讀出和把數(shù)據(jù)寫入發(fā)送緩沖器。數(shù)據(jù)寫入發(fā)送緩沖器。 數(shù)據(jù)傳送用中斷方式進(jìn)行,響應(yīng)中斷以后,通過(guò)檢測(cè)是數(shù)據(jù)傳送用中斷方式進(jìn)行,響應(yīng)中斷以后,通過(guò)檢測(cè)是RI置
54、置位還是位還是TI置位來(lái)決定置位來(lái)決定CPU是進(jìn)行發(fā)送操作還是接收操作。發(fā)是進(jìn)行發(fā)送操作還是接收操作。發(fā)送和接收都通過(guò)調(diào)用子程序來(lái)完成。送和接收都通過(guò)調(diào)用子程序來(lái)完成。96 主程序主程序 MOV TMOD ,#20H ;T1設(shè)為模式設(shè)為模式2 MOV TL1 , #0E8H ; MOV TH1 ,#0E8H ; SETB TR1 ;啟動(dòng)定時(shí)器啟動(dòng)定時(shí)器1 MOV SCON ,#50H ;設(shè)置為方式設(shè)置為方式1,REN=1 MOV R0 ,#20H ;發(fā)送數(shù)據(jù)區(qū)首址發(fā)送數(shù)據(jù)區(qū)首址 MOV R1 ,#40H ;接收數(shù)據(jù)區(qū)首址接收數(shù)據(jù)區(qū)首址 ACALL SOUT ;先輸出一個(gè)字符先輸出一個(gè)字符 SE
55、TB ES SETB EA 中斷服務(wù)程序中斷服務(wù)程序 ORG 0023H ;串行口中斷入口串行口中斷入口 AJMP SBR1 ;轉(zhuǎn)至中斷服務(wù)程序轉(zhuǎn)至中斷服務(wù)程序 ORG 0100H SBR1: JNB RI ,SEND ;TI=1,為發(fā)送中斷為發(fā)送中斷 ACALL SIN ;RI=1,為接收中斷為接收中斷 SJMP NEXT ;轉(zhuǎn)至統(tǒng)一的出口轉(zhuǎn)至統(tǒng)一的出口SEND: ACALL SOUT ;調(diào)用發(fā)送子程序調(diào)用發(fā)送子程序NEXT: RETI ;中斷返回中斷返回 97發(fā)送子程序發(fā)送子程序SOUT: CLR TI MOV A ,R0 ;取發(fā)送數(shù)據(jù)到取發(fā)送數(shù)據(jù)到A INC R0 ;修改發(fā)送數(shù)據(jù)指針修改
56、發(fā)送數(shù)據(jù)指針 MOV SBUF ,A ;發(fā)送發(fā)送 RET ;返回返回接收子程序接收子程序 SIN: CLR RI MOV A ,SBUF ;讀出接收緩沖區(qū)內(nèi)容讀出接收緩沖區(qū)內(nèi)容 MOV R1 ,A ;讀入接收緩沖區(qū)讀入接收緩沖區(qū) INC R1 ;修改接收數(shù)據(jù)指針修改接收數(shù)據(jù)指針 RET ;返回返回98用串行口進(jìn)行雙機(jī)異步通信例3:將甲機(jī)片內(nèi)RAM50H5FH單元中的數(shù)據(jù)塊從串行口輸出。定義在方式3下發(fā)送,TB8作奇偶校驗(yàn)位。采用定時(shí)器1方式2作波特率發(fā)生器,波特率為1200,fosc=11.0592MHz。 使乙機(jī)從甲機(jī)接收16個(gè)字節(jié)數(shù)據(jù)塊,并存入片外3000H300FH單元。接收過(guò)程中要求判
57、奇偶標(biāo)志RB8。若出錯(cuò)則置F0標(biāo)志為1,反之為0,然后返回。99甲機(jī)發(fā)送子程序 MOV TMOD,#20H MOV TL1, #0EBH MOV TH1, #0E8H SETB TR1 MOV SCON,#0C0H MOV R0, #50H MOV R7, #10HTRS:MOV A, R0 MOV C, P MOV TB8, C MOV SBUF, AWAIT:JNB TI,$ CLR TI INC R0 DJNZ R7,TRS RET100乙機(jī)接收子程序 MOV TMOD,#20H MOV TL1,#0EBH MOV TH1,#0E8H SETB TR1 MOV SCON,#0C0H MO
58、V DPTR,#3000H MOV R7,#10H SETB RENWAIT:JNB RI,$ CLR RI MOV A,SBUF JNB PSW.0, PZ JNB RB8, ERR SJMP YESPZ: JB RB8,ERRYES:MOVX DPTR,A INC DPTR DJNZ R7,WAIT CLR PSW.5 RETERR:SETB PSW.5 RET注意:雙機(jī)通信時(shí),兩機(jī)應(yīng)用相同的工作方式和波特率。1014-3-6 RS232C總線和電平轉(zhuǎn)換器RS232C是由美國(guó)電子工業(yè)協(xié)會(huì)(是由美國(guó)電子工業(yè)協(xié)會(huì)(EIA)正式公布)正式公布的,在異步串行通信中應(yīng)用最廣的標(biāo)準(zhǔn)總線(的,在異步串行
59、通信中應(yīng)用最廣的標(biāo)準(zhǔn)總線(C表示表示此標(biāo)準(zhǔn)修改了三次)。它包括了按位串行傳輸?shù)碾姶藰?biāo)準(zhǔn)修改了三次)。它包括了按位串行傳輸?shù)碾姎夂蜋C(jī)械方面的規(guī)定,適用于短距離或帶調(diào)制解調(diào)氣和機(jī)械方面的規(guī)定,適用于短距離或帶調(diào)制解調(diào)器的通信場(chǎng)合。器的通信場(chǎng)合。為了提高數(shù)據(jù)傳輸率和通信距離,為了提高數(shù)據(jù)傳輸率和通信距離,EIA又公布了又公布了RS422,RS423和和RS-485串行總線接口作準(zhǔn)。串行總線接口作準(zhǔn)。102 ELA RS-232C是目前最常用的串行接口標(biāo)準(zhǔn),用于實(shí)現(xiàn)計(jì)算機(jī)與計(jì)算機(jī)之是目前最常用的串行接口標(biāo)準(zhǔn),用于實(shí)現(xiàn)計(jì)算機(jī)與計(jì)算機(jī)之間、計(jì)算機(jī)與外設(shè)之間的數(shù)據(jù)通信。間、計(jì)算機(jī)與外設(shè)之間的數(shù)據(jù)通信。該標(biāo)準(zhǔn)
60、的目的是定義數(shù)據(jù)終端設(shè)備(該標(biāo)準(zhǔn)的目的是定義數(shù)據(jù)終端設(shè)備(DTE)之間接口的電氣特性。一般的串)之間接口的電氣特性。一般的串行通信系統(tǒng)是指微機(jī)和調(diào)制解調(diào)器(行通信系統(tǒng)是指微機(jī)和調(diào)制解調(diào)器(modem),如),如圖圖。調(diào)制解調(diào)器叫數(shù)據(jù)電。調(diào)制解調(diào)器叫數(shù)據(jù)電路終端設(shè)備(簡(jiǎn)稱路終端設(shè)備(簡(jiǎn)稱DCE)。)。 RS-232C提供了單片機(jī)與單片機(jī)、單片機(jī)與提供了單片機(jī)與單片機(jī)、單片機(jī)與PC機(jī)間串行數(shù)據(jù)通信的標(biāo)準(zhǔn)接口。通信距離可達(dá)到機(jī)間串行數(shù)據(jù)通信的標(biāo)準(zhǔn)接口。通信距離可達(dá)到 15 m。103RS232C接口的具體規(guī)定如下接口的具體規(guī)定如下: (l)范圍)范圍 RS-232C標(biāo)準(zhǔn)適用于標(biāo)準(zhǔn)適用于DCE和和 DTE間的串行二進(jìn)制通信
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保險(xiǎn)代理合同補(bǔ)充協(xié)議
- 居家養(yǎng)老服務(wù)合同
- 投標(biāo)保證金擔(dān)保合同
- 日元借款合同8篇
- 2025年經(jīng)典的購(gòu)銷合同6篇
- 2023年高考全國(guó)乙卷理科綜合真題(解析版)
- 2025年高中化學(xué)新教材同步 必修第一冊(cè) 第4章 第1節(jié) 研究與實(shí)踐3 認(rèn)識(shí)元素周期表
- 烹飪用具采購(gòu)合同范本
- 無(wú)損檢測(cè)儀競(jìng)爭(zhēng)策略分析報(bào)告
- 庫(kù)房存儲(chǔ)合同范本
- GB/T 42828.2-2023鹽堿地改良通用技術(shù)第2部分:稻田池塘漁農(nóng)改良
- 泡沫混凝土教學(xué)課件
- 國(guó)際反洗錢師cams考試真題中文版題庫(kù)匯總(含答案)
- DB33-T 2477-2022 消防物聯(lián)網(wǎng)系統(tǒng)對(duì)接技術(shù)規(guī)范
- (完整版)離婚協(xié)議書標(biāo)準(zhǔn)版下載
- 第三章生產(chǎn)勘探課件
- 2023年安徽高校教師崗前培訓(xùn)結(jié)業(yè)統(tǒng)考試題及參考答案
- 聽(tīng)胎心音操作評(píng)分標(biāo)準(zhǔn)
- 風(fēng)機(jī)齒輪箱的機(jī)構(gòu)和工作原理
- 高效能人士的七個(gè)習(xí)慣 周計(jì)劃表 完美版
- 新生兒疾病診療規(guī)范診療指南診療常規(guī)2022版
評(píng)論
0/150
提交評(píng)論