單片機(jī)原理與應(yīng)用第4章課件_第1頁
單片機(jī)原理與應(yīng)用第4章課件_第2頁
單片機(jī)原理與應(yīng)用第4章課件_第3頁
單片機(jī)原理與應(yīng)用第4章課件_第4頁
單片機(jī)原理與應(yīng)用第4章課件_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第4章 MCS-51單片機(jī)的功能模塊目 錄4.1 MCS-51單片機(jī)的功能模塊4.2 MCS-51單片機(jī)的定時(shí)器/計(jì)數(shù)器4.3 MCS-51單片機(jī)的串行口4.1 MCS-51單片機(jī)的中斷系統(tǒng) 4.1.1 中斷的概念 當(dāng)CPU正常處理某個(gè)事件時(shí),由于內(nèi)部事件或外設(shè)請求,引起CPU暫時(shí)中止當(dāng)前正在運(yùn)行的程序,轉(zhuǎn)去執(zhí)行請求中斷的外設(shè)或內(nèi)部事件的中斷服務(wù)子程序,中斷服務(wù)程序執(zhí)行完畢,再返回原來被中止的地方,繼續(xù)原來的工作。這一過程稱為中斷。實(shí)現(xiàn)中斷功能的部件稱為中斷系統(tǒng),請示CPU中斷的請求源稱為中斷源。主程序的中斷處理4.1.2 CPU響應(yīng)及處理中斷機(jī)制 一般來說,根據(jù)中斷源的輕重緩急排序,CPU優(yōu)

2、先處理最緊急事件的中斷請求源。也就是說,需要對各個(gè)中斷源設(shè)定相應(yīng)的優(yōu)先級(jí),CPU總是最先響應(yīng)級(jí)別最高的中斷。中斷源可以分為兩個(gè)中斷優(yōu)先級(jí):高優(yōu)先級(jí)和低優(yōu)先級(jí)。用戶可以用關(guān)中斷指令或復(fù)位指令來屏蔽所有中斷請求,也可以用開中斷指令使CPU接收中斷申請。4.1.3 中斷源及中斷請求標(biāo)志 中斷系統(tǒng):由中斷標(biāo)志寄存器、中斷源允許寄存器、中斷優(yōu)先級(jí)寄存器及中斷查詢電路組成。 1.中斷源 (1)外部中斷請求0:由 (P3.2管腳)輸入,低電平或下降沿觸發(fā)。 (2)外部中斷請求1:由 (P3.3管腳)輸入,低電平或下降沿觸發(fā)。 (3)內(nèi)部定時(shí)器/計(jì)數(shù)器0中斷請求:由T0溢出引起。 (4)內(nèi)部定時(shí)器/計(jì)數(shù)器1中

3、斷請求:由T1溢出引起。 (5)內(nèi)部中斷請求TI/RI:串行I/O中斷,串行口完成一幀字符發(fā)送/接收后引起。 2.中斷請求標(biāo)志1)TCON寄存器中的中斷標(biāo)志 D7 D6 D5 D4 D3 D2 D1 D0TF1TR1TF0TR0IE1IT1IE0IT0TCON是定時(shí)/計(jì)數(shù)器T0、T1的控制寄存器,格式如下: 2)SCON寄存器中的中斷標(biāo)志 SCON為串行口控制寄存器: SM0SM1SM2RENTB8RB8TIRID7 D6 D5 D4 D3 D2 D1 D04.1.4 中斷控制及中斷優(yōu)先級(jí)1.中斷允許控制寄存器IE(字節(jié)地址A8H) D7 D6 D5 D4 D3 D2 D1 D0EA-ET2E

4、SET1EX1ET0EX0使用匯編語言程序控制中斷請求信號(hào)的允許或禁止的程序示例如下: CLR EA ; 禁止所有中斷請求 SETB EX0 ; 允許 中斷請求,注意此時(shí)EA=0,中斷還不能被響應(yīng) CLR EX1 ; 禁止 中斷請求 SETB EA ; 允許總中斷控制,此時(shí) 中斷請求可以被CPU響應(yīng) 2.中斷優(yōu)先控制寄存器IP 二級(jí)中斷的嵌套過程 低級(jí)中斷程序1高級(jí)中斷程序2主程序繼續(xù)執(zhí)行主程序返回返回 為了實(shí)現(xiàn)上述功能,MCS-51中斷系統(tǒng)設(shè)置了中斷優(yōu)先級(jí)寄存器IP統(tǒng)一管理各個(gè)中斷源的中斷優(yōu)先級(jí)。 如果CPU接收到幾個(gè)相同優(yōu)先級(jí)的中斷請求源時(shí),響應(yīng)哪一個(gè)中斷申請要取決于一個(gè)內(nèi)部的硬件查詢序列

