1.生活的例子
通過上一章大家已經(jīng)有了對中斷知識的了解,像外部中斷這種需要物理動作才能觸發(fā)中斷函數(shù)執(zhí)行,但很多情況下我們需要的是中斷函數(shù)在適當時刻可以自動得去執(zhí)行,所以就需要定時器來輔助了。
定時器是單片機內(nèi)部的一個硬件資源。
用生活常見現(xiàn)象舉例:定時器相當于一個鬧鐘,我們調(diào)5分鐘后鬧鐘就響,在這5分鐘里我們想做什么就做什么,相當于我們自己是主函數(shù)里的任務,想運行什么任務就運行什么,也不用去理會鬧鐘還剩多少時間就響,我們只是一直做我們想做的事就行。
之后鬧鐘響了,這時我們不能再任性去做主函數(shù)的事了,得趕緊把中斷函數(shù)里的事辦完先,也就是要去執(zhí)行中斷函數(shù)了,主函數(shù)的事要暫停不做先,執(zhí)行完中斷函數(shù)之后繼續(xù)回到主函數(shù)做我們的事。可是又過了5分鐘鬧鐘又響了,沒辦法,我們又要放停自己的事去執(zhí)行中斷函數(shù)了,當然鬧鐘是可以關(guān)閉的,這就相當于是把中斷函數(shù)的觸發(fā)開關(guān)給斷開了。
2.溢出
我們知道秒表計時到59秒的時候,再過1秒就變成了00。同理,當我們的unsigned char類型的變量的數(shù)值為255時,再加1就變?yōu)?了, unsigned int的變量如果此時的值為65535,后面再加1也同樣成為0,這些都叫溢出。
再舉一個例子來理解定時器溢出概念,中學時我們做過一些化學實驗,其中有一種容器叫做試管,如果試管是空的,我們用一個導管往試管里加水,導管的水流流速是均勻不變的,試管里的水要想溢出,需要的是x個單位的時間,如果我們想把距離溢出的時間縮短為一半,那我們提前把試管里的水裝滿到一半,這樣就可以改變了溢出時間。
通過這個例子我們就可以明白,要想確定好定時器溢出產(chǎn)生中斷的間隔時間,我們就要往這個“試管”提前裝好合適的水量。
我們下一講再繼續(xù)講解這個“試管”!
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程