新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 從定時器開始說中斷

從定時器開始說中斷

作者: 時間:2013-04-10 來源:網絡 收藏

開始說中斷什么叫中斷?這個對于剛進入MCU界的人來說是一個難以了解的問題,因為我第一次學單片機的時候就不完全不了解什么叫中斷。后來慢慢來知道原來中斷是單片機運行到一半突然飛到某個地方運行某些東西運行后又飛回來而已。

后來學著學著就了解到中斷的意義了,不過對于第一次接觸單片機的人來說,還是很難解說的清楚的。

所以這里我做個比喻吧。假設你客廳的電話來電時,有鈴聲和閃光提示,而你在房間看書,那么有電話來的時候,你聽到鈴聲,然后放下手上的書,并用書簽記錄你的頁數,再出去聽電話。聽完后,回到房間,從書簽標記的位置繼續(xù)看你的書。

OK,分析上面的幾個動作,電話響并被你聽到,那是中斷來了;你用書簽標記位置,那是現場保護;聽電話,就是執(zhí)行中斷咯;聽完電話,你要從你剛才標記的地方繼續(xù)看書,那就是中斷執(zhí)行完畢后回到原中斷處繼續(xù)執(zhí)行程序。這個就是中斷的過程了。

假設沒有了中斷的話,你會如何?你會用掃描法:電話不會響鈴了,只有閃光,但你必須在房間看書,那你只能每看幾段,就跑出去看看是否有電話到,如果沒有,就跑回去看書,如果有了,那你就聽電話吧。很明顯,掃描法效率非常低,因為你每看一會書就得花時間看看電話的閃光以判斷是否有電話的到來,這樣你看書的效率就大大減低了。而且掃描法還有個最大的缺點,就是中斷丟失,試想如果你掃描的間隔過大(就是看很久書才去看一下電話),那你極有可能丟了幾個重要的來電。

其實上面的比喻,正能很好地表現中斷的作用——其實中斷就是為了處理突發(fā)事件。

對于單片機來說,突發(fā)的事情實在太多了,例如用戶對單片機輸入數據,按鍵,那都是單片機本身無法估計的事情。外來數據的突然進入,也屬于突發(fā)事件。這些外部來的突發(fā)信號,一般就由單片機的外部中斷來處理。外部中斷其實就是一個管腳的狀態(tài)改變引起的中斷,在之后會說。

這里先介紹中斷:

在測量控制系統(tǒng)中,常常需要實時時鐘,以實現定時控制、定時測量或定時中斷等。也常需要以實現對外部事件的計數。MCS-51單片機中有兩個(增強型有三個)十六位的定時T0,T1,簡稱定時器0和定時器1,兩者均為可編程定時。

——以上P話抄自《單片微型計算機與接口技術》94頁第一段-_-#!!!!!

其實你問清楚什么叫定時器,我真的不知道用什么言語來說。剛學的時候,聽過這樣一句話“定時器是單片機上的寶貴資源”,當時不了解,為什么這個資源是寶貴的呢??后來才慢慢知道定時器的偉大所在。當然這個是需要一定的時間來領悟的咯,在這里你還是踏踏實實地往下看吧:)

一開始我就說了,看本教材的時候你手上需要至少一本單片機的基礎書,什么書隨便買本就是了,反正現在的單片機書啊,都是你抄我我抄你的了,都一個樣,最重要的還是例子吧。拿起你的書看看單片機的中斷寄存器和定時器寄存器吧,咱們要開始寫程序咯,時間是不等人D~~~~

單片機方式0是13位的,從來就沒用過,有16位不用你用13位?真浪費也~~~

然后是計算裝入值,16位啊,就是16位2進制,2的16次方,就是65536了。16位定時器就是從某個所謂的裝入值開始自加,加到65536就計滿,如果你允許定時器中斷,那就有中斷來臨。所以16位方式裝入值的計算很簡單:

65536-你要計算的脈沖數=裝入值

但我們一般是要定時時間的,而不是單單計多少個脈沖,所以你要計算的脈沖數要轉化為時間,跟你說,一個脈沖的時間就是一個機器周期,51的機器周期就是12/晶振值。如果你的晶振是12M那么這樣一除就是1US咯。1US整數,算什么都好算,所以你現在知道為什么這么多12M,24M的晶振買了吧,都是為51準備的咯。


上一頁 1 2 3 下一頁

評論


相關推薦

技術專區(qū)

關閉