5、,此時(shí)應(yīng)按照下表所示的優(yōu)先權(quán)結(jié)構(gòu)先后響應(yīng)中斷請求。中 斷 源中斷優(yōu)先級(jí)外部中斷0(IE0)最高定時(shí)器T0中斷(TF0)外部中斷1(IE1)定時(shí)器T1中斷(TF1)串行口中斷(RI、TI)最低D7 D6 D5 D4 D3 D2 D1 D0-PSPT1PX1PT0PX0其各位格式為: 4.1.5 中斷響應(yīng)及中斷處理過程 1中斷響應(yīng)的條件中斷響應(yīng)的條件123CPU無高級(jí)或同級(jí)的中斷服務(wù)。當(dāng)前指令已執(zhí)行到最后一個(gè)機(jī)器周期,以確保當(dāng)前指令的完整執(zhí)行。如果正在執(zhí)行的是RETI、IE或IP的指令,需要保證執(zhí)行完該指令及其后的另一條指令。 1完成當(dāng)前指令后立即終止現(xiàn)行程序,置位相應(yīng)的優(yōu)先級(jí)狀態(tài)觸發(fā)器,以阻斷同

6、級(jí)和低級(jí)中斷。2將斷點(diǎn)地址壓入堆棧,同時(shí)清除中斷請求標(biāo)志(TI和RI除外)。3把對應(yīng)的中斷源入口地址送入程序計(jì)數(shù)器PC,轉(zhuǎn)至相應(yīng)的中斷服務(wù)程序。2.中斷響應(yīng)過程3.中斷處理和返回 中斷處理即為執(zhí)行中斷服務(wù)程序。中斷服務(wù)程序從中斷入口地址開始,首先要保存有關(guān)的寄存器內(nèi)容,即保護(hù)現(xiàn)場;完成中斷源請求的服務(wù)后,還要恢復(fù)這些寄存器內(nèi)容(恢復(fù)現(xiàn)場),并在中斷服務(wù)程序的末尾,安排一條返回指令,把斷點(diǎn)地址送回程序計(jì)數(shù)器PC,使程序返回原斷點(diǎn)處,結(jié)束中斷過程。4.中斷響應(yīng)時(shí)間 中斷響應(yīng)時(shí)間是指從查詢中斷請求標(biāo)志位到轉(zhuǎn)至中斷服務(wù)程序入口地址所需的時(shí)間。 1對于定時(shí)器的溢出中斷及邊沿觸發(fā)的外部中斷,CPU在響應(yīng)中

7、斷后即有硬件自動(dòng)清除相關(guān)的中斷請求標(biāo)志。2對于串行口中斷,CPU在響應(yīng)中斷后,必須在中斷服務(wù)程序中用軟件清除中斷標(biāo)志,硬件沒有相關(guān)措施。3對于電平觸發(fā)的外部中斷,僅靠清除中斷標(biāo)志是不能徹底撤除中斷請求的。必須在中斷響應(yīng)后把外部輸入端信號(hào)從低電平強(qiáng)制為高電平,才能徹底解決中斷請求的撤除問題。 5.中斷請求的撤除 4.1.6 中斷的應(yīng)用及編程 中斷初始化程序?qū)嶋H上就是對幾個(gè)特殊功能寄存器的相關(guān)控制位進(jìn)行賦值,具體步驟如下:(1)開啟相應(yīng)中斷源的中斷允許。(2)設(shè)定所有中斷源的中斷優(yōu)先級(jí)。(3)規(guī)定外部中斷的觸發(fā)方式(電平觸發(fā)還是邊沿觸發(fā))。 【例1】假設(shè)系統(tǒng)的堆棧為61H7FH,允許外部0中斷、定

