版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第五章第五章 51單片機(jī)對時間的控制單片機(jī)對時間的控制1、軟件定時2、可編程定時匯編語言可實現(xiàn)精確定時匯編語言可實現(xiàn)精確定時1、晶振電路、晶振電路 圖中X1表示一個晶體振蕩器,我們單片機(jī)時鐘的值就由它的選值決定。假設(shè)使用的振蕩值為12MHZ那么它能產(chǎn)生的頻率信號就為12MHZ。 單片機(jī)不能直接運(yùn)用12MHZ的時鐘信號,單片機(jī)內(nèi)部晶振信號進(jìn)行12分頻,分頻后的頻率信號就為機(jī)器信號。假如用12M晶振的話,51單片機(jī)的時鐘周器為:1(12MHZ12)=1s。如果晶振選擇6M的話,機(jī)器周期就為2s。DELAYL: MOV R5,#255LOOP: NOP NOP DJNZ R5, LOOPRET一個短
2、的延時子程序一個短的延時子程序這個子程序最大所用的時間為:1+(1+1+2)255+2=1023s 較長時間的定時程序較長時間的定時程序 DELAYL: LOOP2: MOV R5,# time1LOOP1: MOV R6,# time2 NOP NOPDJNZ R6,LOOP1 DJNZ R5,LOOP2RET 這段程序的延時時間:(1+1+2)time2+2+1 time1+2 +1DELAY1S: ;軟件延時子程序 MOV R4,#4LOOP3: MOV R5,#255LOOP2: MOV R6,#245LOOP1: NOP NOP DJNZ R6,LOOP1 DJNZ R5,LOOP2
3、 DJNZ R4,LOOP3RET 1秒延時子程序秒延時子程序 C語言實現(xiàn)延時子程序語言實現(xiàn)延時子程序 void Delay500ms( )unsigned char i,j,k; for(i=200;i0;i-) for(j=20;j0;j-) for(k=250;k0;k-);可編程定時可編程定時 (定時器控制)(定時器控制) 單片機(jī)定時的方法有:硬件定時、軟件定時、可編程定時。硬件定時是由硬件電路構(gòu)成,本書著重講軟件編程,就不再介紹。軟件定時就是我們在本章第一節(jié)所學(xué),主要依靠循環(huán)程序進(jìn)行時間的延遲,軟件定時控制精確,但是占用CPU的開銷,在延時的過程中,無法在進(jìn)行其他操作。而可編程定時是
4、通過單片機(jī)自帶的定時器完成,對CPU的消耗不大,而在本節(jié)重點(diǎn)介紹單片機(jī)的可編程定時器。51單片機(jī)定時單片機(jī)定時/計數(shù)器計數(shù)器 51單片機(jī)共有兩個可編程的定時器/計數(shù)器,分別稱為定時/計數(shù)器0和定時/計數(shù)器1。它們都是16位的加法計數(shù)結(jié)構(gòu)。(1)計數(shù)功能:是對外部脈沖信號進(jìn)行計數(shù)。51單片機(jī)P3.4和P3.5的第二功能T0、T1就是計數(shù)脈沖的輸入端,如圖4-21所示。外部輸入的脈沖在負(fù)跳變,也就是下降沿有效,計1次數(shù),計數(shù)器寄存器自動加1,需要注意一點(diǎn):脈沖頻率不能高于晶振頻率的1/24。(2)定時功能:定時功能也是通過計數(shù)器的計數(shù)來實現(xiàn)的。不過這兒的計數(shù)脈沖來自于單片機(jī)的內(nèi)部,每個機(jī)器周期產(chǎn)生
5、一個計數(shù)脈沖。機(jī)器頻率是晶振頻率的1/12。如果選用12MHZ晶振的話,則計數(shù)頻率就為1MHZ。也就是說,如果我們開啟定時器,則每過1s,計數(shù)器就自動加1。這樣就可以根據(jù)計數(shù)值計算出定時時間了。定時器定時器/計數(shù)器相關(guān)寄存器計數(shù)器相關(guān)寄存器 (1)定時器)定時器0數(shù)據(jù)寄存器數(shù)據(jù)寄存器 定時器/計數(shù)器0是個16位的定時計數(shù)器,分別有兩個8位的數(shù)據(jù)寄存器構(gòu)成。TH0在內(nèi)部RAM高128單元的地址為8CH, TL0為8AH。它們既可以合并為一個使用,又可以單獨(dú)使用。不管怎樣,它們的計數(shù)值都是向上遞增的,計數(shù)一次,它們的值加1。(2)定時器)定時器1數(shù)據(jù)寄存器數(shù)據(jù)寄存器 定時器/計數(shù)器1同樣也是個16
6、位的定時計數(shù)器,分別有兩個8位的數(shù)據(jù)寄存器構(gòu)成。TH0在內(nèi)部RAM高128單元的地址為:8DH, TL0為8BH。它們既可以合并為一個使用,又可以單獨(dú)使用。同樣,它們的計數(shù)值都是向上遞增的。(3)定時器控制寄存器)定時器控制寄存器TCON(88H) TF0和和TF1計數(shù)溢出標(biāo)志位計數(shù)溢出標(biāo)志位 當(dāng)計數(shù)器計數(shù)溢出(計滿)時,該位置“1”。例如,當(dāng)定時器0作為一個16定時計數(shù)器時,也就是TH0和TL0合并為一個16位數(shù)據(jù)寄存器,當(dāng)計數(shù)達(dá)到最大狀態(tài)65535,如表4-5所示。如果再計一個數(shù),就會產(chǎn)生溢出,此時標(biāo)志位TF0被置為1,而TH0和TL0都被清零。 TR1和和TR0定時器運(yùn)行控制位定時器運(yùn)行
7、控制位 TR0(TR1)=0,停止定時器/計數(shù)器的工作。 TR0(TR1)=1,開啟定時器/計數(shù)器的。(4)中斷允許控制寄存器)中斷允許控制寄存器IE(0A8H)在第3章講過了三個控制位:EA、EX1、EX0。其中EA:為總的中斷允許控制位ET1、ET0定時/計數(shù)中斷控制位ET1=0,禁止定時/計數(shù)1中斷;ET1=1,允許定時/計數(shù)1中斷ET0=0,禁止定時/計數(shù)0中斷;ET0=1,允許定時/計數(shù)0中斷(5)定時計數(shù)工作方式控制寄存器TMOD(89H) GATE門控位門控位 GATE=0,運(yùn)行控制位TR來啟動定時器。 GATE=1,以外中斷請求信號(INT1或INT0)啟動定時器。 C/T定時
8、方式或計數(shù)方式選擇位定時方式或計數(shù)方式選擇位 C/T=0,定時工作方式。 C/T=1,計數(shù)工作方式。 M1 M0工作方式選擇位工作方式選擇位定時工作方式定時工作方式0 方式0是13位計數(shù)結(jié)構(gòu)的工作方式,假設(shè)當(dāng)前讓定時器/計數(shù)器1處于工作方式0。其中計數(shù)器由TH1的全部8位和TL1的低5位構(gòu)成 在定時工作1,16位寄存器TH1和TL1只用13位,由TH1的8位和TL1的低5位組成。當(dāng)TL1的低5位計數(shù)溢出時,向TH1進(jìn)位。而TH1計數(shù)溢出時,則向中斷標(biāo)志位TF1進(jìn)位(即硬件將TF1置1),并請求中斷??赏ㄟ^查詢TF1是否置“1”或考察中斷是否發(fā)生來判定定時器T1的操作完成與否。下面的描述以定時/
9、計數(shù)器1為準(zhǔn): 當(dāng)C/T=0時,為定時工作模式,開關(guān)接到振蕩器的12分頻器輸出,計數(shù)器對機(jī)器周期脈沖計數(shù)。其定時時間為:(213-計數(shù)初值)機(jī)器周期 例如:若晶振頻率為12MHz,則機(jī)器周期為1s。則最長的定時時間為:(213-0)1s=8191s當(dāng)C/T=1時,為計數(shù)工作模式,開關(guān)與外部引腳T1(P3.5)接通,計數(shù)器對來自外部引腳的輸入脈沖計數(shù),當(dāng)外部信號發(fā)生負(fù)跳變時計數(shù)器自動加1。 當(dāng)GATE=0時,“或門”輸出恒為1,“與門”的輸出信號K由TR1決定,定時器不受INT1輸入電平的影響,由TR1直接控制定時器的啟動和停止。TR1=1;定時/計數(shù)啟動;TR1=0;定時/計數(shù)停止; 當(dāng)GAT
10、E=1時,“與門”的輸出信號K由INT1輸入電平和TR1位的狀態(tài)一起決定,當(dāng)且僅當(dāng)TR1=1且INT1=1(高電平)時,計數(shù)啟動;否則,計數(shù)停止。工作方式工作方式0、實例、實例1寄存器設(shè)定寄存器設(shè)定 (1)計數(shù)初值設(shè)置)計數(shù)初值設(shè)置 想要產(chǎn)生500s周期的方波信號,就需要在P1.0每隔250s,電平翻轉(zhuǎn)一次。所以定時時間為250s,我們需要給定時數(shù)據(jù)寄存器賦初值,讓它能在要求的時間內(nèi)溢出,以判斷是否翻轉(zhuǎn)P1.0的電平。將這個初值設(shè)為X,則: (213-X) 1s=250s X=213-125=7942= 1111100000110B 。因為使用的是定時器0,所以此數(shù)值高8位放入TH0,TH0的
11、值為0F8H;低5位的值放入TL0,TL0的值06H。 (2)定時工作方式選擇)定時工作方式選擇 利用寄存器TMOD設(shè)定定時/計數(shù)工作方式, TMOD設(shè)置的值為00H。(3)中斷關(guān)閉)中斷關(guān)閉 由于我們采用查詢方式,所以中斷全部關(guān)閉,IE的值為00H 工作方式工作方式0、實例、實例2 本實例,利用定時器1的計數(shù)功能來計算方波脈沖的個數(shù),定時器0依舊產(chǎn)生500s的方波信號,不過采用的是中斷方式實現(xiàn) ,計數(shù)1的脈沖就來自于定時器0產(chǎn)生的方波信號 工作方式工作方式0、實例、實例2寄存器設(shè)定寄存器設(shè)定 (1)定時計數(shù)工作方式)定時計數(shù)工作方式TMOD (2) 計數(shù)器計數(shù)器1計數(shù)初值設(shè)定計數(shù)初值設(shè)定 計
12、數(shù)器1計數(shù)10次就中斷,我們同樣將計數(shù)初值設(shè)為X,那么: 213-X=10,X=8182=1FF6H=1111111110110B 其中高8位放入TH1,TH1的值為0FFH;低5位的值放入TL1,TL1的值16H。 (3) 中斷開關(guān)設(shè)置中斷開關(guān)設(shè)置EA在本例程中,需要同時開啟定時/計數(shù)0、定時/計數(shù)1、總中斷開關(guān)。 (4) 中斷優(yōu)先級設(shè)定中斷優(yōu)先級設(shè)定IP 將PT1設(shè)置為1,PT0設(shè)置為0。表示定時器1的中斷優(yōu)先級高于定時器0,如果當(dāng)程序執(zhí)行在定時器0中斷服務(wù)程序中,計數(shù)器1中斷發(fā)生,則打斷定時器0的中斷服務(wù)程序,當(dāng)計數(shù)器1的中斷服務(wù)程序執(zhí)行完畢后,再執(zhí)行中斷服務(wù)程序0的內(nèi)容,這就實現(xiàn)了中斷
13、的嵌套。 中斷源向量地址定時計數(shù)器 0(TF0)000BH0012H定時計數(shù)器 1(TF1)001BH0022H定時計數(shù)中斷響應(yīng)地址 C51 中斷序號 定時工作方式定時工作方式1 當(dāng)工作方式控制寄存器控制位M1、M0=01,定時/計數(shù)器所在的工作方式為工作方式1,假設(shè)我們使用定時器0,則定時數(shù)據(jù)寄存器就是由TH0的全部8位和TL0全部8位組成。其邏輯電路和工作情況和方式0是完全相同的,所不同的只是組成計數(shù)器的位數(shù)。當(dāng)處于計數(shù)方式時:計數(shù)值的范圍為:0216(65536)。當(dāng)采用定時方式時:定時時間的計算為:(216-計數(shù)初值)機(jī)器周期假設(shè)選用的晶振為12MHZ時,機(jī)器周期為:1s則最長的定時時
14、間為:(216-0)1s=65536s65.54ms0.066s最小的定時時間為: 216-(216-1)1s=1s實例設(shè)計方案實例設(shè)計方案 在本節(jié),采用可編程定時的方法實現(xiàn)流水燈功能,采用方式1最大的定時時間也僅為65.54ms,而前面我們采用軟件延時的流水燈,延時的時間為1s,貌似不可行。 但如果讓定時器采取多次定時的方法呢?設(shè)置一次定時的時間為50 ms,讓它連續(xù)重復(fù)20次這樣的過程,不就可以達(dá)到要求了嗎?在定時中斷中,設(shè)置一個計數(shù)變量,每發(fā)生一次中斷,計數(shù)變量就自動加1,直到這個計數(shù)變量達(dá)到20,我們置位循環(huán)移位標(biāo)志位。當(dāng)循環(huán)移位標(biāo)志位為1時,此時流水燈循環(huán)一次,再將循環(huán)移位標(biāo)志位置0
15、。重復(fù)這樣的過程,就達(dá)到流水燈的效果 工作方式工作方式1、寄存器設(shè)定、寄存器設(shè)定(1)定時計數(shù)工作方式)定時計數(shù)工作方式TMOD (2)定時器)定時器0計數(shù)初值設(shè)定計數(shù)初值設(shè)定 想要產(chǎn)生50ms定時時間長度,設(shè)定時器的初值為X,同樣選用12MHZ晶振頻率。則: (216-X) 1s=50ms=50000s X=216-125=15536= 3CB0H 。因為使用定時器0,所以將此數(shù)值高8位放入TH0,TH0的值為3CH,低8位的值放入TL0,TL0的值0B0H。(3)中斷開關(guān))中斷開關(guān)IE定時工作方式定時工作方式2 這是定時/計數(shù)器1在工作方式2下的邏輯圖,定時/計數(shù)器0同樣也是如此。TH1作
16、為常數(shù)緩沖器,當(dāng)TL1計數(shù)溢出時,在置“1”溢出標(biāo)志TF1的同時,還自動的將TH1中的初值送至TL1,使TL1從初值開始重新計數(shù)。 方式0和方式1用于循環(huán)重復(fù)定時或計數(shù)時,在每次計數(shù)器溢出后,計數(shù)器數(shù)據(jù)寄存器被清零。若要進(jìn)行新一輪的計數(shù),就得重新裝入計數(shù)初值。這樣一來不僅造成編程麻煩,而且影響定時精度。而方式2具有初值自動裝入的功能,避免了這個缺點(diǎn),可實現(xiàn)精確的定時。方式2只是8位計數(shù)器,定時時間短、計數(shù)范圍小。其定時時間為:(28-初值)機(jī)器周期若晶振頻率為12MHz,則最長的定時時間為:(28-0)1s=256s =0.256ms 實例功能設(shè)想實例功能設(shè)想 同時運(yùn)用定時器0和定時器1。定時
17、/計數(shù)器0用的是定時功能,運(yùn)用定時器0制作一個高精度的信號發(fā)生器,產(chǎn)生200s的方波信號。而定時/計數(shù)器1充當(dāng)一個脈沖計數(shù)器的功能,用P0、P2端口電平指示器來顯示脈沖個數(shù)。(1)定時計數(shù)工作方式)定時計數(shù)工作方式TMOD (2)定時器)定時器0計數(shù)初值設(shè)定計數(shù)初值設(shè)定 想讓單片機(jī)P1.0輸出周期為200s的方波脈沖。則定時器0的定時時間為100s。使用12M晶振,則機(jī)器周期為1s。我們設(shè)計數(shù)初值為x,則:(28-X)1s =100s X=156=9CH。則TH0和TL0都設(shè)定為9CH。實例寄存器設(shè)定實例寄存器設(shè)定(3)計數(shù)器)計數(shù)器1計數(shù)初值設(shè)定計數(shù)初值設(shè)定在工作方式2之下,計數(shù)最大值為28
18、=256, 這個計數(shù)值不是很大,所以我們將計數(shù)初值設(shè)定為0,讓它從0開始計數(shù),則TH1和TL1都設(shè)定為0。(4)中斷開關(guān)設(shè)置()中斷開關(guān)設(shè)置(IE) (5)中斷優(yōu)先級設(shè)置()中斷優(yōu)先級設(shè)置(IP) 定時工作方式定時工作方式3 定時/計數(shù)0在方式3時被拆成兩個獨(dú)立的8位計數(shù)器:TH0和TL0。 TL0使用定時/計數(shù)0的狀態(tài)控制位C/T、GATE、TR0、INT0,它既可以工作在定時方式,也可以工作在計數(shù)方式。而TH0被固定為一個8位定時器(不能作外部計數(shù)模式),并使用定時器定時/計數(shù)1的狀態(tài)控制位TR1,同時占用定時器T1的中斷請求源TF1。此時,定時器TH0的啟動或停止只受TR1控制。TR1=1時,啟動TH0的計數(shù);TR1=0時,停止TH0的計數(shù)。實例規(guī)劃實例規(guī)劃 通過第3章的學(xué)習(xí),我們知道51單片機(jī)只有兩個外中斷,在應(yīng)用系統(tǒng)中可能會有外中斷不夠用的情況,這時候計數(shù)器往往能充當(dāng)一個外中斷角色。實現(xiàn)的方法非常的簡單,將定時/計數(shù)器設(shè)置為計數(shù)模式,將計數(shù)初值設(shè)定為總計數(shù)值,這樣再來一次脈沖信號,計數(shù)器就會溢出,繼而進(jìn)入中斷。假設(shè)我們選
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度臨時臨時臨時停車場租賃合同2篇
- 2025年度個人股權(quán)分割及轉(zhuǎn)讓合同3篇
- 個人與個人2024年度汽車租賃合同3篇
- 二零二五年度寧波勞動合同模板:包含員工勞動合同變更條款
- 二零二五年度外匯借款合同風(fēng)險防范與應(yīng)對策略
- 2025年度個人一手房買賣合同社區(qū)配套服務(wù)范本2篇
- 二零二五年度培訓(xùn)協(xié)議與勞動合同整合方案協(xié)議
- 2025版電子政務(wù)項目勞務(wù)分包合同補(bǔ)充協(xié)議書范本3篇
- 2025年度智能家居床品定制采購合同3篇
- 二零二五年度樂器行業(yè)市場調(diào)研與咨詢服務(wù)合同
- 2024年資格考試-對外漢語教師資格證筆試參考題庫含答案
- 軟件研發(fā)安全管理制度
- 三位數(shù)除以兩位數(shù)-豎式運(yùn)算300題
- 寺院消防安全培訓(xùn)課件
- 比摩阻-管徑-流量計算公式
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、異丙醇和正丁醇檢驗
- 五年級數(shù)學(xué)應(yīng)用題100道
- 西方經(jīng)濟(jì)學(xué)(第二版)完整整套課件(馬工程)
- 高三開學(xué)收心班會課件
- GB/T 33688-2017選煤磁選設(shè)備工藝效果評定方法
- 科技計劃項目申報培訓(xùn)
評論
0/150
提交評論