
對于剛開始接觸單片機定時器知識學習的新人工程師來說,牢固鞏固知識基礎只是邁出的第一步,更重要的是要結合單片機的設計實例,靈活利用單片機定時器來完成相關的程序設計。在今天的文章中,我們將會通過一個實際案例,來為大家解析一下單片機定時器在實際應用中的一些設計步驟和技巧。
在本案例中,我們所提出的條件是利用單片機定時器定時50毫秒,使用定時器0,工作方式1模式。50毫秒一到,即點亮指示燈D1。按照這一設計要求,我們可以按照下列兩個大步驟來進行單片機程序的設置。
我們要做的第一個步驟就是確定定時器0初始化程序。這一部分的設計是非常重要的,按照單片機的正常使用程序,我們可以從四個方面出發(fā),來進行相應的設置。
第一步是要完成對TMOD的賦值設置,以此來確定T0和T1的工作方式。
在本案例中,我們已經(jīng)從前文所提及的設計要求上明確了這一方案中需要使用定時器0工作方式,因此這一步的工作就簡單了很多。此時,TMOD=0X01,因此設置定時器0為工作方式1。具體設置過程在一些單片機基礎教程上已經(jīng)講解的非常敘述,因此在本案例的設計過程中,我們不再做過多的贅述。
在完成了對單片機定時器的對TMOD的賦值設置之后,接下來的工作就是精確計算計數(shù)初值X,并在得出相應數(shù)值后將其按照要求寫入TH0、TL0,或?qū)懭隩H1、TL1。在本案例中,由于晶振給出的條件為12MHz,所以我們所選取的機器周期Tcy為1ms。因此,定時器要計數(shù)50000個就是50毫秒,其換算比例為:
N=t/Tcy=50000/1=50000個
TH0=(65536-50000)/256(求模的意思)
TL0=(65536-50000)%256(求余的意思)
完成了計數(shù)初值X的計算和寫入工作后,第三個步驟就是在進行單片機定時器的中斷方式設置時,同時對IE賦值,開放中斷。在這一案例中,我們結合設計要求,設置為當EA=1時,總中斷打開;當ET0=1時,定時器0中斷打開。
在完成了上面三個步驟的設置后,接下來就是本環(huán)節(jié)中的最后一個步驟,即使TR0或TR1置位,啟動定時/計數(shù)器定時或計數(shù)。在這里我們設置TRO=1,啟動定時器0開始計時。
在已經(jīng)確定了定時器0初始化程序的前提下,接下來我們就需要完成對定時器0的中斷服務程序的編寫,這一部分的中斷服務程序可按照下圖進行編寫:
在我們所編寫的這一中斷程序中,由于單片機是根據(jù)interrupt后的數(shù)字來確定是哪個定時器產(chǎn)生的中斷,因外部中斷序號是0,因此我們這里的定時器0中斷序號是1。這里需要注意,再次裝入初值是為了防止下次計數(shù)出錯,這一步驟是不可隨意省略的。
以上就是本文針對一個單片機定時器應用實例所進行的解讀和分析,希望通過本文的介紹,對各位新人工程師的設計工作提供一定的幫助。
聲明:本內(nèi)容為作者獨立觀點,不代表電源網(wǎng)。本網(wǎng)站原創(chuàng)內(nèi)容,如需轉(zhuǎn)載,請注明出處;本網(wǎng)站轉(zhuǎn)載的內(nèi)容(文章、圖片、視頻)等資料版權歸原作者所有。如我們采用了您不宜公開的文章或圖片,未能及時和您確認,避免給雙方造成不必要的經(jīng)濟損失,請電郵聯(lián)系我們,以便迅速采取適當處理措施;歡迎投稿,郵箱∶editor@netbroad.com。
解疑答惑 單片機定時器常見兩大應用問題解析 | 15-12-10 09:25 |
---|---|
新人小白必看 單片機定時器基礎概念科普 | 15-12-03 09:37 |
基于51單片機定時器的電子時鐘設計方案分享 | 15-11-26 09:41 |
兩大單片機定時器中斷時間誤差原因總結分析 | 15-11-19 09:25 |
單片機定時器延時程序其實可以這么設定 | 15-11-12 09:27 |
微信關注 | ||
![]() |
技術專題 | 更多>> | |
![]() |
技術專題之EMC |
![]() |
技術專題之PCB |