8、時(shí)器T0中斷,并設(shè)定 為高優(yōu)先級(jí),采用邊沿觸發(fā),其他中斷為低優(yōu)先級(jí),則在主程序中的中斷初始化程序如下: MOV SP, #60H SETB PX0 SETB IT0 SETB ET0 SETB EX0 SETB EA 【例2】若要求外部中斷引腳 采用邊沿觸發(fā)方式,處于高優(yōu)先級(jí),初始化程序可以采用位操作指令,也可以用字節(jié)型指令進(jìn)行編制。 位操作指令: SETB EA SETB EX1 SETB PX1 SETB IT1 字節(jié)型指令: MOV IE, #84H ORL IP, #04H ORL TCON, #04H 【例3】 有5個(gè)外部中斷源EX1、EX2、EX3、EX4和EX5,如下圖所示。高電

9、平時(shí)表示請求中斷,要求執(zhí)行相應(yīng)中斷服務(wù)程序,試編制程序。EX2EX3EX4EX5EX111 INT0 INT180C51P1.0P1.1P1.2P1.3 ORG 0000H LJMP MAIN ORG 0003H LJMP PINT0 ORG 0013H LJMP PINT1 ORG 0100H MAIN: MOV SP, #60H ORL TCON, #05H SETB PX0 MOV IE, #0FFH ORG 1000H PINT0: PUSH Acc LCALL WORK1 POP Acc RETI ORG 2000H PINT1: CLR EA PUSH Acc PUSH DPH P

10、USH DPL SETB EA JB P1.0, LWK20 JB P1.1, LWK21 JB P1.2, LWK22 LCALL WORK23 LRET: CLR EA POP DPL POP DPH POP Acc SETB EA RETI LWK20: LCALL WORK20 SJMP LRET LWK21: LCALL WORK21 SJMP LRET LWK22: LCALL WORK22 SJMP LRET 【例4】出租車計(jì)價(jià)器計(jì)程方法是車輪每運(yùn)轉(zhuǎn)一圈產(chǎn)生一個(gè)負(fù)脈沖,從外中斷(P3.2)引腳輸入,行程=輪胎周長運(yùn)轉(zhuǎn)圈數(shù),設(shè)輪胎周長為2 m,試實(shí)時(shí)計(jì)算出租車行駛里程(單位:m),

11、數(shù)據(jù)存于32H、31H和30H中。 ORG 0000H LJMP START ORG 0003H LJMP INT0 ORG 0030H START: MOV SP, #60H SETB IT0 MOV IP, #01H MOV IE, #81H MOV 30H, #0 MOV 31H, #0 MOV 32H, #0 LJMP MAIN ORG 0200H INT0: PUSH Acc PUSH PSW MOV A, 30H ADD A, #2 MOV 30H, A CLR A ADDC A, 31H MOV 31H, A CLR A ADDC A, 32H MOV 32H, A PUSH P

12、SW PUSH Acc RETI4.2 MCS-51單片機(jī)的定時(shí)器/計(jì)數(shù)器 4.2.1 定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)及工作原理8051單片機(jī)定時(shí)器/計(jì)數(shù)器內(nèi)部邏輯結(jié)構(gòu)1方式寄存器TMOD控制定時(shí)/計(jì)數(shù)器T1 D7 D6 D5 D4 D3 D2 D1 D0控制定時(shí)/計(jì)數(shù)器T0GATEM1M0GATEC/TM1M02控制寄存器TCON D7 D6 D5 D4 D3 D2 D1 D0TF1TR1TF0TR0IE1IT1IE0IT04.2.2 定時(shí)器/計(jì)數(shù)器的工作方式1方式0 定時(shí)器/計(jì)數(shù)器T0方式0的邏輯電路結(jié)構(gòu)2.方式1 與方式0的結(jié)構(gòu)與操作差別僅在于計(jì)數(shù)器的位數(shù),此時(shí)由TH0作為高8位,TL0作為低8位

