版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、在線教務(wù)輔導(dǎo)網(wǎng): :/教材其余課件及動畫素材請查閱在線教務(wù)輔導(dǎo)網(wǎng)QQ:349134187 或者直接輸入下面地址:第3章 MCS-51單片機(jī)的硬件資源3.1 MCS-51單片機(jī)并行I/O口3.2 MCS-51單片機(jī)中斷系統(tǒng)3.3 MCS-51單片機(jī)定時器/計數(shù)器3.4 MCS-51單片機(jī)串行通信 3.1 MCS-51單片機(jī)并行I/O口3.1.1 I/O接口的作用3.1.2 MCS-51內(nèi)部并行I/O口3.1.3 MCS-51內(nèi)部并行I/O口的應(yīng)用3.1.1 I/O接口的作用I/O接口是CPU與外設(shè)進(jìn)行信息交換的主要通道,其作用主要有:實現(xiàn)和不同外設(shè)的速度匹配改變數(shù)據(jù)傳送方式改變信號的性質(zhì)和電平C
2、PU和外設(shè)之間交換的信息有兩類,一類是數(shù)據(jù)型的,例如程序代碼、地址和數(shù)據(jù);另一類是狀態(tài)和命令型的,狀態(tài)信息包含了外設(shè)的工作狀態(tài)信息,命令信息用于控制外設(shè)的工作模式。因此,I/O接口必須能將外設(shè)傳送過來的狀態(tài)信息歸一化后傳遞給CPU,又能自動根據(jù)要求給外設(shè)發(fā)送控制命令。 3.1.2 MCS-51內(nèi)部并行I/O口MCS-51內(nèi)部提供了4個并行I/O口,分別為P0、P1、P2和P3端口,其中,P0端口為三態(tài)雙向端口,負(fù)載能力為8個LS型TTL門電路;P1P3為準(zhǔn)雙向端口,用作輸入時,端口鎖存器必須先寫“1, 負(fù)載能力為4個LS型TTL門電路。1、P0口P0口是一個漏極開路型雙向I/O口,每位能驅(qū)動8
3、個LS型TTL負(fù)載。在訪問外存儲器時,P0分時提供低8位地址和8位數(shù)據(jù)的復(fù)用總線;當(dāng)不接片外存儲器或不擴(kuò)展I/O接口時,P0可作為一個通用輸入/輸出口。當(dāng)P0作為輸入口使用時,應(yīng)先向口鎖存器寫“1,此時P0口的全部引腳浮空,可作為高阻抗輸入;當(dāng)P0口作為輸出口使用時,由于輸出電路為漏極開路電路,必須外接上拉電阻。P0口的字節(jié)地址為80H,位地址為80H87H,該口的各位口線具有完全相同但又相互獨(dú)立的邏輯電路,P0口的位結(jié)構(gòu)電路原理如圖3-1 所示。圖3-1 P0口位結(jié)構(gòu) 1在實際應(yīng)用中,P0口在絕大多數(shù)的情況下,都是作為單片機(jī)系統(tǒng)的地址/數(shù)據(jù)線使用。2P0口也可以作為通用的I/O使用。 3當(dāng)P
4、0口作為輸出口使用時,由鎖存器和驅(qū)動電路構(gòu)成數(shù)據(jù)輸出通路。 4當(dāng)P0口作為輸入口使用時,應(yīng)區(qū)分讀引腳和讀端口或稱讀鎖存器兩種情況,因此,在端口電路中有兩個用于讀入的三態(tài)緩沖器。 2、P1口 P1口是一個有內(nèi)部上拉電阻的準(zhǔn)雙向口, P1口的每一位口線能獨(dú)立用作輸入線或輸出線。作輸出時,如將“0寫入鎖存器,場效應(yīng)管導(dǎo)通,輸出線為低電平,即輸出為“0。因此在作輸入時,必須先將“1寫入口鎖存器,使場效應(yīng)管截止。該口線由內(nèi)部上拉電阻提拉成高電平,同時也能被外部輸入源拉成低電平,即當(dāng)外部輸入“1時該口線為高電平,而輸入“0時,該口線為低電平。P1口作輸入時,可被任何TTL電路和MOS電路驅(qū)動,由于具有內(nèi)部
5、上拉電阻,也可以直接被集電極度開路和漏極開路電路驅(qū)動,不必外加上拉電阻。P1口可驅(qū)動4個LSTTL門電路。 P1口的字節(jié)地址為90H,位地址為90H97H,其位結(jié)構(gòu)電路原理如圖3-2所示,P1口只能作為通用的I/O使用,所以在電路結(jié)構(gòu)上與P0口有些不同。圖 3-2 P1口位結(jié)構(gòu)3、P2口 P2口是一個帶有內(nèi)部上拉電阻的8為準(zhǔn)雙向通用I/O口,每一位口線能驅(qū)動4個LS型TTL負(fù)載;當(dāng)系統(tǒng)中接有外部存儲器時,P2口用于輸出高8位地址A15A8。P2口的字節(jié)地址為A0H,位地址為A0HA7H。P2口的位結(jié)構(gòu)電路原理如圖3-3所示,引腳上拉電阻同P1口。在結(jié)構(gòu)上,P2口比P1口多一個輸出控制局部。 圖
6、 3-3 P2口位結(jié)構(gòu) 在實際應(yīng)用中,P2口用于為系統(tǒng)提供高位地址,因此,同P0口一樣,在口電路中有一個多路轉(zhuǎn)向開關(guān)MUX,但MUX的一個輸入端不再是“地址/數(shù)據(jù),而是單一的“地址,這是因為P2口只作為地址線使用,而不是作為數(shù)據(jù)線使用。當(dāng)P2口作為高位地址線使用時,多路轉(zhuǎn)向開關(guān)應(yīng)倒向“地址端。由于P2只作為地址線使用,端口的輸出用不著是三態(tài)的,因此,P2口也是一個準(zhǔn)雙向口。此外,P2口也可以作為通用I/O口使用,這時多路轉(zhuǎn)向開關(guān)MUX倒向鎖存器Q端。4、P3口P3口是一個多用途的端口,也是一個準(zhǔn)雙向口,作為第一功能使用時,其功能同P1口。P3口的字節(jié)地址為B0H,位地址為B0HB7H。P3口的
7、位結(jié)構(gòu)的電路原理如圖3-4所示。 圖 3-4 P3口位結(jié)構(gòu) 雖然,P3口可以作為通用I/O使用,但在實際應(yīng)用中,常常使用其第二功能,如表3-1所示。 口 線第二功能信號名稱P3.0RxD串行數(shù)據(jù)接收P3.1TxD串行數(shù)據(jù)發(fā)送P3.2外部中斷0請求P3.3外部中斷1請求P3.4T0定時器/計數(shù)器0計數(shù)輸入P3.5T1定時器/計數(shù)器1計數(shù)輸入P3.6外部RAM寫選通P3.7外部RAM讀選通為了適應(yīng)P3口的需要,在口電路中增加了第二功能控制邏輯。第二功能信號有輸入和輸出兩種情況。1輸出的第二功能信號引腳。當(dāng)作為通用的I/O口使用時,電路中的“第二輸出功能線應(yīng)保持高電平,與非門開通,以維持從鎖存器到輸
8、出端數(shù)據(jù)輸出通路的暢通。當(dāng)輸出第二功能信號時,該鎖存器應(yīng)預(yù)先設(shè)置“1,是與非門對第二功能信號的輸出是暢通的,從而實現(xiàn)第二功能信號的輸出。2第二功能作為輸入信號的引腳時,在口線的輸入通路上增加了一個緩沖器,輸入的信號就從這個緩沖器的輸出端取得。而作為通用的I/O口線使用的數(shù)據(jù)輸入,仍取自三態(tài)緩沖器的輸出端。3P3口無論是作為輸入口使用還是作為第二功能信號的輸入使用,輸出電路中的鎖存器輸出和“第二功能輸出信號線都應(yīng)保持高電平。3.1.3 MCS-51內(nèi)部并行I/O口的應(yīng)用MCS-51內(nèi)部4個并行I/O口共有三種操作方式,即輸出數(shù)據(jù)方式、讀端口數(shù)據(jù)方式和讀端口引腳方式。在數(shù)據(jù)輸出方式下,CPU通過一
9、條數(shù)據(jù)操作指令就可以將輸出數(shù)據(jù)寫入P0P3的端口鎖存器,然后通過輸出驅(qū)動器送到端口引腳。因此,但凡端口操作指令都能到達(dá)從端口引腳上輸出數(shù)據(jù)的目的。例如下面指令均可以在P0口輸出數(shù)據(jù):MOVP0,A;累加器A中的內(nèi)容送入P0中ANLP0,A;P0口的內(nèi)容和累加器中的內(nèi)容進(jìn)行邏輯與操作后送入P0口讀端口數(shù)據(jù)方式是一種僅對端口鎖存器中數(shù)據(jù)進(jìn)行讀入的操作方式,CPU讀入的這個數(shù)據(jù)并非端口引腳的數(shù)據(jù)。因此,CPU只要一條傳送指令就可以將端口鎖存器中的數(shù)據(jù)讀入累加器A或內(nèi)部RAM中。例如下面指令可以從P1口輸入數(shù)據(jù):MOVA,P1;P1鎖存器中數(shù)據(jù)送入累加器A中MOV20H,P1;P1鎖存器中數(shù)據(jù)送入內(nèi)部
10、RAM20H單元中 讀引腳方式可以從端口引腳上讀入信息。在這種方式下,CPU首先必須使預(yù)讀端口引腳所對應(yīng)的鎖存器設(shè)置“1,以便驅(qū)動器中的T2管截止,然后翻開輸入三態(tài)緩沖器,使相應(yīng)端口引腳上信號輸入CPU內(nèi)部數(shù)據(jù)總線。因此,用戶在讀引腳時必須連續(xù)使用兩條指令。例如讀P1口第四位引腳上的信號的程序為:MOVP1,#0FH;使P1口低四位鎖存器置“1MOVA,P1;讀P1口第四位引腳信號應(yīng)當(dāng)指出,MCS-51內(nèi)部四個I/O口即可以字節(jié)尋址,也可以對它們位尋址,每一位即可以用作輸入,也可以用作輸出。 3.2 MCS-51單片機(jī)中斷系統(tǒng)3.2.1 中斷的定義3.2.2 中斷源3.2.3 中斷控制3.2.
11、4 中斷優(yōu)先級結(jié)構(gòu)3.2.5 中斷響應(yīng)3.2.6 中斷響應(yīng)時間3.2.7 中斷請求的撤除3.2.8 中斷系統(tǒng)的初始化3.2.9 外部中斷源的擴(kuò)展3.2.1 中斷的定義中斷是指計算機(jī)暫停原程序執(zhí)行轉(zhuǎn)而為外部設(shè)備效勞即執(zhí)行中斷效勞程序,并在效勞完成后自動返回原程序繼續(xù)執(zhí)行的過程。中斷由中斷源產(chǎn)生,中斷源在需要時可以向CPU提出“中斷請求,中斷請求通常是一種電信號,CPU一旦對這個信號進(jìn)行檢測和響應(yīng),便自動轉(zhuǎn)入該中斷源的終端效勞程序執(zhí)行,并在執(zhí)行完后自動返回原程序繼續(xù)執(zhí)行。中斷又可以定義為CPU自動執(zhí)行終端效勞程序并返回原程序繼續(xù)執(zhí)行的過程。引入中斷的概念可以提高單片機(jī)的工作效率和處理數(shù)據(jù)的實時性。
12、1提高CPU的工作效率2提高處理數(shù)據(jù)的實時性3.2.2 中斷源中斷源是指引起中斷原因的設(shè)備或部件,或發(fā)出中斷請求信號的源,不同型號的單片機(jī)系統(tǒng)的中斷源數(shù)量也不同,MCS-51系列單片機(jī)中的51單片機(jī)提供了5個中斷源,均有兩級優(yōu)先級,通過4個中斷控制器即IE、IP、TCON和SCON進(jìn)行中斷管理,其結(jié)構(gòu)如圖3-5所示。1外部設(shè)備中斷源 2控制對象中斷源3故障中斷源4定時脈沖中斷源圖3-5 MCS-51中斷系統(tǒng)結(jié)構(gòu)具體地,MCS-51中斷系統(tǒng)如圖3-5所示,五個中斷源是:1 來自P3.2引腳上的外部中斷請求外中斷0。2 來自P3.3引腳上的外部中斷請求外中斷1。3T0 片內(nèi)定時器/計數(shù)器0溢出TF
13、0中斷請求。4T1 片內(nèi)定時器/計數(shù)器1溢出TF1中斷請求。5串行口 片內(nèi)串行口完成一幀發(fā)送或接收中斷請求源TI或RI。每一個中斷源都對應(yīng)有一個中斷請求標(biāo)志位,它們設(shè)置在特殊功能存放器TCON和SCON中。當(dāng)這些中斷源請求中斷時,分別由TCON和SCON中的相應(yīng)位來鎖存。3.2.3 中斷控制MCS-51單片機(jī)設(shè)置了4個專用存放器用于中斷控制,用戶通過設(shè)置其狀態(tài)來管理中斷系統(tǒng)。1定時器控制存放器TCONTCON是定時器/計數(shù)器0和1T0,T1的控制存放器,它同時也用來鎖存T0,T1的溢出中斷請求源和外部中斷請求源。TCON存放器中與中斷有關(guān)的位如下所示。 TF1TF0IE1IT1IE0IT0 D
14、7 D6 D5 D4 D3 D2 D1 D0 2串行口控制存放器SCON串行口控制存放器SCON中的高6位用于串行口控制,其功能將在后續(xù)章節(jié)中介紹;低2位RI、TI用作串行口中斷標(biāo)志,如下所示。 SM0SM1SM2RENTB8RB8TIRI D7 D6 D5 D4 D3 D2 D1 D0 3中斷允許控制存放器IE在MCS-51中斷系統(tǒng)中,中斷允許或禁止是由片內(nèi)的中斷允許存放器IEIE為特殊功能存放器控制的,IE中的各位功能如下:EAESET1EX1ET0EX0 D7 D6 D5 D4 D3 D2 D1 D0 4中斷優(yōu)先級控制存放器IPMCS-51中斷系統(tǒng)提供兩個中斷優(yōu)先級,對于每一個中斷請求源
15、都可以編程為高優(yōu)先級中斷源或低優(yōu)先級中斷源,以便實現(xiàn)二級中斷嵌套。中斷優(yōu)先級是由片內(nèi)的中斷優(yōu)先級存放器IP特殊功能存放器控制的。IP存放器中各位的功能說明如下: PSPT1PX1PT0PX0D7 D6 D5 D4 D3 D2 D1 D0 3.2.4 中斷優(yōu)先級結(jié)構(gòu)MCS-51中斷系統(tǒng)具有兩級優(yōu)先級由IP存放器把各個中斷源的優(yōu)先級分為高優(yōu)先級和低優(yōu)先級,它們遵循以下兩條根本規(guī)那么:1低優(yōu)先級中斷源可被高優(yōu)先級中斷源所中斷,而高優(yōu)先級中斷源不能被任何中斷源所中斷;2一種中斷源不管是高優(yōu)先級或低優(yōu)先級一旦得到響應(yīng),與它同級的中斷源不能再中斷它。 當(dāng)同時收到幾個同一優(yōu)先級的中斷時,響應(yīng)哪一個中斷源取決
16、于內(nèi)部查詢順序。其優(yōu)先級排列如下:中斷源外部中斷0定時器/計數(shù)器0溢出外部中斷1定時器/計數(shù)器1溢出串行口定時器/計數(shù)器2溢出同級內(nèi)的優(yōu)先權(quán)最高最低3.2.5 中斷響應(yīng)CPU在本條指令機(jī)器周期的末尾即S5P2狀態(tài)時刻采樣中斷標(biāo)志,并將其鎖存在相應(yīng)中斷標(biāo)志位中,在下一個機(jī)器周期即響應(yīng)中斷的第一個機(jī)器周期S6對采樣到的中斷進(jìn)行查詢。如果在前一個機(jī)器周期的S5P2有中斷標(biāo)志,那么在查詢周期內(nèi)便會查詢到并按優(yōu)先級上下進(jìn)行中斷處理,中斷系統(tǒng)將控制程序轉(zhuǎn)入相應(yīng)的中斷效勞程序。以下三個條件中任何一個都能封鎖CPU對中斷的響應(yīng):1CPU正在處理同級的或高一級的中斷;2現(xiàn)行的機(jī)器周期不是當(dāng)前所執(zhí)行指令的最后一個
17、機(jī)器周期;3當(dāng)前正在執(zhí)行的指令是返回RETI指令或是對IE或IP存放器進(jìn)行讀/寫的指令。 CPU響應(yīng)中斷時,先置相應(yīng)的優(yōu)先級激活觸發(fā)器,封鎖同級和低級的中斷。然后根據(jù)中斷源的類別,在硬件的控制下,程序轉(zhuǎn)向相應(yīng)的向量入口單元,執(zhí)行中斷效勞程序。硬件調(diào)用中斷效勞程序時,把程序計數(shù)器PC的內(nèi)容壓入堆棧但不能自動保存程序狀態(tài)字PSW的內(nèi)容,同時把被響應(yīng)的中斷效勞程序的入口地址裝入PC中。五個中斷源效勞程序的入口地址如表3-2所示: 中 斷 源入口地址外部中斷00003H定時器0溢出000BH外部中斷10013H定時器1溢出001BH串行口中斷0023H表3-2 MCS-51中斷效勞程序入口地址 中斷效
18、勞程序的最后一條指令必須是中斷返回指令RETI。CPU執(zhí)行完這條指令后,把響應(yīng)中斷時所置位的優(yōu)先級激活觸發(fā)器清0,然后從堆棧中彈出兩個字節(jié)內(nèi)容斷點(diǎn)地址裝入程序計數(shù)器PC中,CPU就從原來被中斷處重新執(zhí)行被中斷的程序。 3.2.6 中斷響應(yīng)時間外部中斷 和 的電平在每個機(jī)器周期的S5P2時被采樣并鎖存到IE0和IE1中,這個置入到IE0和IE1的狀態(tài)在下一個機(jī)器周期才被查詢電路查詢,如果產(chǎn)生了一個中斷請求,而且滿足響應(yīng)的條件,CPU響應(yīng)中斷,由硬件生成1條長調(diào)用指令轉(zhuǎn)到相應(yīng)的效勞程序入口。這條指令是雙機(jī)器周期指令。因此,從中斷請求有效到執(zhí)行中斷效勞程序的第1條指令的時間間隔至少需要3個完整的機(jī)器
19、周期。 如果中斷請求被前面所述的三個條件之一所封鎖,將需要更長的響應(yīng)時間。假設(shè)一個同級的或高優(yōu)先級的中斷已經(jīng)在進(jìn)行,那么延長的等待時間顯然取決于正在處理的中斷效勞程序的長度,如果正在執(zhí)行的一條指令還沒有進(jìn)行到最后一個周期,那么所延長的等待時間不會超過3個機(jī)器周期,這是因為MCS-51指令系統(tǒng)中最長的指令(MUL和DIV)也只有4個機(jī)器周期;假假設(shè)正在執(zhí)行的是RETI指令或者是訪問IE或IP指令,那么延長的等待時間不會超過5個機(jī)器周期(為完成正在執(zhí)行的指令還需要1個周期,加上為完成下一條指令所需要的最長時間4個機(jī)器周期,如MUL和DIV指令)。 因此,在系統(tǒng)中只有一個中斷源的情況下,響應(yīng)時間總是
20、在38個機(jī)器周期 3.2.7 中斷請求的撤除在中斷請求被響應(yīng)前,中斷源發(fā)出的中斷請求是由CPU鎖存在特殊功能存放器TCON和SCON的相應(yīng)中斷標(biāo)志位中的。一旦某個中斷請求得到響應(yīng),CPU必須把它的相應(yīng)中斷標(biāo)志位復(fù)位成“0狀態(tài)。否那么,MCS-51就會因為中斷標(biāo)志位未能得到及時撤除而重復(fù)響應(yīng)同一中斷請求,這是絕對不能容許的。8031、8051和8751有5個中斷源,但實際上分屬于三種中斷類型。這三種類型是:外部中斷、定時器溢出中斷和串行口中斷。對于這三種中斷類型的中斷請求,其撤除方法是不相同的?,F(xiàn)對它們分述如下: 1定時器溢出中斷請求的撤除TF0和TF1是定時器溢出中斷標(biāo)志位見TCON,它們因定
21、時器溢出中斷源的中斷請求的輸入而置位,因定時器溢出中斷得到響應(yīng)而自動復(fù)位成“0狀態(tài)。因此,定時器溢出中斷源的中斷請求是自動撤除的,用戶根本不必專門為它們撤除。 2串行口中斷請求的撤除TI和RI是串行口中斷的標(biāo)志位見SCON,中斷系統(tǒng)不能自動將它們撤除,這是因為MCS-51進(jìn)入串行口中斷效勞程序后常需要對它們進(jìn)行檢測,以測定串行口發(fā)生了接收中斷還是發(fā)送中斷。為防止CPU再次響應(yīng)這類中斷,用戶應(yīng)在中斷效勞程序的適當(dāng)位置處通過如下指令將它們撤除。CLR TI ;撤除發(fā)送中斷CLR RI ;撤除接收中斷假設(shè)采用字節(jié)型指令,那么也可采用如下指令:ANL SCON,#0FCH;撤除發(fā)送和接收中斷 3外部中
22、斷請求的撤除外部中斷請求有二種觸發(fā)方式;電平觸發(fā)和負(fù)邊沿觸發(fā)。對于這兩種不同的中斷觸發(fā)方式,MCS-51撤除它們的中斷請求的方法是不相同的。 在負(fù)邊沿觸發(fā)方式下; 在電平觸發(fā)方式下;INSVR:ANLP1,#0FEH ORLP1,#01H CLRIE0 END圖3-6電平外部中斷的撤除電路3.2.8 中斷系統(tǒng)的初始化MCS-51中斷系統(tǒng)功能,是可以通過上述特殊功能存放器統(tǒng)一管理的,中斷系統(tǒng)初始化是指用戶對這些特殊功能存放器中的各控制位進(jìn)行賦值。 1、中斷系統(tǒng)初始化中斷系統(tǒng)初始化步驟如下:1開相應(yīng)中斷源的中斷;2設(shè)定所用中斷源的中斷優(yōu)先級;3假設(shè)為外部中斷,那么應(yīng)規(guī)定低電平還是負(fù)邊沿的中斷觸發(fā)方
23、式。 采用位操作指令進(jìn)行中斷系統(tǒng)初始化是比較簡單的,因為用戶不必記住各控制位存放器中確實切位置,而各控制位名稱是比較容易記憶的。 2【例3-1】請寫出為低電平觸發(fā)的中斷系統(tǒng)初始化程序。解:1采用位操作指令SETBEASETBEX1 ; 開中斷SETBPX1;令 為高優(yōu)先級CLRIT1;令 為電平觸發(fā) 2采用字節(jié)型指令MOVIE,#84H; 開中斷ORLIP,#04H ;令 為高優(yōu)先級ANLTCON,#0FBH;令 為電平觸發(fā)2、外部中斷設(shè)定的步驟:ORG03H13H ; 外部中斷的起始地址JMPEXT;中斷時跳至中斷子程序EXTMOVIE, #10000001BH; 中斷使能MOVIE, #1
24、0000100BH ; 中斷使能MOV IP, #00000001BH; 中斷優(yōu)先MOV IP, #00000100BH ;中斷優(yōu)先MOV TCON,#00000000B;設(shè)定 為電平觸發(fā)MOV TCON,#00000001B;設(shè)定 為負(fù)邊沿觸發(fā)MOV TCON,#00000000B;設(shè)定 為電平觸發(fā)MOV TCON,#00000100B;設(shè)定 為負(fù)邊沿觸發(fā)3、TIMER0或TIMER1的中斷請求 當(dāng)計數(shù)溢出時會設(shè)定TFX=1,而對8051提出中斷請求。TIMER0或TIMER1中斷請求設(shè)定的步驟如下: 1定中斷起始地址ORG 0BH ;TIMER0ORG 1BH ;TIMER12 定工作方式
25、MOV TMOD ,#XXXXXXXXB3設(shè)定計數(shù)值MOV THX,#XXXXMOV TLX,#XXXX4設(shè)定中斷使能MOV IE,#1000X0X03.2.9 外部中斷源的擴(kuò)展MCS-51單片機(jī)只提供了兩個外部中斷請求輸入端,而實際應(yīng)用中,如果需要使用多個外部中斷源時,就必須進(jìn)行外部中斷源的擴(kuò)展。下面介紹兩種常用的外部中斷源擴(kuò)展方法。1、定時器/計數(shù)器用于外部中斷源的擴(kuò)展MCS-51單片機(jī)有兩個定時器/計數(shù)器,它們用作計數(shù)器使用時,技術(shù)輸入端T1或T0發(fā)生負(fù)跳變將計數(shù)器加1.利用此特性,適當(dāng)處理計數(shù)器初值,就可以將計數(shù)器輸入端T1或T0作為外部中斷源請求輸入端,而定時器/計數(shù)器的溢出中斷TF
26、1或TF0作為外部中斷請求標(biāo)志。例如,將定時器/計數(shù)器0設(shè)置為工作方式2,計數(shù)模式,計數(shù)初值為0FFH,且允許中斷,其初始化程序如下: ORG0000HMOVTMOD,#06H;設(shè)置定時器0為工作方式2,計數(shù)模式MOVTH0,#0FFH;設(shè)置計數(shù)器初值MOVTL0,#0FFHSETBET0;允許定時器中斷SETBEA;CPU開中斷SETBTR0;啟動定時器0 執(zhí)行以上程序后,當(dāng)定時器/計數(shù)器0計數(shù)輸入T0的信號發(fā)生負(fù)跳變時,TL0加1,產(chǎn)生溢出,標(biāo)志位TF0置1,向CPU發(fā)出中斷請求,同時,TH0的值重新送入TL0中,這樣,T0端相當(dāng)于脈沖方式的外部中斷請求輸入端。注意:用此方法擴(kuò)展外部中斷源
27、是以占用內(nèi)部定時中斷為代價的。2、查詢式擴(kuò)展外部中斷源當(dāng)外部中斷源較多時,可以采用查詢式擴(kuò)展外部中斷源。將多個中斷源通過硬件如或非門引入外部中斷源輸入端或,同時,又連到某I/O接口。這樣,每個中斷源都可能引起中斷,并在中斷效勞程序中通過軟件查詢的次序便可以確定是哪一個中斷源正在進(jìn)行中斷請求,其查詢的次序由中斷源優(yōu)先級決定,這樣,可實現(xiàn)多個外部中斷源的擴(kuò)展。如圖3-7所示,為5個外部中斷源的連接電路,其中,設(shè)備14經(jīng)過OC門與連接,并連接到P1.0P1.3上,均采用電平觸發(fā)方式。設(shè)備0為最高級中斷源,單獨(dú)作為外部中斷0的輸入信號。外部中斷1的終端效勞程序如下: INTR:PUSHPSW;程序狀態(tài)
28、字PSW壓入堆棧保護(hù)PUSHA;累加器內(nèi)容壓入堆棧保護(hù)JNBP1.0,DVT1;P1.0引腳為0,轉(zhuǎn)設(shè)備1中斷效勞程序JNBP1.1,DVT2;P1.1引腳為0,轉(zhuǎn)設(shè)備2中斷效勞程序JNBP1.2,DVT3;P1.2引腳為0,轉(zhuǎn)設(shè)備3中斷效勞程序JNBP1.3,DVT4;P1.3引腳為0,轉(zhuǎn)設(shè)備4中斷效勞程序INTR1:POPAPOPPSWRETIDVT1:AJMPINTR1;設(shè)備1中斷效勞程序入口DVT2:;跳轉(zhuǎn)到INTR1AJMPINTR1;設(shè)備2中斷效勞程序入口DVT3:;跳轉(zhuǎn)到INTR1AJMPINTR1;設(shè)備3中斷效勞程序入口DVT4:;跳轉(zhuǎn)到INTR1AJMPINTR1;設(shè)備4中斷
29、效勞程序入口圖3-7 查詢式擴(kuò)展外部中斷源連接電路圖3.3 MCS-51單片機(jī)定時器/計數(shù)器3.3.1 定時器/計數(shù)器的結(jié)構(gòu)及工作原理3.3.2 控制定時器/計數(shù)器的存放器3.3.3 定時器/計數(shù)器的初始化3.3.3 定時器/計數(shù)器的工作方式3.3.1 定時器/計數(shù)器的結(jié)構(gòu)及工作原理在實時控制系統(tǒng)中,常常需要有實時時鐘以實現(xiàn)定時或延時控制,MCS-51單片機(jī)內(nèi)部提供了兩個16位可編程的定時器/計數(shù)器,即定時器T0和定時器T1,它們既可用作定時器方式,又可用作計數(shù)器方式。它們各由兩個獨(dú)立的8位存放器組成,利用T0和T1可以完成事件計數(shù)、測量時間間隔和脈沖寬度以及產(chǎn)生定時中斷請求等功能。定時器/計
30、數(shù)器的根本部件是兩個8位的計數(shù)器其中TH1,TL1是T1的計數(shù)器,TH0,TL0是T0的計數(shù)器拼裝而成。可通過設(shè)置特殊功能存放器TMON中的控制位來選擇T0或T1為定時器還是計數(shù)器。T0或T1狀態(tài)字在相應(yīng)的特殊功能存放器中,通過對控制存放器的設(shè)置,來選擇定時器/計數(shù)器的工作模式。MCS-51單片機(jī)定時器/計數(shù)器的結(jié)構(gòu)如圖3-8所示。 圖3-8 MCS-51單片機(jī)定時器/計數(shù)器結(jié)構(gòu)圖在作定時器使用時,輸入的時鐘脈沖是由晶體振蕩器的輸出經(jīng)12分頻后得到的,所以定時器也可看作是對計算機(jī)機(jī)器周期的計數(shù)器因為每個機(jī)器周期包含12個振蕩周期,故每一個機(jī)器周期定時器加1,可以把輸入的時鐘脈沖看成機(jī)器周期信號
31、。故其頻率為晶振頻率的1/12。如果晶振頻率為12MHZ,那么定時器每接收一個輸入脈沖的時間為1us。當(dāng)它用作對外部事件計數(shù)時,接相應(yīng)的外部輸入引腳T0P3.4或T1(P3.5)。在這種情況下,當(dāng)檢測到輸入引腳上的電平由高跳變到低時,計數(shù)器就加1它在每個機(jī)器周期的S5P2時采樣外部輸入,當(dāng)采樣值在這個機(jī)器周期為高,在下一個機(jī)器周期為低時,那么計數(shù)器加1。加1操作發(fā)生在檢測到這種跳變后的一個機(jī)器周期中的S3P1,因此需要兩個機(jī)器周期來識別一個從“1到“0的跳變,故最高計數(shù)頻率為晶振頻率的1/24。這就要求輸入信號的電平要在跳變后至少應(yīng)在一個機(jī)器周期內(nèi)保持不變,以保證在給定的電平再次變化前至少被采
32、樣一次。 3.3.2 控制定時器/計數(shù)器的存放器 定時器/計數(shù)器有四種工作方式,其工作方式的選擇及控制都由兩個特殊功能存放器TMOD和TCON的內(nèi)容來決定。用指令改變TMOD或TCON的內(nèi)容后,那么在下一條指令的第一個機(jī)器周期的S1P1時起作用。 1、定時器的方式存放器TMOD特殊功能存放器TMOD為定時器的方式控制存放器,存放器中每位的定義如圖3-9所示。TMOD的地址為89H,其中高4位用于定時器1,低4位用于定時器0,其中M1,M0用來確定所選的工作方式,如表3-3所示。M1 M0方 式說 明0 0013位定時器/計數(shù)器0 1116位定時器/計數(shù)器1 02自動裝入時間常數(shù)的8位定時器/計
33、數(shù)器1 13對T0分為兩個8位獨(dú)立計數(shù)器;對T1置方式3時停止工作(無中斷重裝8位計數(shù)器)表3-3 工作方式選擇表 2、定時器控制存放器TCON 特殊功能存放器TCON用于控制定時器的操作及對定時器中斷的控制,包括對定時器的啟動、停止以及溢出時設(shè)定標(biāo)志位和外部中斷觸發(fā)方式等。其地址為88H,位地址為88H8FH,控制字各位定義如圖3-10所示。 圖3-10 TCON存放器各位定義 3.3.3 定時器/計數(shù)器的初始化1、初始化步驟:1根據(jù)題目要求先給定時器方式存放器TMOD送一個方式控制字,以設(shè)定定時器/計數(shù)器的相應(yīng)工作方式。2根據(jù)實際需要給定時器/計數(shù)器選送定時器初值或計數(shù)器初值,以確實需要定
34、時的時間和需要記數(shù)的初值。3根據(jù)需要給中斷允許存放器IE選送中斷控制字和給中斷優(yōu)先級存放器IP選送中斷優(yōu)先級字,以開放相應(yīng)中斷和設(shè)定中斷優(yōu)先級。4給定時器控制存放器TCON送命令字,以啟動或禁止定時器/計數(shù)器的運(yùn)行。一般使用指令SETBTRi來啟動定時器/計數(shù)器。 2、計數(shù)器初值的計算定時器/計數(shù)器可用軟件隨時隨地起動和關(guān)閉,起動時它就自動加“1記數(shù),一直記到滿,即全為“1,假設(shè)不停止,計數(shù)值從全“1變?yōu)槿?,同時將計數(shù)溢出位置“1并向CPU發(fā)出定時器溢出中斷申請。對于各種不同的工作方式最大的定時時間和計數(shù)數(shù)不同。這里在使用中就會出現(xiàn)兩個問題: 1要產(chǎn)生比定時器最大的定時時間還要小的時間和計
35、數(shù)器最大計數(shù)次數(shù)還要小的計數(shù)次數(shù)怎么辦?2要產(chǎn)生比定時器最大的定時時間還要大的時間和計數(shù)器最大計數(shù)次數(shù)還要大的計數(shù)次數(shù)怎么辦? 解決以上第一個問題只要給定時器/計數(shù)器一個非零初值,開定時器/計數(shù)器時,定時器/計數(shù)器不從0開始,而是從初值開始,這樣就可得到比定時器/計數(shù)器最大的定時時間和計數(shù)次數(shù)還要小的時間和計數(shù)次數(shù);解決第二個問題就要用到循環(huán)程序了,循環(huán)幾次就相當(dāng)于乘幾。例如要產(chǎn)生1秒的定時你可先用定時器產(chǎn)生50MS的定時,再循環(huán)20次就行了,因為1S=1000MS,也可用其它的組合。有時也可采用中斷來實現(xiàn)。 我們把計數(shù)器從初值開始作加1計數(shù)到計滿為全1所需要的計數(shù)值設(shè)定為C和計數(shù)初值設(shè)定為D
36、,由此便可得到如下的計算通式:D=M-C1式中,M為計數(shù)器模值,該值和計數(shù)器工作方式有關(guān)。在方式0時M為213;在方式1時M為216;在方式2和方式3時M為28。在定時器模式下,計數(shù)器由單片機(jī)脈沖經(jīng)12分頻后計數(shù)。因此,定時器定時時間T的計算公式為:T=TMTC12/fOSC s2式中,TM為計數(shù)器從初值開始作加1計數(shù)到計滿為全1所需要的時間,TM為模值,和定時器的工作方式有關(guān);fOSC是單片機(jī)晶體振蕩器的頻率,TC為定時器的定時初值。在式2中,假設(shè)設(shè)TC=0,那么定時器定時時間為最大初值為0,計數(shù)從全0到全1,溢出后又為全0。由于M的值和定時器工作方式有關(guān),因此不同工作方式下定時器的最大定時
37、時間也不一樣。例如:假設(shè)設(shè)單片機(jī)主脈沖晶體振蕩器頻率fOSC為12MHz,那么最大定時時間為:方式0時 TMmax=2131S=8.192ms方式1時 TMmax=216 1s=65.536ms方式2和3時 TMmax=28 1s=0.256ms【例3-2】假設(shè)單片機(jī)時鐘頻率fOSC為12MHz,請計算定時2ms所需的定時器初值。解:由于定時器工作在方式2和方式3下時的最大定時時間只有0.256ms,因此要想獲得2ms的定時時間定時器必須工作在方式0或方式1。1假設(shè)采用方式0,那么根據(jù)式2可得定時器初值為:TC=213-2MS/1s=6129=1830H注意:這不是定時器工作在方式0時的初值,
38、因定時器工作在方式0時是13位,高字節(jié)8位,低字節(jié)5位,所以還要進(jìn)行適當(dāng)?shù)淖儞Q,因為:1830H=0001 1000 0011 0000按13位重新組合成00011000001 10000 這組數(shù)就可拼成:1100 0001 0001 0000這樣就得到定時器工作在方式0時的初值C110H即:TH0應(yīng)裝C1H;TL0應(yīng)裝10H高3位為02假設(shè)采取方式1,那么有:TC=216-2MS/1s=63536=F830H 即:TH0應(yīng)裝F8H;TL0應(yīng)裝30H【例3-3】設(shè)T1作定時器,以方式1工作,定時時間為10MS;T0作計數(shù)器,以方式2工作,外界發(fā)生一次事件即溢出。試給出定時器的初始化程序。解:T
39、1的時間常數(shù)為:216-TC2s=10msTC=EC78H參考初始化程序如下:MOV TMOD,#16H ;T1定時方式1,T0計數(shù)方式2,即置TMOD存放器 的內(nèi)容為00010110MOVTL0,#0FFH;T0時間常數(shù)送TL0MOVTH0,#0FFH;T0時間常數(shù)送TH0MOVTL1,#78H;T1時間常數(shù)低8位送TL1MOVTH1,#0ECH;T1時間常數(shù)高8位送TH1SETB TR0;置TR0為1允許T0啟動計數(shù)SETB TR1;置TR1為1允許T1啟動計數(shù)【例3-4】設(shè)定時器T0,以方式1工作,試編寫一個延時1秒的子程序。解:假設(shè)主頻頻率為6MHZ可求得T0的最大定時時間為: TMm
40、ax=216 2s=131.072ms用定時器獲得100ms的定時時間再加10次循環(huán)得到1秒的延時,可算得100ms定時的定時初值:216-TC2s=100ms=100000sTC=216-50000=15536TC=3CB0H 參考程序如下:ORG0000HMOVTMOD,#01HMOVR7, #10TIME:MOVTL0, #0B0HMOVTH0, #3CHSETBTR1LOOP1:JBCTF0, LOOP2JMPLOOP1LOOP2:DJNZ R7, TIMERETEND3.3.3 定時器/計數(shù)器的工作方式MCS-51單片機(jī)的定時器/計數(shù)器共有四種工作模式,即方式0、方式1、方式2和方式
41、3。定時器T0和定時器T1的工作原理根本相同。各種方式的選擇是通過TMOD的M1、M0兩位進(jìn)行編碼來實現(xiàn)的。 1、方式01邏輯電路圖當(dāng)TMOD中的M1M0位為00時,定時器/計數(shù)器就以方式0進(jìn)行工作。圖3-11是方式0的邏輯電路圖。方式0是13位計數(shù)器結(jié)構(gòu)的工作方式,其計數(shù)器由TH0全部8位和TL0的低5位構(gòu)成,TL0的高3位不用。 圖3-11 定時器/計數(shù)器方式0的邏輯電路圖 計數(shù)器的啟動和停止主要由門控位GATE和運(yùn)行控制位TR0來控制,當(dāng)GATE=0時,計數(shù)器運(yùn)行條件只取決于TR0;當(dāng)GATE=1時,那么由TR0和 共同決定。 1由TR0控制如圖3-11所示,假設(shè)要運(yùn)行控制位TR0能夠控
42、制定時器/計數(shù)器的運(yùn)行,那么其或門的輸出一定是1,這就意味著要設(shè)置GATE=0或 =1,因此,在單片機(jī)的定時或計數(shù)應(yīng)用中,要注意定時器方式存放器TMOD的GATE位一定要設(shè)置為0。2由 控制 當(dāng)GATE=0且TR0=1時,定時器/計數(shù)器的或門只受 控制,與門也可以間接接受 控制,于是外部中斷信號電平通過引腳P3.2直接啟動或關(guān)閉計數(shù)通道,這種控制方法常用來測量外部信號的脈沖寬度。 2定時和計數(shù)的應(yīng)用 在方式0下,當(dāng)為計數(shù)方式工作時,計數(shù)值的范圍是18192213;當(dāng)為定時工作方式時,定時時間的計算公式為:T=213-計數(shù)初值晶振周期123假設(shè)晶振頻率為6MHz,那么其最小定時時間為:Tmin=
43、213-213-11/610-612=210-6=2s最大定時間為:Tmax=213-01/610-612=210-6=16384s 【例3-5】設(shè)單片機(jī)晶振頻率fosc=6MHz,使用定時器1以方式0產(chǎn)生500s的等寬正方波連續(xù)脈沖,并由P1.0輸出,以查詢方式完成。解:計算計數(shù)初值:產(chǎn)生500s的等寬正方波脈沖,那么需要P1.0端口以250s為周期交替輸出上下電平,為此,定時時間應(yīng)為250s。使用晶振頻率fosc=6MHz,那么一個機(jī)器周期為2s。方式0為13位計數(shù)結(jié)構(gòu)。設(shè)待求的計數(shù)初值為X,根據(jù)公式3,那么有:213-X210-6=25010-6解得,這樣得到T1的高8位為0FCH,低5
44、位為03H,其中高8位放入TH1,低5位放入TL1。相關(guān)控制存放器的設(shè)定為:TMOD各位設(shè)定:為將T1的工作方式設(shè)定為方式0,那么M1M0=00;為實現(xiàn)定時功能,設(shè)定;為實現(xiàn)T1的運(yùn)行控制,設(shè)定GATE=0;T0不用,一般來說不需要改變其原始設(shè)置,為此,在程序設(shè)計時,應(yīng)加以屏蔽。TCON地址:88H是可以位尋址的,故采用位尋址方式,設(shè)置TR1=1來控制啟動定時器T1;設(shè)置TR1=0來停止定時器T1。IE的設(shè)定:此題要求采用查詢方式,當(dāng)定時時間到定時器溢出標(biāo)志位TF1置1時,不允許產(chǎn)生中斷,故應(yīng)禁止中斷,即置IE=00H。 參考程序如下:ANLTMOD,#0FH;設(shè)置T1為定時工作方式0ORLT
45、MOD,#00HMOVTH1, #0FCH;設(shè)置計數(shù)初值MOVTL1, #03HMOVIE, #00H;禁止中斷SETB TR1;啟動定時器LOOP:JBC TF1,LOOP1;查詢計數(shù)溢出AJMP LOOPLOOP1:MOVTH1, #0FCH;重新設(shè)置計數(shù)初值MOVTL1, #03HCPLP1.0;輸出取反AJMP LOOP;重復(fù)循環(huán)END2、方式1 當(dāng)TMOD中的M1M0=01H時,定時器/計數(shù)器以方式1進(jìn)行工作。方式1是16位計數(shù)結(jié)構(gòu)的工作方式,計數(shù)器由TH0全部的8位和TL0全部8位構(gòu)成,其邏輯電路和工作方式與方式0相同,唯一區(qū)別的是方式1的計數(shù)器長度為16位。圖3-12給出了定時器
46、/計數(shù)器以方式1工作的邏輯電路圖。MCS-51單片機(jī)之所以重復(fù)設(shè)置幾乎完全一樣的方式0和方式1,主要是出于與MCS-48單片機(jī)兼容的考慮。圖3-12 定時器/計數(shù)器方式1的邏輯電路圖 當(dāng)定時器/計數(shù)器在方式1下做計數(shù)器使用時,其計數(shù)范圍:1655360216。當(dāng)定時器/計數(shù)器在方式1下做定時器使用時,其定時時間計算公式為:T=216-計數(shù)初值晶振周期124假設(shè)晶振頻率為6MHz,那么其最小定時時間為:Tmin=216-216-11/610-612=210-6=2s最大定時間為:Tmax=216-01/610-612=13107210-6=131072s【例3-6】設(shè)單片機(jī)晶振頻率fosc=6M
47、Hz,使用定時器0以方式1產(chǎn)生500s的等寬正方波連續(xù)脈沖,并由P1.0輸出,試編寫其相關(guān)程序。解:解題步驟與例3.5類似。計算計數(shù)初值:216-X1/610-612=25010-6解得:X=65411D=0FF83H,那么有TH0=0FFH,TL0=83H設(shè)置相關(guān)控制存放器:設(shè)置TMOD為XXXX0001BIE和TCON均采用為尋址方式。參考程序如下:ORG0000HAJMP MAINORG 000BHAJMP INTPORG 0100HMAIN:ANLTMOD,#0F0H;設(shè)置定時器T0工作方式1ORLTMOD,#01H;不影響定時器T1的工作MOVTH0,#0FFH;設(shè)置計數(shù)初值MOVT
48、L0,#83HSETBEA;CPU開中斷SETBET0;定時器T0開中斷SETBTR0;啟動定時器T0SJMP$;等待中斷INTP:MOVTH0,#0FFH;重新設(shè)置計數(shù)初值MOVTL0,#83HCPLP1.0;輸出取反RETI;中斷返回END 3、方式2方式0和方式1的特點(diǎn)是計數(shù)溢出后,計數(shù)回“0,而不能自動重裝初值,因此,循環(huán)定時或循環(huán)計數(shù)應(yīng)用時就存在反復(fù)設(shè)置計數(shù)初值的問題,不但影響定時精度,同時也增加了程序設(shè)計的復(fù)雜程度。方式2就是針對這類問題而設(shè)置的,它具有自動重裝計數(shù)初值的功能。當(dāng)TMOD中的M1M0=10H時,定時器/計數(shù)器就以方式2進(jìn)行工作。方式2中將16位的計數(shù)器拆成了2個8位
49、計數(shù)器,低8位TL用作計數(shù)器;高8位TH用作預(yù)置計數(shù)器,初始化時將計數(shù)初值分別裝入TL和TH中。當(dāng)計數(shù)溢出時,由預(yù)置計數(shù)器自動給計數(shù)器TL重新裝入初值。方式2的邏輯電路圖如圖3-13所示。 圖3-13 定時器/計數(shù)器方式2的邏輯電路圖 初始化時,8位計數(shù)初值同事裝入TL0和TH0中,TL0計數(shù)溢出時,置位TF0,同時將保存在預(yù)置計數(shù)器TH0中的計數(shù)初值自動裝入TL0,然后,TL0重新計數(shù),如此循環(huán)重復(fù)工作。這不但省去了用戶程序中的重裝初值指令,而且也有利于提高定時精度。但這種工作方式是8位計數(shù)結(jié)構(gòu),計數(shù)值有限,最大只能到255。方式2的自動重裝功能非常適用于循環(huán)定時或循環(huán)計數(shù)應(yīng)用,如用于固定寬
50、度的脈沖和用作串行數(shù)據(jù)通信的波特率發(fā)生器?!纠?-7】設(shè)單片機(jī)晶振頻率fosc=6MHz,使用定時器0以方式2產(chǎn)生100s的定時,在P1.0端口輸出周期為200s的連續(xù)正方波脈沖,試編寫其相關(guān)程序。解:解題步驟與例3.5類似。計算計數(shù)初值:28-X1/610-612=10010-6解得:X=206D=0CEH。設(shè)置相關(guān)控制存放器:設(shè)置TMOD為:M1M0=10H;為實現(xiàn)定時功能,設(shè)定;為允許T0能通過TR0進(jìn)行運(yùn)行控制,設(shè)置GATE=0;T1不用,一般來說不需要改變其原始設(shè)置,為此,在程序設(shè)計時,應(yīng)加以屏蔽。IE和TCON均采用為尋址方式,即分別相應(yīng)位置“1或清零 參考程序如下以查詢方式:AN
51、LTMOD,#0FH;設(shè)置T0為定時工作方式2ORLTMOD,#02HMOVTH0, #0CEH;設(shè)置計數(shù)初值MOVTL0, #0CEHMOVIE, #00H;禁止中斷SETB TR0;啟動定時器LOOP:JBC TF0,LOOP1;查詢計數(shù)溢出AJMP LOOPLOOP1:CPL P1.0;輸出方波,初值自動裝入AJMP LOOP;重復(fù)循環(huán)END參考程序如下以中斷方式:ANLTMOD,#0FH;設(shè)置T0為定時工作方式2ORLTMOD,#02HMOVTH0,#0CEH;設(shè)置計數(shù)初值MOVTL0,#0CEHSETBEA;CPU開中斷SETBET0;定時器T0開中斷SETBTR0;啟動定時器SJM
52、P$;中斷效勞程序CPLP1.0;輸出取反RETI;中斷返回4、方式3方式3是為了增加一個附加的8位定時器/計數(shù)器而提供的,使得MCS-51單片機(jī)具有3個定時器/計數(shù)器。方式3只適用于定時器/計數(shù)器T0,定時器/計數(shù)器T1處于方式3時,相當(dāng)于TR1=0,停止計數(shù)。與前三種工作方式不同,定時器/計數(shù)器在方式3下工作對T1和T0的設(shè)置和使用是不同的,現(xiàn)分別介紹。1在工作方式3下工作的定時器/計數(shù)器T0當(dāng)TMOD中的M1M0=11H時,定時器/計數(shù)器T0工作在方式3下,此時,定時器/計數(shù)器被拆成了兩個獨(dú)立的8位TL0和TH0,其中,TL0即可以用作計數(shù)器,又可以用作定時器,T0的各控制位和引腳信號全
53、部歸它使用,其功能和運(yùn)行方式與方式0和方式1完全相同,其邏輯電路結(jié)構(gòu)也極為相似。方式3下的邏輯電路圖如圖3-14a所示。定時器/計數(shù)器T0的高8位TH0只能用作簡單的定時器使用。由于定時器/計數(shù)器T0的控制位已經(jīng)被TL0占用,因此,只好借用定時器/計數(shù)器T1的控制位TR1和TF1,即以計數(shù)溢出置位TF1,而定時的啟動和停止那么由TR1的狀態(tài)來控制,如圖3-14b所示。由于TL0既能作為定時器使用,又能作為計數(shù)器使用,而TH0只能作為定時器使用,因此,工作方式3下,定時器/計數(shù)器T0構(gòu)成兩個定時器或一個定時器一個計數(shù)器。 圖3-14 定時器/計數(shù)器方式3的邏輯電路圖 2在定時器/計數(shù)器T0設(shè)置為
54、工作方式3時的定時器/計數(shù)器T1這里,我們只討論定時器/計數(shù)器T0設(shè)置為工作方式3時,定時器/計數(shù)器T1的使用情況。因為,T0工作在方式3時,已經(jīng)借用了T1的運(yùn)行控制位TR1和計數(shù)溢出標(biāo)志位TF1,所以,T1不能工作于方式3,只能工作在方式0、方式1或方式2,且在T0已工作在方式3下時,T1通常用作串行口的波特率發(fā)生器,以確定串行通信的速率。因為已經(jīng)沒有計數(shù)溢出標(biāo)志位TF1可供使用,因此,只能將計數(shù)溢出直接送給串行口,如圖3-15所示。當(dāng)T0作為波特率發(fā)生器使用時,只需要設(shè)置好工作方式,便可以自動運(yùn)行,如要停止工作,只需要送入一個將其設(shè)置為方式3的方式控制字就可以了。 圖3-15 定時器/計數(shù)
55、器T0在方式3時的T1使用 3.4 MCS-51單片機(jī)串行通信串行通信是一種能將二進(jìn)制數(shù)據(jù)按位傳送的通信,故它所需要傳輸線條數(shù)極少,特別適用于分級、分層和分布式控制系統(tǒng)以及遠(yuǎn)程通信。按照串行數(shù)據(jù)的同步方式,串行通信可以分為同步通信和異步通信兩類,同步通信是按照軟件識別同步字符來實現(xiàn)數(shù)據(jù)的發(fā)送與接收;異步通信是一種利用字符的再同步計數(shù)的通信方式。 3.4.1 串行通信1、異步通信在異步通信中,數(shù)據(jù)通常以字符或字節(jié)為單位組成字符幀傳送。字符幀由發(fā)送端一幀一幀地發(fā)送。發(fā)送端和接收端可以由各自的時鐘來控制數(shù)據(jù)數(shù)據(jù)的發(fā)送和接收,這兩個時鐘源彼此獨(dú)立,互不同步。異步通信通過規(guī)定字符幀格式來協(xié)調(diào)發(fā)送端和接收
56、端的數(shù)據(jù)發(fā)送和接收。正常情況下,發(fā)送線為高電平即邏輯“1,每當(dāng)接收端檢測到傳輸線上發(fā)送過來的低電平即邏輯“0就知道發(fā)送端已經(jīng)開始發(fā)送數(shù)據(jù);當(dāng)接收端接收到字符幀中的停止位時,就確定數(shù)據(jù)發(fā)送結(jié)束。在異步通信中,字符幀格式和波特率是兩個重要指標(biāo),由用戶根據(jù)實際情況選定。1字符幀字符幀也叫數(shù)據(jù)幀,由起始位、數(shù)據(jù)位、奇偶校驗位和停止位四個局部組成。如圖3-16所示。 圖3-16 異步通信的字符幀格式2波特率波特率定義為每一秒鐘傳送二進(jìn)制數(shù)碼的位數(shù),也成比特率,其單位是bps,即位/秒。波特率是串行通信的重要指標(biāo),用于表征數(shù)據(jù)傳輸?shù)乃俣取2ㄌ芈试礁?,說明數(shù)據(jù)傳輸速度越快,但和字符的實際傳輸速率有所不同。字
57、符的實際傳輸速率是指每秒鐘內(nèi)所傳字符幀的幀數(shù),和字符幀格式有關(guān)。在實際應(yīng)用中,一定要注意串行通信系統(tǒng)中字符幀的格式。字符幀的每一位傳輸時間定義為波特率的倒數(shù),例如,波特率為1200bps的通信系統(tǒng),其每一位數(shù)據(jù)的傳輸時間Td=1/1200=0.833ms。波特率還和信道的頻帶有關(guān),波特率越高,信道的頻帶就越寬。因此,波特率也是衡量通信信道頻寬的重要指標(biāo)。波特率不同于發(fā)送時鐘和接收時鐘,常常是時鐘頻率的1/16或1/64. 2、同步通信同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信只傳送一幀信息。這里的信息幀和異步通信中的字符幀不同,通常包含有假設(shè)干個數(shù)據(jù)字符,如圖3-17所示。圖3-17
58、同步通信中的字符幀格式 在同步通信中,同步字符可采用統(tǒng)一的標(biāo)準(zhǔn)格式,也可以由用戶在傳送之前相互約定好。在單同步通信字符幀結(jié)構(gòu)中,如圖3-17a所示,同步字符通常采用ACSII碼中規(guī)定的SYN即16H代碼;在雙同步通信字符幀結(jié)構(gòu)中,同步字符一般采用國際通用標(biāo)準(zhǔn)代碼EB90H。同步通信的數(shù)據(jù)傳輸速率較高,通??傻竭_(dá)56Mbps或更高,同步通信的缺點(diǎn)是要求發(fā)送時鐘和接收時鐘保持嚴(yán)格同步,故發(fā)送時鐘除了應(yīng)和發(fā)送波特率保持一致外,還要求將其同時傳送到接收端。 3.4.2 MCS-51單片機(jī)串行接口MCS-51單片機(jī)內(nèi)部的串行接口是全雙工的,即它能同時發(fā)送和接收數(shù)據(jù)。發(fā)送緩沖器只能寫入不能讀出,接收緩沖器
59、只能讀出不能寫入。串行口還有接收緩沖作用,即從接收存放器中讀出前一個已收到的字節(jié)之前就能開始接收第二字節(jié)。兩個串行口數(shù)據(jù)緩沖器實際上是兩個存放器通過特殊功能存放器SBUF來訪問。寫入SBUF的數(shù)據(jù)儲存在發(fā)送緩沖器,用于串行發(fā)送;從SBUF讀出的數(shù)據(jù)來自接收緩沖器。兩個緩沖器共用一個地址99H特殊功能存放器SBUF的地址。1、串行口結(jié)構(gòu)MCS-51單片機(jī)具有一個可編程的全雙工串行通信接口,它可用作UART,也可以用作同步移位存放器,其數(shù)據(jù)幀格式可以有8位、10位或11位,并能對波特率進(jìn)行設(shè)置,使用方便靈活。MCS-51單片機(jī)通過串行數(shù)據(jù)接收端引腳RXDP3.0和串行數(shù)據(jù)發(fā)送端TXDP3.1與外界
60、進(jìn)行通信。其內(nèi)部結(jié)構(gòu)如圖3-18所示。 圖3-18 MCS-51單片機(jī)串行口內(nèi)部結(jié)構(gòu) 2、串行口控制存放器控制串行口的存放器有兩個特殊功能存放器:即串行口控制存放器SCON和電源控制存放器PCON。1串行口控制存放器SCON特殊功能存放器SCON用于定義串行口的操作方式和控制它的某些功能。其字節(jié)地址為98H。存放器中各位內(nèi)容如下: 2PCON中的波特率選擇位PCON是一個特殊功能存放器,沒有位尋址功能,字節(jié)地址為87H。其格式如下: 次序D7D6D5D4D3D2D1D0位符號SMOD/GF1GF0PDID其中:D7位SMOD為波特率選擇位。其他均無意義。復(fù)位時的SMOD值為0??捎肕OV PC
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東外語外貿(mào)大學(xué)南國商學(xué)院《理化檢測下》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東輕工職業(yè)技術(shù)學(xué)院《景觀設(shè)計快題》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東農(nóng)工商職業(yè)技術(shù)學(xué)院《行政管理專業(yè)導(dǎo)論》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東梅州職業(yè)技術(shù)學(xué)院《影視編劇》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東茂名幼兒師范??茖W(xué)?!禞SP程序設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 四年級數(shù)學(xué)(四則混合運(yùn)算)計算題專項練習(xí)與答案
- 國學(xué)智慧(東北師范大學(xué))學(xué)習(xí)通測試及答案
- 2025新北師大版英語七年級下單詞表
- 【名師一號】2020-2021學(xué)年新課標(biāo)版物理選修3-1-第二章恒定電流-測試
- 【名師一號】2020-2021學(xué)年高中英語北師大版必修4-隨堂演練-第十二單元綜合測評
- 航空小鎮(zhèn)主題樂園項目規(guī)劃設(shè)計方案
- 保潔冬季防滑防凍工作措施
- 少兒美術(shù)課件-《我的情緒小怪獸》
- 永續(xù)債計入權(quán)益的必備條件分析
- 預(yù)應(yīng)力鋼絞線張拉伸長量計算程序單端(自動版)
- 基坑監(jiān)測課件ppt版(共155頁)
- Q∕GDW 12075-2020 架空輸電線路防鳥裝置技術(shù)規(guī)范
- 蠕變、應(yīng)力松弛、滯后和內(nèi)耗講解
- 開發(fā)區(qū)開發(fā)管理模式及發(fā)展要素PPT課件
- 急診科科主任述職報告范文
- 基于MATLAB語音信號降噪處理
評論
0/150
提交評論