




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 在測控技術(shù)中,往往需要定時檢測某個參數(shù),在測控技術(shù)中,往往需要定時檢測某個參數(shù),或按一定的時間間隔來進行某種控制。還有一些或按一定的時間間隔來進行某種控制。還有一些控制是按對某種事件的計數(shù)結(jié)果進行的。因此幾控制是按對某種事件的計數(shù)結(jié)果進行的。因此幾乎所有單片機內(nèi)部都設置了定時乎所有單片機內(nèi)部都設置了定時/計數(shù)器,以簡化計數(shù)器,以簡化微機測控系統(tǒng)的設計。微機測控系統(tǒng)的設計。 MCS-51系列單片機典型產(chǎn)品系列單片機典型產(chǎn)品8051等有兩個等有兩個16位定時器位定時器/計數(shù)器計數(shù)器T0,T1;8052等單片機有三個等單片機有三個16位定時器位定時器/計數(shù)器計數(shù)器T0、T1和和T2。它們都可以用。
2、它們都可以用作定時器或外部事件計數(shù)器。作定時器或外部事件計數(shù)器。7.4 51內(nèi)部定時計數(shù)器及其應用內(nèi)部定時計數(shù)器及其應用7.4 51內(nèi)部定時計數(shù)器及其應用內(nèi)部定時計數(shù)器及其應用2定時與計數(shù)的概念定時與計數(shù)的概念定時的主要作用是定時的主要作用是產(chǎn)生各種時標間隔。產(chǎn)生各種時標間隔。軟件延時軟件延時硬件定時器硬件定時器 計數(shù):計數(shù):記錄(外部)事件的數(shù)量。記錄(外部)事件的數(shù)量。例如:例如:溫度測量溫度測量定時計數(shù)器的定時計數(shù)器的實質(zhì)實質(zhì)3p定時計數(shù)器的定時計數(shù)器的實質(zhì)就是計數(shù)器,一般都具有定時兼計數(shù)實質(zhì)就是計數(shù)器,一般都具有定時兼計數(shù)的功能,具體是定時還是計數(shù)主要看計數(shù)對象(即計數(shù)脈的功能,具體是
3、定時還是計數(shù)主要看計數(shù)對象(即計數(shù)脈沖)。若計數(shù)脈沖為已知固定周期的信號,則計數(shù)器就可以沖)。若計數(shù)脈沖為已知固定周期的信號,則計數(shù)器就可以看作定時器;若計數(shù)脈沖為周期不固定的或未知的信號,則看作定時器;若計數(shù)脈沖為周期不固定的或未知的信號,則計數(shù)器只能看作是計數(shù)器。計數(shù)器只能看作是計數(shù)器。通過外部通過外部引腳引腳對對外部事件外部事件計數(shù)計數(shù)通過對通過對機器周期進行計數(shù)機器周期進行計數(shù)實現(xiàn)實現(xiàn)定時定時MCS-51單片機內(nèi)部定時計數(shù)器單片機內(nèi)部定時計數(shù)器一、內(nèi)部定時計數(shù)器結(jié)構(gòu)和工作原理4 51單片機內(nèi)部有兩個單片機內(nèi)部有兩個可編程可編程16位位加加1的定時器的定時器/計數(shù)器,具有計數(shù)器,具有 兩
4、種工作模式(兩種工作模式(計數(shù)器計數(shù)器模式、模式、 定時定時器器模式)和模式)和四種工作方式四種工作方式( 方式方式0、方式、方式1、方式、方式2、方式、方式3),其控制字均在相應的特殊功能寄存),其控制字均在相應的特殊功能寄存器(器(SFR)中,通過對它的)中,通過對它的SFR的編程,可以方的編程,可以方便的選擇工作模數(shù)和工作方式。便的選擇工作模數(shù)和工作方式。1、定時、定時/計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu)5定時器定時器/計數(shù)器是一個加計數(shù)器是一個加1計數(shù)器,當計數(shù)溢出時產(chǎn)生計數(shù)器,當計數(shù)溢出時產(chǎn)生 中斷申請中斷申請表示定時到或計數(shù)到。表示定時到或計數(shù)到。 每輸入一個脈沖,計數(shù)器加每輸入一個脈沖,計
5、數(shù)器加1,當加到計數(shù)器各位,當加到計數(shù)器各位都為都為1時,時,再輸入一個脈沖再輸入一個脈沖,計數(shù)器各位全變?yōu)?,計?shù)器各位全變?yōu)?,溢出,中斷標志置溢出,中斷標志置1(SFR中中TCON的的TF0、TF1),從而向,從而向CPU申請中斷。由預置計數(shù)值就可以算出申請中斷。由預置計數(shù)值就可以算出從加從加1計數(shù)器啟動到計滿溢出所需的時間,即定時計數(shù)器啟動到計滿溢出所需的時間,即定時時間。時間。 8位位256;13位位8192;16位位65536計數(shù)原理計數(shù)原理 對外部脈沖計數(shù)時,當脈沖有一個對外部脈沖計數(shù)時,當脈沖有一個高電平到低高電平到低電平電平“1”“0”跳變時,計數(shù)器加跳變時,計數(shù)器加1,且在每
6、個機,且在每個機器周期的器周期的S5P2采樣外部輸入,若前一個機器周期采樣外部輸入,若前一個機器周期采樣值為采樣值為1,后一個機器周期采樣值為,后一個機器周期采樣值為0,則計數(shù),則計數(shù)器加器加1。 由于識別一個從由于識別一個從1到到0的負跳變信號需要兩個機的負跳變信號需要兩個機器周期器周期(24個振蕩周期),所以最高的計數(shù)頻率個振蕩周期),所以最高的計數(shù)頻率為系統(tǒng)時鐘頻率的為系統(tǒng)時鐘頻率的1/24;兩個輸入脈沖的最小間;兩個輸入脈沖的最小間隔應不小于兩個機器周期。又因為一個機器周期隔應不小于兩個機器周期。又因為一個機器周期對信號采樣一次,因此輸入信號的電平寬度對信號采樣一次,因此輸入信號的電平
7、寬度至少至少應持續(xù)一個機器周期應持續(xù)一個機器周期。定時原理定時原理 輸入脈沖不是外部脈沖源,而是一個晶體振蕩器輸入脈沖不是外部脈沖源,而是一個晶體振蕩器的脈沖源。的脈沖源。 輸入脈沖是由內(nèi)部振蕩器的輸出經(jīng)輸入脈沖是由內(nèi)部振蕩器的輸出經(jīng)12分頻送來,分頻送來,所以定時器可看做對機器周期的計數(shù)。所以定時器可看做對機器周期的計數(shù)。 晶振晶振 12MHz,機器周期,機器周期 1us,定時器每接收一,定時器每接收一個脈沖是個脈沖是1us 晶振晶振6MHz, 機器周期機器周期 2us,定時器每接收一個,定時器每接收一個脈沖是脈沖是1us加法計數(shù)器的初值可以由程序設定,設置的初值不同,加法計數(shù)器的初值可以由
8、程序設定,設置的初值不同,計數(shù)值或定時時間就不同。定時時間不僅與計數(shù)初值有關(guān),計數(shù)值或定時時間就不同。定時時間不僅與計數(shù)初值有關(guān),而且與系統(tǒng)時鐘頻率有關(guān)。而且與系統(tǒng)時鐘頻率有關(guān)。 對于對于16位計數(shù)器,最大定時時間是位計數(shù)器,最大定時時間是216個脈沖的時個脈沖的時間。間。 則定時時間則定時時間T=(216X)*T T:輸入脈沖周期,:輸入脈沖周期,T=12/f s(f為晶振頻率為晶振頻率1.212MHz)如為如為12MHz,則,則T1s X:計數(shù)器初值(由程序輸入):計數(shù)器初值(由程序輸入) 對于對于12MHz晶體,晶體,T1s,最大定時,最大定時T=65.536ms;對于;對于6MHz晶體
9、,晶體,T2s,最大,最大定時定時T=131ms 常使用:常使用:X=216T/T例:例:系統(tǒng)時鐘頻率為系統(tǒng)時鐘頻率為12MHz12MHz,要產(chǎn)生,要產(chǎn)生1ms1ms定時,求初定時,求初值值X X T=12/12=1s T=12/12=1s若為若為1616位計數(shù)器位計數(shù)器 X=2 X=2161000/1=64536=0FC18H1000/1=64536=0FC18H若為若為1313位計數(shù)器位計數(shù)器 X=2 X=2131000/1=81921000/1=81921000=7192=1C18H1000=7192=1C18H 不能采用不能采用8 8位計數(shù)器位計數(shù)器二、T/C的特殊功能寄存器SFR11
10、1、16位定時位定時/計數(shù)器計數(shù)器0:核心的計數(shù)單元:核心的計數(shù)單元 由兩個特殊功能寄存器由兩個特殊功能寄存器TH0和和TL0組成組成2、16位定時位定時/計數(shù)器計數(shù)器1:核心的計數(shù)單元:核心的計數(shù)單元 由兩個特殊功能寄存器由兩個特殊功能寄存器TH1和和TL1組成組成3、定時器方式選擇寄存器:定時器方式選擇寄存器:TMOD4、定時器控制寄存器:定時器控制寄存器:TCONT/C的特殊功能寄存器SFR123、定時器方式選擇寄存器:定時器方式選擇寄存器:TMODM1 M0 方式方式說說 明明0 0013 位定時器(TH的 8 位和TL的低 5 位) 0 1116 位定時器/計數(shù)器 1 02自動重裝入
11、初值的 8 位計數(shù)器 1 13 T0 分成兩個獨立的 8 位計數(shù)器, T1 在方式 3 時停止工作 13地址:地址:89H定時器方式選擇寄存器:定時器方式選擇寄存器:TMOD14GATE 門控位。門控位。 GATE = 0 啟動不受啟動不受 /INT0或或 /INT1的控制;的控制; GATE = 1 啟動受啟動受 /INT0 或或 /INT1 的控制。的控制。 C/T 外部計數(shù)器外部計數(shù)器 / 內(nèi)部定時器方式選擇位內(nèi)部定時器方式選擇位 C/T = 0 定時方式;定時方式; C /T = 1 計數(shù)方式計數(shù)方式。 4、定時器控制寄存器:、定時器控制寄存器:TCON15TF1TR1TF0TR0IE
12、1IT1IE0IT0 TCON(88H)外部中斷有關(guān)外部中斷有關(guān)1、TF1:定時器定時器/計數(shù)器計數(shù)器T1溢出溢出中斷請求標志位。中斷請求標志位。 當啟動當啟動T1計數(shù)后,計數(shù)后,T1從從初值初值開始開始加加1計數(shù),計數(shù)計數(shù),計數(shù)器最高位產(chǎn)生器最高位產(chǎn)生溢出溢出時,時,由由硬件硬件使使TF1置置1,并向,并向CPU發(fā)出中斷請求。當發(fā)出中斷請求。當CPU響應中斷時,響應中斷時,硬件硬件將將自動對自動對TF1清清0。2、TF0:定時器定時器/計數(shù)器計數(shù)器T0溢出中斷請求標志位。溢出中斷請求標志位。 含義與含義與TF1類同。類同。定時器控制寄存器:定時器控制寄存器:TCON16TF1TR1TF0TR
13、0IE1IT1IE0IT0 TCON(88H)外部中斷有關(guān)外部中斷有關(guān)TR1:T1運行控制位。運行控制位。TR1=1時,時,T1開始工作;開始工作;TR1清清0時,時,T1停止工作。停止工作。TR1由軟件置由軟件置1或清或清0。所以,用軟件可控制定時。所以,用軟件可控制定時/計數(shù)器計數(shù)器的啟動與停止。的啟動與停止。TR0:T0運行控制位。運行控制位。三、三、 四種工作方式四種工作方式17除了方式除了方式3,T0和和T1有完全相同的工作方式有完全相同的工作方式。1、方式018T/C0方式方式0 (13位計數(shù)器)位計數(shù)器)的邏輯結(jié)構(gòu)圖的邏輯結(jié)構(gòu)圖低低5位位高高8位位方式方式0為為13位計數(shù)位計數(shù),
14、由,由TL0的低的低5位(高位(高3位未用)和位未用)和TH0的的8位組成。位組成。TL0的低的低5位溢出時向位溢出時向TH0進位,進位,TH0溢出時,置位溢出時,置位TCON中的中的TF0標志,向標志,向CPU發(fā)出中斷請求。發(fā)出中斷請求。P3.4方式019定時計數(shù)模式選擇定時計數(shù)模式選擇低低5位位高高8位位啟動控制分析啟動控制分析GATE:門控位:門控位GATE=0時,定時計數(shù)器的啟停,時,定時計數(shù)器的啟停,僅僅僅僅由由TR0控制,控制, 只要只要TR0=1就啟動就啟動 。GATE=1時,定時計數(shù)器的啟停,時,定時計數(shù)器的啟停,還將還將受到受到INT0引腳的控制。引腳的控制。 在在TR0=1
15、的前提下的前提下int0引腳引腳=1計數(shù),計數(shù),=0停止計數(shù)。停止計數(shù)。 TR0=0停止計數(shù)。停止計數(shù)。計數(shù)初值問題13X=2 -N20初值重裝問題初值重裝問題:用程序?qū)ⅲ河贸绦驅(qū)?8191的某一數(shù)送入的某一數(shù)送入TH0、TL0作作為初值,為初值,TH0、TL0從初值開始加法計數(shù),直至溢出。所以初從初值開始加法計數(shù),直至溢出。所以初值不同,定時時間或計數(shù)值不同。必須注意的是:值不同,定時時間或計數(shù)值不同。必須注意的是:加法計數(shù)加法計數(shù)器器TH0溢出后,必須用程序重新對溢出后,必須用程序重新對TH0、TL0設置初值,設置初值,否則否則下一次下一次TH0、TL0將從將從0開始計數(shù)。開始計數(shù)。初值計
16、算問題初值計算問題:加法計數(shù)器。:加法計數(shù)器。例如:計數(shù)例如:計數(shù)1000個。個。213-1000=7192=1 1100 0001 1000 BE0送送TH18H送送TLMOV TH0MOV TH0,#0E0H#0E0HMOV TL0MOV TL0,#18H#18H 此種方式與此種方式與MCSMCS4848系列兼容,如果不是為了兼系列兼容,如果不是為了兼容的目的,一般不用方式容的目的,一般不用方式0.0. 方式方式0 0的全部功能,方式的全部功能,方式1 1都可以代替。都可以代替。 如果要重復定時或計數(shù),則須重新設置時間常數(shù)如果要重復定時或計數(shù),則須重新設置時間常數(shù)初值初值注意注意: :2、
17、方式122T/C0方式方式1 (16位計數(shù)器)位計數(shù)器)的邏輯結(jié)構(gòu)圖的邏輯結(jié)構(gòu)圖與與方式方式0 相似,方式相似,方式1時的時的計數(shù)長度計數(shù)長度是是2的的16次方。次方。16位的位的初初值值直接拆成高低字節(jié),分別送入直接拆成高低字節(jié),分別送入TH和和TL即可。即可。初值的計算公式?初值的計算公式?方式13、方式2 (計數(shù)初值自動再裝入)(計數(shù)初值自動再裝入)23 工作方式工作方式0和工作方式和工作方式1的最大特點就是的最大特點就是計數(shù)溢出后,計數(shù)溢出后,計數(shù)器為全計數(shù)器為全0,因而循環(huán)定時或循環(huán)計數(shù)應用時就存在因而循環(huán)定時或循環(huán)計數(shù)應用時就存在反復設置初值反復設置初值的問題,這給程序設計帶來許多
18、不便,同的問題,這給程序設計帶來許多不便,同時也會時也會影響計時精度影響計時精度。 工作方式工作方式2就針對這個問題而設置,它具有自動重就針對這個問題而設置,它具有自動重裝載功能,即裝載功能,即計數(shù)初值自動再裝入計數(shù)初值自動再裝入。3、方式224方式方式 2(計數(shù)初值自動再裝入)結(jié)構(gòu)圖(計數(shù)初值自動再裝入)結(jié)構(gòu)圖計數(shù)初值自動再裝入的計數(shù)初值自動再裝入的實現(xiàn)實現(xiàn)25 在工作方式在工作方式2中,中,16位位計數(shù)器計數(shù)器分為兩部分,即以分為兩部分,即以TL0為為計數(shù)器計數(shù)器,以,以TH0作為預置寄存器,初始化時把作為預置寄存器,初始化時把計數(shù)初值分別加載至計數(shù)初值分別加載至TL0和和TH0中,當計數(shù)
19、溢出時,中,當計數(shù)溢出時,不再象方式不再象方式0和方式和方式1那樣需要那樣需要“人工干預人工干預”,由軟件,由軟件重新賦值,而是由預置寄存器重新賦值,而是由預置寄存器TH以硬件方法自動給以硬件方法自動給計數(shù)器計數(shù)器TL0重新加載。重新加載。與方式與方式0和方式和方式1不同處:不同處: 只使用只使用TL0做做8位計數(shù)器,最大計數(shù)值位計數(shù)器,最大計數(shù)值255; 最大定時時間最大定時時間(晶振晶振12MHz時時): 256 s 用于需要重復定時和計數(shù)的場合。用于需要重復定時和計數(shù)的場合。方式方式2用于定時工作方式,定時時間由下式確定:用于定時工作方式,定時時間由下式確定:t=NTcy=(256- X
20、) Tcy計數(shù)初值計數(shù)初值X:X=256-tTcy4、 方式327方式 3(兩個 8 位獨立計數(shù)器)結(jié)構(gòu)圖只能定時不能計數(shù)。只能定時不能計數(shù)。既可以定時既可以定時也可以計數(shù)也可以計數(shù)方式 3(兩個 8 位獨立計數(shù)器)28(2)TH0占用了占用了T1的控制位的控制位TR1、和中斷標志位、和中斷標志位TF1,同時,同時占用了占用了T1的中斷資源,此時,的中斷資源,此時,TH0固定為一個固定為一個8位計數(shù)器,位計數(shù)器,啟動受啟動受TR1控制控制,只能定時不能計數(shù)。只能定時不能計數(shù)。說明:說明:(1)T0在方式在方式3時,時,TL0使用使用T0的控制位的控制位C/T、GATE、TR0、INT0,既可以
21、定時也可以計數(shù)。,既可以定時也可以計數(shù)。(3)T0工作在方式工作在方式3時,時,T1可以工作在方式可以工作在方式0、1、2。(4)T0工作在方式工作在方式3時,占用了時,占用了TR1、TF1; T1只受只受C/T位位控制,計數(shù)滿時也沒有溢出中斷請求,控制,計數(shù)滿時也沒有溢出中斷請求,只能將輸出送到串行只能將輸出送到串行口。所以此時口。所以此時T1可以作串行口波特率發(fā)生器,可以作串行口波特率發(fā)生器,如果需要如果需要T1停止計數(shù),只需設置停止計數(shù),只需設置T1為方式為方式3即可。即可。T0工作在方式工作在方式3時,時,T1工作在方式工作在方式2的邏輯圖的邏輯圖29四、應用30定時定時/計數(shù)器的應用
22、計數(shù)器的應用(1)選擇定時)選擇定時/計數(shù)器計數(shù)器 T0、T1選擇其一,選擇其一,(2)定時或外計數(shù)選擇)定時或外計數(shù)選擇 C/T及及GATE,(3)工)工 作作 方式方式 M1、M0(4)計)計 數(shù)數(shù) 初初 值值 加加1計數(shù)、位數(shù)計數(shù)、位數(shù)(5)計)計 數(shù)數(shù) 初初 值值 的的再裝入再裝入1)寫)寫TMOD;2)確定)確定IE、IP;3)寫計數(shù)初值;)寫計數(shù)初值;4)啟動計數(shù)()啟動計數(shù)(TRi) 編制初始化程序:編制初始化程序:中斷相關(guān)寄存器31中斷允許控制寄存器中斷允許控制寄存器IEEA-ESET1EX1ET0EX0 IE(A8H)AFH AEH ADH ACH ABH AAH A9H A
23、8H51單片機有單片機有兩個兩個中斷優(yōu)先級。中斷優(yōu)先級。高高優(yōu)先級或優(yōu)先級或低低優(yōu)先級中斷。優(yōu)先級中斷。p中斷優(yōu)先級寄存器中斷優(yōu)先級寄存器IPPSPT1PX1PT0PX0 IP(B8H) BCH BBH BAH B9H B8H設計一個能產(chǎn)生設計一個能產(chǎn)生t=1ms的周期信號發(fā)生器,試編程的周期信號發(fā)生器,試編程.32解:解:選選T0方式方式0; C/T=0,GATE= 0 ;12MHz時鐘,時鐘,T=1usN = 0.5ms / T=0.5ms /1us=500初值初值=213-500=8192-500=7692=1E0CH= 0001 1110 000 0 1100B, 1E0CH01100
24、TL011110000TH0F0H0CH33 LJMP MAIN ORG 000BH LJMP Tim0 ORG 1000H MAIN: MOV SP,#60H MOV TL0,#0CH MOV TH0,#0F0H MOV TMOD,#00H SETB TR0 SETB ET0 SETB EA SJMP ORG 0000H Tim0: MOV TL0,#0CH MOV TH0,#0F0H CPL P1.0 RETI 設計一個能產(chǎn)生設計一個能產(chǎn)生t=1ms的周期信號發(fā)生器,試編程的周期信號發(fā)生器,試編程.200ms的方波?的方波?34 LJMP MAIN ORG 000BH LJMP INSE0
25、 ORG 1000H MAIN: MOV SP,#60H MOV TL0,#0CH MOV TH0,#0F0H MOV TMOD,#00H SETB TR0 SETB ET0 SETB EA SJMP MOV R2,#200MOV R2,#200 ORG 0000H INSE0:DJNZ R2, Next CPL P1.0 MOV R2,#200Next: MOV TL0,#0CH MOV TH0,#0F0H RETI 設計一個能產(chǎn)生設計一個能產(chǎn)生t=200ms的周期信號發(fā)生器,試編程的周期信號發(fā)生器,試編程.200ms的方波的方波:軟件計數(shù)軟件計數(shù) 當實際應用系統(tǒng)中應用系統(tǒng)的當實際應用系統(tǒng)中
26、應用系統(tǒng)的2個外部中斷源已被個外部中斷源已被占用,現(xiàn)要求占用,現(xiàn)要求增加增加1個外部中斷源個外部中斷源,而片內(nèi)定時器,而片內(nèi)定時器/計數(shù)器沒有使用時,可利用定時器計數(shù)器沒有使用時,可利用定時器/計數(shù)器擴展外計數(shù)器擴展外部中斷源,部中斷源,方法如下:方法如下:將定時器將定時器/計數(shù)器設置為計計數(shù)器設置為計數(shù)模式,計數(shù)初值設定為滿值,將待擴展的外部數(shù)模式,計數(shù)初值設定為滿值,將待擴展的外部中斷源接到定時器中斷源接到定時器/計數(shù)器。當從該引腳輸入一個計數(shù)器。當從該引腳輸入一個下降沿信號,計數(shù)器加下降沿信號,計數(shù)器加1后產(chǎn)生定時器后產(chǎn)生定時器/計數(shù)器溢計數(shù)器溢出中斷。因此定時器出中斷。因此定時器/計數(shù)
27、器可作為擴展中斷源的計數(shù)器可作為擴展中斷源的中斷輸入端。中斷輸入端。例例:利用定時器利用定時器/計數(shù)器計數(shù)器T0擴展一個外部中斷源,擴展一個外部中斷源,T0設置為方式設置為方式2(自動重裝初值方式)外部計數(shù)工(自動重裝初值方式)外部計數(shù)工作模式,作模式,TH0、TH1初值均為初值均為0FFH,初始化程序,初始化程序如下:如下:INIT_T0: MOV TMOD,#06H; T0計數(shù)方式計數(shù)方式2 MOV TH0,#0FFH; MOV TH0,#0FFH; SETB ET0; T0開中斷;開中斷; SETB EA; 開總中斷開總中斷 SETB TR0 ; 啟動計數(shù)器啟動計數(shù)器T0#include
28、sbit pulse_out=P10;unsignedcharflag;/*定義T0產(chǎn)生中斷標志位*/*定時器初始化程序*/init_timer()TMOD=0X25;/*T0計數(shù),方式1;/*T1定時,方式2*/TH0=0XFF;/*T0置初值*/TL0=0XFF;TH1=0X06;/*T1置初值*/TL1=0X06;IE=0X8A;/*開中斷*/TR0=1;/*啟動T0*/ GA TE C/TM 1M 0GA TE C/TM 1M 0例例 假設某假設某80C51應用系統(tǒng)的應用系統(tǒng)的2個外部中斷源已被占用,現(xiàn)要個外部中斷源已被占用,現(xiàn)要求增加求增加1個外部中斷源,并控制個外部中斷源,并控制P
29、1.0引腳輸出引腳輸出1個周期為個周期為1ms的方波。假設晶振頻率為的方波。假設晶振頻率為6MHz。X = 256 - t/T = 256 (500)/2 = = 0X06HIEEAESET1EX1ET0EX0/*T0中斷服務程序中斷服務程序*/void t0_int() interrupt 1TR0=0;/*T0停止工作停止工作*/flag=1; /*置置1中斷產(chǎn)生標志位中斷產(chǎn)生標志位*/*T1中斷服務程序中斷服務程序*/void t1_int() interrupt 3pulse_out=!pulse_out;/*脈沖輸出位取反脈沖輸出位取反*/main() /*主程序主程序*/init_
30、timer();/*調(diào)用定時器初始化程序調(diào)用定時器初始化程序*/flag=0; /*T0產(chǎn)生中斷標志位清產(chǎn)生中斷標志位清0*/while(!flag); /*等待等待T0產(chǎn)生中斷產(chǎn)生中斷*/TR1=1; /*T0中斷后,啟動中斷后,啟動T1*/while(1);/*等待等待T1中斷中斷*/方式方式1的應用的應用例:例:利用定時利用定時/計數(shù)器(計數(shù)器(T0)的方式)的方式1,產(chǎn)生一個,產(chǎn)生一個50Hz的方波,此方波由的方波,此方波由P1.0引腳輸出,假設晶振頻率為引腳輸出,假設晶振頻率為12MHz。1) 確定確定定時器初值定時器初值X: 由于由于晶振為晶振為12MHz,所以一個機器周期,所以一
31、個機器周期Tcy =(121)/(12106)=1s。計數(shù)初值。計數(shù)初值X=216- tTcy=65536-0.01s1s=65536-10000=55536=D8F0H即應將即應將D8H送入送入TH0中,中,F(xiàn)0H送入送入TL0中。中。2) 根據(jù)根據(jù)要求求得要求求得T0的方式控制字的方式控制字TMOD:GATE=0, C/T=0,M1M0=01,可得方式控制字,可得方式控制字TMOD=01H,即,即T0的方式的方式1。查詢查詢方式:方式:#includesbit pulse_out=P10;/*定義脈沖輸出位定義脈沖輸出位*/main()TMOD=0 x01;/* T0定時方式定時方式1*/
32、TH0=0 xD8;/*裝入計數(shù)初值裝入計數(shù)初值*/TL0=0 xF0;TR0=1;/*啟動定時器啟動定時器T0*/while(1) if(TF0)/*查詢查詢TF0,等待定時時間到等待定時時間到*/ TF0=0;/*定時時間到,清定時時間到,清TF0*/ TH0=0 xD8;/*重裝計數(shù)初值重裝計數(shù)初值*/ TL0=0 xF0; pulse_out=!pulse_out;/*脈沖輸出位取反脈沖輸出位取反*/ 中斷方式:中斷方式:#includesbitpulse_out=P10;/*定義脈沖輸出位定義脈沖輸出位*/*中斷服務程序中斷服務程序*/voidT0_int() interrupt1T
33、H0=0 xD8;/*重裝計數(shù)初值重裝計數(shù)初值*/TL0=0 xF0;pulse_out=!pulse_out;/*脈沖輸出位取反脈沖輸出位取反*/ /*主程序主程序*/main()TMOD=0 x01;/* T0定時方式定時方式1*/TH0=0 xD8;/*裝入計數(shù)初值裝入計數(shù)初值*/TL0=0 xF0;ET0=1;/*T0開中斷開中斷*/EA=1;/*開總中斷開總中斷*/TR0=1;/*啟動定時器啟動定時器T0*/while(1);/*等待中斷等待中斷*/例:例:假設系統(tǒng)時鐘為假設系統(tǒng)時鐘為6MHz,編寫定時器,編寫定時器T0定時定時1s的程序。的程序。分析:分析: MAX=131.072
34、ms 1s=100ms*10; X=65536-100/2=3CBOH#include/*定時器定時器T0中斷服務程序中斷服務程序*/void T0_int() interrupt 1static unsigned charcount; /*聲明靜態(tài)變量聲明靜態(tài)變量count*/count+;/*累計中斷次數(shù)累計中斷次數(shù)*/TH0=0 x3C;/*重裝計數(shù)初值重裝計數(shù)初值*/TL0=0 xB0;if(count= =10)TR0=0; /*1s到,停止到,停止T0工作工作*/ /*主程序主程序*/main() TMOD=0 x01;/* T0定時方式定時方式1*/TH0=0 x3C;/*裝入計
35、數(shù)初值裝入計數(shù)初值*/TL0=0 xB0;ET0=1;/*T0開中斷開中斷*/EA=1;/*開總中斷開總中斷*/TR0=1;/*啟動定時器啟動定時器T0*/while(1);/*等待中斷等待中斷*/方式方式2例例: 利用定時利用定時/計數(shù)器計數(shù)器T1的方式的方式2對外部信號計數(shù)。要求對外部信號計數(shù)。要求每計滿每計滿200個數(shù),將個數(shù),將P1.0引腳信號取反。引腳信號取反。#includesbitpulse_out=P10;/*定義脈沖輸出位定義脈沖輸出位*/void t1_int() interrupt 3pulse_out=!pulse_out;/*取反脈沖輸出位取反脈沖輸出位*/main(
36、)TMOD=0 x60;/* T1計數(shù)方式計數(shù)方式2*/TH1=0 x38;/*裝入計數(shù)初值裝入計數(shù)初值*/TL1=0 x38; 256-200=56=0 x38ET1=1;/*T1開中斷開中斷*/EA=1;/*開總中斷開總中斷*/TR1=1;/*啟動定時器啟動定時器T1*/while(1);/*等待中斷等待中斷*/方式方式3例:例: 定時定時/計數(shù)器計數(shù)器T1作波特率發(fā)生器用,增加作波特率發(fā)生器用,增加1個外部個外部中斷源,并用它來控制中斷源,并用它來控制P1.0引腳輸出引腳輸出1個個5KHz的方波。假的方波。假設晶振頻率為設晶振頻率為6MHz。#includesbit pulse_out=
37、P10; /*定義脈沖輸出位定義脈沖輸出位*/*定時器初始化程序定時器初始化程序*/init_timer()TMOD=0X27; /*設置定時器工作方式設置定時器工作方式*/TL0=0XFF; /*裝入初值裝入初值*/TH0=0XCE; TL1=0Xxx; /*根據(jù)波特率設置初值根據(jù)波特率設置初值*/TH1=0Xxx; IE=0X9A; /*允許中斷允許中斷*/TR0=1; /*啟動啟動TL0*/*TL0中斷服務程序中斷服務程序*/void tl0_int() interrupt 1 TR1=1; /*啟動啟動TH0*/TL0=0XFF; /*重裝初值重裝初值*/*TH0中斷服務程序中斷服務程
38、序*/void th0_int() interrupt 3TH0=0XCE; /*重裝初值重裝初值*/pulse_out=!pulse_out;/*脈沖輸出位取反脈沖輸出位取反*/*主程序主程序*/main()init_timer(); /*調(diào)用定時器初始化程序調(diào)用定時器初始化程序*/while(1); /*等待中斷等待中斷*/ 例:例:門控位門控位GATE的應用的應用測量測量 INTX引腳脈沖寬度引腳脈沖寬度 當當GATE0=1且且TR0=1時,只有時,只有INT0引腳輸入高電平時,引腳輸入高電平時,T1才被允許工作。利用這個特性,可測量從才被允許工作。利用這個特性,可測量從INT0引腳(引腳(P3.2)上輸入的正脈沖的寬度,其方法如圖所示。)上輸入的正脈沖的寬度,其方法如圖所示。(P3.2P3.2)09HTMOD1GATE0 1TR0T0從從0開始計數(shù)開始計數(shù)測量脈沖寬度測量脈沖寬度0TR0停止計數(shù)停止計數(shù)圖圖6-236-23利用利用GATEGATE位測量正脈沖寬度位測量正脈沖寬度ORG 0000HLJMP MAINORG 0100HMAIN:MOVSP,#
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康生活遠離疾病課件
- 健康游戲課件幼兒園
- 2025年公用事業(yè)行業(yè)投資策略分析報告:能源轉(zhuǎn)型開啟降本周期
- 營銷策劃管理崗管理辦法
- 蔡甸區(qū)礦產(chǎn)開采管理辦法
- 蚌埠柴油車管理辦法細則
- 西藏新投資項目管理辦法
- 衢江區(qū)項目報備管理辦法
- 西安養(yǎng)老社會化管理辦法
- 規(guī)范ppp項目管理辦法
- 扶貧農(nóng)產(chǎn)品購銷合同協(xié)議(農(nóng)產(chǎn)品購銷合同模板)
- 汽車維修高級工考試試題及參考答案
- 檢驗科安全管理制度匯總
- 英語音標拼讀方法講解
- MT 113-1995煤礦井下用聚合物制品阻燃抗靜電性通用試驗方法和判定規(guī)則
- GB/T 5782-2016六角頭螺栓
- GB/T 23445-2009聚合物水泥防水涂料
- GB/T 13451.2-1992著色顏料相對著色力和白色顏料相對散射力的測定光度計法
- GB/T 11264-2012熱軋輕軌
- 山東省中小學校檔案管理暫行辦法
- 眼鏡鏡架知識匯總課件
評論
0/150
提交評論