13、,構(gòu)成的是一個(gè)16位的定時(shí)/計(jì)數(shù)器。 定時(shí)器/計(jì)數(shù)器T0方式1的邏輯電路結(jié)構(gòu)3.方式2 方式2是自動(dòng)重裝計(jì)數(shù)初值的8位定時(shí)/計(jì)數(shù)器。 定時(shí)器/計(jì)數(shù)器T0方式2的邏輯電路結(jié)構(gòu)4.方式3 注意:當(dāng)T0工作在方式3時(shí),T1仍可以設(shè)置為方式0、方式1和方式2,但只能用于那些不需要中斷控制的場合。一般情況下,如果T1用作串行通信的波特率發(fā)生器時(shí),T0才工作在方式3。 定時(shí)器/計(jì)數(shù)器T0方式3的邏輯電路結(jié)構(gòu)確定定時(shí)/計(jì)數(shù)器的工作狀態(tài),寫入方式控制寄存器TMOD。設(shè)置寄存器TCON的值,令TR1或TR0為1,啟動(dòng)定時(shí)/計(jì)數(shù)器開始工作。 根據(jù)實(shí)際需要設(shè)置定時(shí)器初值或計(jì)數(shù)器初值,寫入初值寄存器TH0、TL0或T

14、H1、TL1。 根據(jù)需要設(shè)定寄存器IE,開放定時(shí)/計(jì)數(shù)器中斷。12344.2.3 定時(shí)器/計(jì)數(shù)器的應(yīng)用MCS-51系列定時(shí)/計(jì)數(shù)器的初始化編程步驟如下: 【例5】設(shè)系統(tǒng)時(shí)鐘頻率為12 MHz,請利用定時(shí)/計(jì)數(shù)器T0編程實(shí)現(xiàn)從P1.0輸出周期為20 ms的方波。 解:從P1.0輸出周期為20 ms的方波,只需P1.0每隔10 ms取反一次。當(dāng)系統(tǒng)時(shí)鐘頻率為12 MHz,T0工作于方式1時(shí),Tmax =65 536s,滿足10 ms的定時(shí)要求。系統(tǒng)時(shí)鐘頻率為12 MHz,T12/fosc=10000,初值X=65 536-10 000=D8F0H,則TH0=D8H,TL0=F0H。 (1)采用中斷

15、方式,程序如下: ORG 0000H ;復(fù)位地址 LJMP MAIN ;轉(zhuǎn)主程序 ORG 000BH ;中斷入口地址 CPL P1.0 ;輸出方波 MOV TH0, #0D8H ;設(shè)置初值 MOV TL0, #0F0H ; RETI ;中斷返回 ORG 0200H ; MAIN: MOV TMOD, #01H ;T0工作于方式1 MOV TH0, #0D8H ;重新裝入計(jì)數(shù)初值 MOV TL0, #0F0H ; SETB EA ;CPU開中斷 SETB ET0 ;允許T0終端 SETB TR0 ;啟動(dòng)T0 SJMP $ ;(2)采用查詢方式,程序如下: ORG 0000H AJMP MAIN

16、ORG 0300HMAIN: MOV TMOD, #01H MOV TH0, #0D8H MOV TL0, #0F0H SETB TR0LOOP: JBC TF0, NEXT ;查詢計(jì)數(shù)溢出 SJMP LOOPNEXT: CPL P1.0 SJMP LOOP SJMP $ 【例6】利用定時(shí)/計(jì)數(shù)器T0測量某正脈沖信號(hào)寬度,脈沖從P3.2輸入。已知此脈沖寬度小于10 ms,系統(tǒng)時(shí)鐘頻率為12 MHz。要求測量此脈沖寬度,并把結(jié)果順序存放在以片內(nèi)30H單元為首地址的數(shù)據(jù)存儲(chǔ)單元中。參考程序如下: ORG 0000H AJMP MAIN ORG 0300H MAIN: MOV TMOD, #09H

17、MOV TH0, #00H MOV TL0, #00H LP: JB P3.2, LP LOOP: JNB P3.2, LOOP SETB TR0 HERE: JB P3.2, HERE CLR TR0 MOV 30H, TL0 MOV 31H, TH0 SJMP $4.3 MCS-51單片機(jī)的串行口 4.3.1 串行通信的基礎(chǔ)知識(shí) 1.串行通信的分類 按照串行數(shù)據(jù)的同步方式,串行通信可以分為異步通信和同步通信。 1)異步通信 異步串行通信每個(gè)數(shù)據(jù)以相同的幀格式傳送,如圖所示。每一幀信息由起始位、數(shù)據(jù)位、奇偶位和停止位組成,從起始位開始到停止位結(jié)束的全部內(nèi)容稱為“一幀”,發(fā)送一位數(shù)據(jù)所需的時(shí)間

