在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統 > 設計應用 > MCS-51定時/計數器

            MCS-51定時/計數器

            作者: 時間:2016-11-13 來源:網絡 收藏
            定時/計數器的工作方式

            本文引用地址:http://www.biyoush.com/article/201611/316522.htm

            MCS-51單片機內部的定時/計數器的結構如圖1所示,定時器T0特性功能寄存器TL0(低8位)和TH0(高8位)構成,定時器T1由特性功能寄存器TL1(低8位)和TH1(高8位)構成。特殊功能寄存器TMOD控制定時寄存器的工作方式,TCON則用于控制定時器T0和T1的啟動和停止計數,同時管理定時器T0和T1的溢出標志等。程序開始時需對TL0、TH0、TL1和TH1進行初始化編程,以定義它們的工作方式和控制T0和T1的計數。

            TMOD和TCON這兩個特殊功能寄存器的格式參見下表:

            [1].定時/計數器的方式控制字TMOD,字節(jié)地址為89H,其格式如表1:

            表1TMOD寄存器結構
            D7D6D5D4D3D2D1D0
            GATAM1M0GATAM1M0
            ←T1方式字段→←T0方式字段→

            [2].定時器控制積存器TCON,字節(jié)地址為88H,位地址為88H—8FH,其格式如表2:

            表2TCON結構
            D7D6D5D4D3D2D1D0
            TF1TR1TF0TR0IE1IT1IE0IT0

            TMOD和TCON各位的意義和用途我們將在下面的章節(jié)中予以介紹,需要注意的是,TCON的D0—D3位與中斷有關,我們會在中斷的內容中加以說明,MCS-51的定時/計數器共有四種工作方式,我們逐個進行討論。

            工作方式0

            定時/計數器0的工作方式0電路邏輯結構見圖2(定時/計數器1與其完全一致),工作方式0是13位計數結構的工作方式,其計數器由TH的全部8位和TL的低5位構成,TL的高3位沒有使用。當=0時,多路開關接通振蕩脈沖的12分頻輸出,13位計數器以次進行計數。這就是定時工作方式。當=1時,多路開關接通計數引腳(To),外部計數脈沖由銀南腳To輸入。當計數脈沖發(fā)生負跳變時,計數器加1,這就是我們常稱的計數工作方式。

            不管是哪種工作方式,當TL的低5位溢出時,都會向TH進位,而全部13位計數器溢出時,則會向計數器溢出標志位TF0進位。

            我們討論門控位GATA的功能,GATA位的狀態(tài)決定定時器運行控制取決于TR0的一個條件還是TR0和INT0引腳這兩個條件。當GATA=1時,由于GATA信號封鎖了與門,使引腳INT0信號無效。而這時候如果TR0=1,則接通模擬開關,使計數器進行加法計數,即定時/計數工作。而TR0=0,則斷開模擬開關,停止計數,定時/計數不能工作。

            當GATA=0時,與門的輸出端由TR0和INT0電平的狀態(tài)確定,此時如果TR0=1,INT0=1與門輸出為1,允許定時/計數器計數,在這種情況下,運行控制由TR0和INT0兩個條件共同控制,TR0是確定定時/計數器的運行控制位,由軟件置位或清“0”。

            如上所述,TF0是定時/計數器的溢出狀態(tài)標志,溢出時由硬件置位,TF0溢出中斷被CPU響應時,轉入中斷時硬件清“0”,TF0也可由程序查詢和清“0”。

            在工作方式下,計數器的計數值范圍是:

            1—8192(213)

            當為定時工作方式時,定時時間的計算公式為:

            (213—計數初值)╳晶振周期╳12

            或(213—計數初值)╳機器周期

            其時間單位與晶振周期或機器周期相同。

            如果單片機的晶振選為6.000MHz,則最小定時時間為:

            [213—(213—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us)

            (213—0)╳1/6╳10-6╳12=16384╳10-6(s)=16384(us)。

            工作方式1

            當M1,M0=01時,定時/計數器處于工作方式1,此時,定時/及數器的等效電路如圖3所示,仍以定時器0為例,定時器1與之完全相同。

            可以看出,方式0和方式1的區(qū)別僅在于計數器的位數不同,方式0為13位,而方式1則為16位,由TH0作為高8位,TL0為低8位,有關控制狀態(tài)字(GATA、、TF0、TR0)和方式0相同。

            在工作方式1下,計數器的計數值范圍是:

            1—65536(216)

            當為定時工作方式1時,定時時間的計算公式為:

            (216—計數初值)╳晶振周期╳12

            或(216—計數初值)╳機器周期

            其時間單位與晶振周期或機器周期相同。

            如果單片機的晶振選為6.000MHz,則最小定時時間為:

            [213—(216—1)]╳1/6╳10-6╳12=2╳10-6(s)=2(us)

            (216—0)╳1/6╳10-6╳12=131072╳10-6(s)=131072(us)。

            工作方式2

            當M1M0=10時,定時/計數器處于工作方式2.此時定時器的等效電阻如圖4所示.我們還是以定時/計數器0為例,定時/計數器1與之完全一致。

            工作方式0和工作方式1的最大特點就是計數溢出后,計數器為全0,因而循環(huán)定時或循環(huán)計數應用時就存在反復設置初值的問題,這給程序設計帶來許多不便,同時也會影響計時精度,工作方式2就針對這個問題而設置,它具有自動重裝載功能,即自動加載計數初值,所以也有的文獻稱之為自動重加載工作方式。在這種工作方式中,16位計數器分為兩部分,即以TL0為計數器,以TH0作為預置寄存器,初始化時把計數初值分別加載至TL0和TH0中,當計數溢出時,不再象方式0和方式1那樣需要“人工干預”,由軟件重新賦值,而是由預置寄存器TH以硬件方法自動給計數器TL0重新加載。

            程序初始化時,給TL0和TH0同時賦以初值,當TL0計數溢出時,置位TF0的同時把預置寄存器TH0中的初值加載給TL0,TL0重新計數。如此反復,這樣省去了程序不斷需給計數器賦值的麻煩,而且計數準確度也提高了。但這種方式也有其不利的一面,就是這樣一來的計數結構只有8位,計數值有限,最大只能到255。所以這種工作方式很適合于那些重復計數的應用場合。例如我們可以通過這樣的計數方式產生中斷,從而產生一個固定頻率的脈沖。也可以當作串行數據通信的波特率發(fā)送器使用。

            工作方式3

            當M1M0=11時,定時/計數器處于工作方式3,此時,定時/及數器的等效電路如圖3所示,仍以定時器0為例,值得注意的是,在工作方式3模式下,定時/計數器1的工作方式與之不同,下面我們分別討論。

            在工作方式3模式下,定時/計數器0被拆成兩個獨立的8位計數器TL0和TH0。其中TL0既可以作計數器使用,也可以作為定時器使用,定時/計數器0的各控制位和引腳信號全歸它使用。其功能和操作與方式0或方式1完全相同。TH0就沒有那么多“資源”可利用了,只能作為簡單的定時器使用,而且由于定時/計數器0的控制位已被TL0占用,因此只能借用定時/計數器1的控制位TR1和TF1,也就是以計數溢出去置位TF1,TR1則負責控制TH0定時的啟動和停止。等效電路參見圖6。 由于TL0既能作定時器也能作計數器使用,而TH0只能作定時器使用而不能作計數器使用,因此在方式3模式下,定時/計數器0可以構成二個定時器或者一個定時器和一個計數器。

            如果定時/計數器0工作于工作方式3,那么定時/計數器1的工作方式就不可避免受到一定的限制,因為自己的一些控制位已被定時/計數器借用,只能工作在方式0、方式1或方式2下,等效電路參見圖6

            在這種情況下,定時/計數器1通常作為串行口的波特率發(fā)生器使用,以確定串行通信的速率,因為已沒有TF1被定時/計數器0借用了,只能把計數溢出直接送給串行口。當作波特率發(fā)生器使用時,只需設置好工作方式,即可自動運行。如要停止它的工作,需送入一個把它設置為方式3的方式控制字即可,這是因為定時/計數器本身就不能工作在方式3,如硬把它設置為方式3,自然會停止工作。

             

            MCS-51的中斷系統

            對初學者來說,中斷這個概念比較抽象,其實單片機的處理系統與人的一般思維有著許多異曲同工之妙,我們舉個很貼切的比方,在日常生活和工作中有很多類似的情況。假如你正在上班,例如是編譯資料,這時侯電話鈴響了,你在書本上做個記號(以記下你現在正編譯到某某頁),然后與對方通電話,而此時恰好有客人到訪,你先停下通電話,與客人說幾句話,叫客人稍侯,然后回頭繼續(xù)通完電話,再與客人談話。談話完畢,送走客人,繼續(xù)你的資料編譯工作。

            這就是日常生活和工作中的中斷現象,類似的情況還有很多,從編譯資料到接電話是第一次中斷,通電話的過程中引有客人到訪,這是第二次中斷,即在中斷的過程中又出現第二次中斷,這就是我們常說的中斷嵌套。處理完第二個中斷任務后,回頭處理第一個中斷,第一個中斷完成后,再繼續(xù)你原先的主要工作。

            為什么會出現這樣的中斷呢?道理很簡單,人非三頭六臂,人只有一個腦袋,在一種特定的時間內,可能會面對著兩、三甚至更多的任務。但一個人又不可能在同一時間去完成多樣任務,因此你只能采分析任務的輕重緩急,采用中斷的方法穿插去完成它們。那么這種情況對于單片機中的中央處理器也是如此,單片機中CPU只有一個,但在同一時間內可能會面臨著處理很多任務的情況,如運行主程序、數據的輸入和輸出,定時/和計數時間已到要處理、可能還有一些外部的更重要的中斷請求(如超溫超壓)要先處理。此時也得象人的思維一樣停下某一樣(或幾樣)工作先去完成一些緊急任務的中斷方法。

            這樣的一樣處理方法上升到計算機理論,就是一個資源面對多項任務的處理方式,由于資源有限,面對多項任務同時要處理時,就會出現資源競爭的現象。中斷技術就是為了解決資源競爭的一個可行的方法,采用中斷技術可使多項任務共享一個資源,所以有些文獻也稱中斷技術是一種資源共享技術。

            [1].MCS-51的中斷結構
            計算機的中斷系統能夠加強CPU對多任務事件的處理能力。從而使它的應用范圍進一步擴大。在MCS-48結構的基礎上,MCS-51在增強了I/O的種類、功能和數量的同時,也增強了中斷能力。MCS-51提供了5個中斷源,兩個中斷優(yōu)先級控制,可實現兩個中斷服務嵌套。當CPU支持中斷屏蔽指令后,可將一部分或所有的中斷關斷,只有打開相應的中斷控制位后,方可接收相應的中斷請求。程序設置中斷的允許或屏蔽,也可設置中斷的優(yōu)先級。

            [2].中斷處理流程

            CPU響應中斷請求后,就立即轉入執(zhí)行中斷服務程序。不同的中斷源、不同的中斷要求可能有不同的中斷處理方法,但它們的處理流程一般都如下所述。

            現場保護和現場恢復

            中斷是在執(zhí)行其它任務的過程中轉去執(zhí)行臨時的任務,為了在執(zhí)行完中斷服務程序后,回頭執(zhí)行原先的程序時,知道程序原來在何處打斷的,各有關寄存器的內容如何,就必須在轉入執(zhí)行中斷服務程序前,將這些內容和狀態(tài)進行備份——即保護現場。就象文章開頭舉的例子,在看書時,電話玲響需傳去接電話時,必須在書本上做個記號,以便在接完電話后回來看書時,知道從哪些內容繼續(xù)往下看。計算機的中斷處理方法也如此,中斷開始前需將個有關寄存器的內容壓入堆棧進行保存,以便在恢復原來程序時使用。

            中斷服務程序完成后,繼續(xù)執(zhí)行原先的程序,就需把保存的現場內容從堆棧中彈出,恢復積存器和存儲單元的原有內容,這就是現場恢復。

            如果在執(zhí)行中斷服務時不是按上述方法進行現場保護和恢復現場,就會是程序運行紊亂,程序跑飛,自然使單片機不能正常工作。

            中斷打開和中斷關閉

            在中斷處理進行過程中,可能又有新的中斷請求到來,這里規(guī)定,現場保護和現場恢復的操作是不允許打擾的,否則保護和恢復的過程就可能使數據出錯,為此在進行現場保護和現場恢復的過程中,必須關閉總中斷,屏蔽其它所有的中斷,待這個操作完成后再打開總中斷,以便實現中斷嵌套。

            中斷服務程序

            既然有中斷產生,就必然有其具體的需執(zhí)行的任務,中斷服務程序就是執(zhí)行中斷處理的具體內容,一般以子程序的形式出現,所有的中斷都要轉去執(zhí)行中斷服務程序,進行中斷服務。

            中斷返回

            執(zhí)行完中斷服務程序后,必然要返回,中斷返回就是被程序運行從中斷服務程序轉回到原工作程序上來。在MCS-51單片機中,中斷返回是通過一條專門的指令實現的,自然這條指令是中斷服務程序的最后一條指令。

            [3].MCS-51的中斷源

            8051有5個中斷源,它們是兩個外中斷INT0(P3.2)和INT1(P3.3)、兩個片內定時/計數器溢出中斷TF0和TF1,一個是片內串行口中斷TI或RI,這幾個中斷源由TCON和SCON兩個特殊功能寄存器進行控制。

            在前一節(jié),我們已對TCON的控制位進行了說明,現在繼續(xù)對它的中斷控制有關的位進行談論。TCON寄存器的結構如下:

            表1TCON寄存器結構
            TCOND7D6D5D4D3D2D1D0
            TF1TR1TF0TR0IE1IT1IE0IT0
            位地址8FH8EH8DH8CH8BH8AH89H88H

            ·IE1:外部邊沿觸發(fā)中斷1請求標志,其功能和操作類似于TF0。

            ·IT1:外部中斷1類型控制位,通過軟件設置或清楚,用于控制外中斷的觸發(fā)信號類型。IT1=1,邊沿觸發(fā)。IT=0是電平觸發(fā)。

            ·IE0:外部邊沿觸發(fā)中斷0請求標志,其功能和操作類似于IE1。

            ·IT0:外部中斷0類型控制位,通過軟件設置或清楚,用于控制外中斷的觸發(fā)信號類型。其功能和操作類似于IE1。

            SCON是串行口控制寄存器,字節(jié)地址為98H,SCON的低二位是串行口的發(fā)送和接收中斷標志,其格式如下:

            表2SCON寄存器結構
            SCOND7D6D5D4D3D2D1D0
            ------TIRI
            位地址     99H98H

            ·TI:MCS-51串行口的發(fā)送中斷標志,在串行口以方式0發(fā)送時,每當發(fā)送完8位數據,由硬件置位。如果以方式1、方式2或方式3發(fā)送時,在發(fā)送停止位的開始時TI被置1,TI=1表示串行發(fā)送器正向CPU發(fā)出中斷請求,向串行口的數據緩沖器SBUF寫入一個數據后就立即啟動發(fā)送器繼續(xù)發(fā)送。但是CPU響應中斷請求后,轉向執(zhí)行中斷服務程序時,并不清零TI,TI必須由用戶的中斷服務程序清“0”,即中斷服務程序必須有“CLR TI”或“ANL SCON, #0FDH”等指令來清零TI。

            ·RI:串行口接收中斷標志.若串行口接收器允許接收,并以方式0工作,每當接收到8位數據時,RI被置1,若以方式1、2、3方式工作,當接收到半個停止位時,TI被置1,當串行口一方式2或3方式工作,且當SM2=1時,僅當接收到第9位數據RB8為1后,同時還要在接收到半個停止位時,RI被置1。RI為1表示串行口接收器正向CPU申請中斷。同樣RI標志栩栩如生由用戶的軟件清“0”。

            [4].中斷的控制

            對于中斷控制,在上一節(jié)中我們已經對TCON和SCON進行了分析,其實它們兩個寄存器也是中斷的控制寄存器,負責對中斷的部分功能進行控制。我們這里談論的是另外兩個控制寄存器IE和IP。

            MCS-51的對中斷的開放和屏蔽是由中斷允許寄存器IE控制來實現的,IE的結構格式如下。

            表3IE寄存器結構
            IED7D6D5D4D3D2D1D0
            EA--ESET1EX1ET0EX0
            位地址AFH ACHABHAAHA9HA8H

            下面我們對IE寄存器的各控制位進行介紹:

            ·EA:中斷總控制位,EA=1,CPU開放中斷。EA=0,CPU禁止所有中斷。

            ·ES:串行口中斷控制位,ES=1允許串行口中斷,ES=0,屏蔽串行口中斷。

            ·ET1:定時/計數器T1中斷控制位。ET1=1,允許T1中斷,ET1=0,禁止T1中斷。

            ·EX1:外中斷1中斷控制位,EX1=1,允許外中斷1中斷,EX1=0,禁止外中斷1中斷。

            ·ET0:定時/計數器T0中斷控制位。ET1=1,允許T0中斷,ET1=0,禁止T0中斷。

            ·EX0:外中斷0中斷控制位,EX1=1,允許外中斷0中斷,EX1=0,禁止外中斷0中斷。

            MCS-51有兩個中斷優(yōu)先級,即高優(yōu)先級和低優(yōu)先級,每個中斷源都可設置為高或低中斷優(yōu)先級。如果有一低優(yōu)先級的中斷正在執(zhí)行,那么高優(yōu)先級的中斷出現中斷請求時,CPU則會響應這個高有限級的中斷,也即高優(yōu)先級的中斷可以打斷低優(yōu)先級的中斷。而若CPU正在處理一個高優(yōu)先級的中斷,此時,就算是有低優(yōu)先級的中斷發(fā)出中斷請求,CPU也不會理會這個中斷,而是繼續(xù)執(zhí)行正在執(zhí)行的中斷服務程序,一直到程序結束,執(zhí)行最后一條返回指令,返回主程序然后再執(zhí)行一條指令后才會響應新的中斷請求。

            為了實現上述功能,MCS-51的中斷系統有兩個不可尋址的優(yōu)先級狀態(tài)觸發(fā)器,一個指出CPU是否在執(zhí)行高優(yōu)先級中斷服務程序,另一個指出CPU是否正在執(zhí)行低優(yōu)先級的中斷服務程序,這兩個中斷觸發(fā)器的1狀態(tài)分別屏蔽所有中斷申請和同一級別的其他中斷申請,此外,MCS-51還有一個申請優(yōu)先級寄存IP,IP的格式如下,字節(jié)地址是B8H。

            表4IP中斷控制寄存器結構
            IPD7D6D5D4D3D2D1D0
            ---PSPT1Px1PT0PX0
            位地址  BCHBBHBAHB9HB8H

            ·PS:串行口中斷口優(yōu)先級控制位,PS=1,串行口中斷聲明為高優(yōu)先級中斷,PS=0,串行口定義為低優(yōu)先級中斷。

            ·PT1:定時器1優(yōu)先級控制位。PT1=1,聲明定時器1為高優(yōu)先級中斷,PT1=0定義定時器1為低優(yōu)先級中斷。

            ·PX1:外中斷1優(yōu)先級控制位。PT1=1,聲明外中斷1為高優(yōu)先級中斷,PX1=0定義外中斷1為低優(yōu)先級中斷。

            ·PT0:定時器0優(yōu)先級控制位。PT1=1,聲明定時器0為高優(yōu)先級中斷,PT1=0定義定時器0為低優(yōu)先級中斷。

            ·PX0:外中斷0優(yōu)先級控制位。PT1=1,聲明外中斷0為高優(yōu)先級中斷,PX1=0定義外中斷0為低優(yōu)先級中斷。

            [5].中斷的響應

            MCS-51CPU在每一個機器周期順序檢查每一個中斷源,在機器周期的S6按優(yōu)先級處理所有被激活的中斷請求,此時,如果CPU沒有正在處理更高或相同優(yōu)先級的中斷,或者現在的機器周期不是所執(zhí)行指令的最后一個機器周期,或者CPU不是正在執(zhí)行RETI指令或訪問IE和IP的指令(因為按MCS-51中斷系統的特性規(guī)定,在執(zhí)行完這些指令之后,還要在繼續(xù)執(zhí)行一條指令,才會響應中斷),CPU在下一個機器周期響應激活了的最高級中斷請求。

            中斷響應的主要內容就是由硬件自動生成一條長調用LCALL addr16指令,這里的addr16就是程序存儲器中相應的中斷區(qū)入口地址,這些中斷源的服務程序入口地址如下:

            表5個中斷源的服務程序入口地址
            中斷源入口地址
            外中斷00003H
            定時/計數器0000BH
            外中斷10013H
            定時/計數器0001BH
            串行口中斷0023H

            生成LCALL指令后,CPU緊跟著便執(zhí)行之.首先將PC(程序計數器)的內容壓入堆棧保護斷點,然后把中斷入口地址賦予PC,CPU便按新的PC地址(即中斷服務程序入口地址)執(zhí)行程序。

            值得一提的是,各中斷區(qū)只有8個單元,一般情況下(除非中斷程序非常簡單),都不可能安裝下一個完整的中斷服務程序。因此,通常是在這些入口地址區(qū)放置一條無條件轉移指令,使程序按轉移的實際地址去執(zhí)行真正的中斷服務程序。




            關鍵詞: MCS-51定時計數

            評論


            相關推薦

            技術專區(qū)

            關閉