18、稱為“位時(shí)間”。字符幀的異步通信格式2)同步通信 同步通信中,每一數(shù)據(jù)塊開始時(shí)發(fā)送一個(gè)或兩個(gè)同步字符,以使發(fā)送端與接收端雙方獲得同步。數(shù)據(jù)塊的各個(gè)字符間不存在起始位和停止位,所以通信速度比異步通信快。同步通信時(shí),如果發(fā)送的數(shù)據(jù)塊之間有時(shí)間間隔,則發(fā)送同步字符填充。 2.串行通信的傳送方式 串行通信的傳送方式可分為單工、半雙工和全雙工3種: 3.串行通信的數(shù)據(jù)傳輸速率 波特率是衡量一個(gè)通信系統(tǒng)數(shù)據(jù)傳送快慢的常用指標(biāo)。在串行通信中,波特率指每秒傳送二進(jìn)制的位數(shù),它是每一位的傳送時(shí)間的倒數(shù),也就是說波特率是每秒傳送的字符個(gè)數(shù)和每字符所含二進(jìn)制位數(shù)的乘積。波特率的單位是“波特”(baud)或位/秒(b

19、/s),它既反映了串行通信的速率,也反映了對傳輸通道的要求,波特率越高,要求傳輸通道的頻帶就越寬。 在異步串行通信中,格式位的發(fā)送和接收都必須有時(shí)鐘信號(hào)對傳送的數(shù)據(jù)進(jìn)行定時(shí)控制。發(fā)送時(shí)鐘和接收時(shí)鐘就是用來控制通信設(shè)備發(fā)送、接收字符數(shù)據(jù)速度的,該時(shí)鐘信號(hào)一般都是由外部時(shí)鐘電路產(chǎn)生的。 在發(fā)送數(shù)據(jù)時(shí),發(fā)送設(shè)備在發(fā)送時(shí)鐘的下降沿將移位寄存器的數(shù)據(jù)串行移位輸出;接收數(shù)據(jù)時(shí),接收設(shè)備在接收時(shí)鐘的上升沿對接收數(shù)據(jù)采樣,進(jìn)行數(shù)據(jù)位檢測。時(shí)鐘頻率越高,則波特率越高,通信速度就越快。 4.串行通信接口電路 能夠完成異步通信的串行接口硬件電路稱為UART,即通用異步接收/發(fā)送器。 本質(zhì)上,串行接口電路是以并行數(shù)據(jù)

20、形式與CPU接口,以串行數(shù)據(jù)形式與外部邏輯接口。MCS-51系列單片機(jī)串行通信的基本功能可以描述為:發(fā)送數(shù)據(jù)時(shí),從CPU接收并行數(shù)據(jù),轉(zhuǎn)換成一定格式的串行數(shù)據(jù),按規(guī)定的波特率逐位輸出;接收數(shù)據(jù)時(shí),將外設(shè)送來的一定格式的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)傳送給CPU。 UART發(fā)送操作圖UART接收操作4.3.2 MCS-51單片機(jī)的串行口結(jié)構(gòu)和控制 MCS-51系列的串行口內(nèi)部包含發(fā)送緩沖器和接收緩沖器,可同時(shí)接收和發(fā)送數(shù)據(jù)。發(fā)送緩沖器只能寫入不能讀出,接收緩沖器則只能讀出不能寫入。兩個(gè)緩沖器占用同一個(gè)地址(99H),并且用同一個(gè)符號(hào)SBUF表示。 與串行口設(shè)置有關(guān)的特殊功能寄存器除了定時(shí)/計(jì)數(shù)器相關(guān)設(shè)置

21、之外,還包括兩個(gè)控制寄存器:串口控制寄存器SCON和電源控制寄存器PCON。 1.串口控制寄存器SCON SCON中和串行口有關(guān)的位的功能描述如下:(1)SM0、SM1:串行口工作方式選擇位。其定義見下表。SM0 SM1工作方式功能說明0 0方式08位同步移位寄存器,波特率固定(為fosc/12)0 1方式110位UART,波特率可變(取決于T1的溢出率) 1 0方式211位UART,波特率固定(為fosc/64或fosc/32) 1 1方式311位UART,波特率可變(取決于T1的溢出率)(2)SM2:多機(jī)通信控制位。(3)REN:接收允許控制位。REN=1時(shí)允許串行口接收;REN=0時(shí)禁止

22、串行口接收。(4)TB8:發(fā)送的第9數(shù)據(jù)位。在方式2或方式3時(shí),其值由用戶軟件設(shè)置。雙機(jī)通信時(shí),TB8常作為奇偶校驗(yàn)位使用;多機(jī)通信時(shí),TB8常表示主機(jī)發(fā)送的是地址幀還是數(shù)據(jù)幀。一般約定,TB8=0為數(shù)據(jù)幀,TB8=1為地址幀。(5)RB8:接收的第9數(shù)據(jù)位。在方式2或方式3時(shí),發(fā)送機(jī)發(fā)送的第9位數(shù)據(jù)TB8被接收機(jī)接收后,存放于接收機(jī)的SCON寄存器的RB8中。 2.電源控制寄存器PCON PCON是控制CPU運(yùn)行功率的寄存器。 D7 D6 D5 D4 D3 D2 D1 D0SMOD-GF1GF0PDIDL (1)SMOD:串行口波特率的倍增位。當(dāng)SMOD=1時(shí),串行口波特率加倍;系統(tǒng)復(fù)位時(shí),

23、SMOD=0。 (2)GF1、GF0:通用標(biāo)志位。這兩個(gè)位可作為系統(tǒng)“上電復(fù)位”或“熱復(fù)位”的檢測標(biāo)志。 (3)PD:掉電方式位。PD=1時(shí),CPU立即進(jìn)入掉電的省電模式運(yùn)行。 (4)IDL:待機(jī)方式位。IDL=1時(shí),CPU立即進(jìn)入閑置的省電模式運(yùn)行。 4.3.3 MCS-51單片機(jī)串行口的工作方式 1.方式0 1)方式0發(fā)送 當(dāng)用戶應(yīng)用程序向SBUF寫入數(shù)據(jù)時(shí),在同步時(shí)鐘TXD的控制下,串行口將8位數(shù)據(jù)以fosc/12的固定波特率從RXD引腳輸出。8位數(shù)據(jù)發(fā)送完成后自動(dòng)將中斷標(biāo)志TI置位,呈中斷申請狀態(tài),再次發(fā)送數(shù)據(jù)之前,必須用軟件將TI清0。 方式0發(fā)送數(shù)據(jù)時(shí)的時(shí)序2)方式0接收 若滿足R

24、EN=1和RI=0的條件,則自動(dòng)觸發(fā)串行口的同步接收數(shù)據(jù)動(dòng)作。此時(shí)串行口開始從RXD引腳串行輸入數(shù)據(jù),波特率為fosc/12。當(dāng)接收完8位數(shù)據(jù)后,中斷標(biāo)志RI被置位,請求中斷。當(dāng)再次接收時(shí),必須由軟件將RI清0。 方式0接收數(shù)據(jù)時(shí)的時(shí)序2.方式1 1)方式1發(fā)送 當(dāng)數(shù)據(jù)寫入發(fā)送SBUF后,硬件自動(dòng)添加起始位和停止位,與8個(gè)數(shù)據(jù)位構(gòu)成一幀,由TXD引腳逐位地按照設(shè)定波特率發(fā)送出去。發(fā)送完畢,發(fā)送中斷標(biāo)志TI置1。其時(shí)序如下圖所示。 方式1發(fā)送數(shù)據(jù)時(shí)的時(shí)序2)方式1接收 要使在方式1的接收數(shù)據(jù)有效,必須滿足兩個(gè)條件:RI=0;SM2=0或接收到的停止位為1,繼而將并行數(shù)據(jù)送入接受SBUF,再置RI

25、=1,表示一幀數(shù)據(jù)接收完畢。發(fā)生的時(shí)序見下圖。 方式1接收數(shù)據(jù)時(shí)的時(shí)序3)波特率計(jì)算 方式1下串行口的波特率是可變的,與作為波特率發(fā)生器的定時(shí)器/計(jì)數(shù)器T1的溢出率有關(guān),其公式為其中,SMOD是PCON寄存器最高位的值。 當(dāng)定時(shí)器/計(jì)數(shù)器T1工作于方式2時(shí),假設(shè)計(jì)數(shù)初值為X,則定時(shí)器/計(jì)數(shù)器T1的溢出周期為:溢出率是溢出周期的倒數(shù),則波特率計(jì)算公式變?yōu)椋?定時(shí)器/計(jì)數(shù)器T1選擇使用方式2作為波特率發(fā)生器,主要是因?yàn)樵摲绞綖?位自動(dòng)加載方式,具有自動(dòng)重裝計(jì)數(shù)初值的功能,可以避免程序反復(fù)裝入初值而引起的定時(shí)誤差,使波特率較為穩(wěn)定。實(shí)際應(yīng)用時(shí),通常是通過波特率的值計(jì)算得到定時(shí)器/計(jì)數(shù)器T1的計(jì)數(shù)初值

26、,公式為:3.方式2 1)方式2發(fā)送 在發(fā)送數(shù)據(jù)前,應(yīng)首先在寄存器SCON的TB8位中把D8數(shù)據(jù)位的內(nèi)容設(shè)置好,可以用 “SETB TB8”置TB8位為1,或用“CLR TB8”置TB8為0。串行口再發(fā)送數(shù)據(jù)D0D7寫入發(fā)送SBUF,而D8位的內(nèi)容則由硬件電路從TB8中直接送到發(fā)送移位寄存器的第9位,并以此啟動(dòng)串行發(fā)送。串行口按一定波特率發(fā)完1個(gè)起始位、8個(gè)數(shù)據(jù)位,將D8和停止位也按次序從RxD引腳發(fā)出。發(fā)送完畢,發(fā)送中斷標(biāo)志TI置1。 方式2發(fā)送數(shù)據(jù)時(shí)的時(shí)序2)方式2接收 接收過程與方式1的接收過程基本相同,不同的只是在第9位數(shù)據(jù)位D8上。串行口把接收到的前8位數(shù)據(jù)送入接收SBUF,而由硬件

27、自動(dòng)將第9位數(shù)據(jù)傳送到接收機(jī)的RB8。 方式2接收數(shù)據(jù)時(shí)的時(shí)序3)波特率計(jì)算 方式2的波特率是固定的,與寄存器PCON的SMOD位有關(guān),其公式為: 波特率 = 4.方式3 方式3下的串行口也是9位異步通信接口,11位數(shù)據(jù)為一幀,通信過程與方式2的完全相同,不同之處在于方式2的波特率是固定的兩種,而方式3的波特率的設(shè)定則與方式1相同,即由定時(shí)/計(jì)數(shù)器T1的溢出率決定。 4.3.4 串行口的應(yīng)用及編程 串行口應(yīng)用時(shí)首先必須進(jìn)行初始化編程,主要任務(wù)包括設(shè)置串行口的工作方式,設(shè)定SCON寄存器;設(shè)置波特率;選擇查詢方式或中斷方式。 關(guān)于波特率,對于方式0,無需相關(guān)設(shè)置;對于方式2,僅需對PCON寄存器

28、中的SMOD位進(jìn)行編程;對于方式1和方式3,不僅要對PCON中的SMOD位編程,還要開啟定時(shí)/計(jì)數(shù)器T1,對T1編程。 常用的波特率以及與定時(shí)/計(jì)數(shù)器T1各參數(shù)之間的關(guān)系: 波 特 率(b/s)fosc/MHzSMOD定時(shí)/計(jì)數(shù)器T1方 式重 裝 值方式0最大1 M12-方式2最大375 k121-方式1和362.5 k12102FFH19.2 k11.0592102FDH9.6 k11.0592002FDH4.8 k11.0592002FAH2.4 k11.0592002F4H1.2 k11.0592002E8H137.611.05920021DH110600272H11012001FEEB

29、H 【例7】試編寫一個(gè)程序?qū)崿F(xiàn)以下功能:對串行口初始化為方式1輸入/輸出, fosc為11.059 2 MHz,波特率為9 600 b/s,首先在串行口上輸出字符串MCS-51 Microcomputer,接著讀串行口上輸入的字符,并將該字符從串行口輸出。 解:參考程序如下: MAIN: MOV TMOD, #20H MOV TH1, #0FDH MOV TL1, #0FDH SETB TR1 MOV SCON, #52H MOV R4, #0 MOV DPTR, #TSAB MLP1: MOV A, R4 MOVC A, A+DPTR JZ MLP6 MLP3: JBC TI, MLP2 SJMP MLP3MLP2: MOV SBUF, A INC R4 SJMP MLP1MLP6: JBC RI, MLP5 SJMP MLP6MLP8: JBC TI, MLP7 SJMP MLP8MLP7: MOV

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論