找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3370|回復: 0
收起左側(cè)

單片機外部中斷知識講解

[復制鏈接]
ID:117358 發(fā)表于 2016-5-1 05:39 | 顯示全部樓層 |閱讀模式
應某位朋友的要求,講解一下單片機中斷的知識,那今天就以51單片機的外部中斷0為例,來簡單講解一下單片機中斷的用法。

151單片機的中斷源
51單片機共有5個中斷源,分別為:
  • 外部中斷0
  • 定時器0中斷
  • 外部中斷1
  • 定時器1中斷
  • 串口中斷

每一個中斷都對應一個中斷向量,中斷向量表如下所示:


2什么是中斷事件
當中斷發(fā)生時單片機將正在執(zhí)行的程序暫時放下而去處理中斷事件,當中斷事件處理完畢后再接著去處理之前的事情,這樣可以大大降低單片機的資源,提高執(zhí)行效率。舉個例子說明一下什么是中斷:
我很喜歡打CS,每天晚上我都會抽時間打CS,但同時廚房里正在燒水,為了不使水燒干,我每隔5分鐘就去廚房看一下水有沒開,但這就錯過了游戲老被別人爆頭干掉,我很苦惱,怎么辦。于是我在網(wǎng)上買了一個水燒開就會叫的水壺,這樣我就不用每隔5分鐘去廚房了從而可以專心的打游戲,只有聽到水壺吱吱叫的時候,我去把水倒出來就可以了。
在這個例子里,打游戲就是主任務,水燒開就是中斷,吱吱叫就是中斷向量,聽到吱吱響我就明白水燒開了,這時我要把打游戲這個主任務暫時放下,轉(zhuǎn)而去處理水燒開了這個中斷事件,水倒完后我就又回到了游戲這個主任務中。這樣是不是提高了打游戲的效率呢?


3中斷的硬件實現(xiàn)
51單片機的外部中斷0引腳接一只按鍵,該按鍵通過上拉電阻接到電源,即沒有按鍵發(fā)生時單片機檢測到的是高電平,當按鍵按下時單片機檢測到的是低電平。單片機的P0.0引腳以灌電流的方式接了一只LED,當按鍵按下時LED燈點亮,沒按鍵時LED燈熄滅。


4中斷的軟件實現(xiàn)
單片機中斷函數(shù)的寫法比較固定,51單片機中斷函數(shù)的寫法如下:
void   Initd()   interrupt   0
其中:
  • void:為中斷函數(shù)的返回類型,中斷函數(shù)多為空類型;
  • Initd():是中斷函數(shù)的名稱,這個函數(shù)名符合C語言函數(shù)命名規(guī)范就可以,隨便起;
  • interrupt:為51單片機中斷的關鍵字,必須這么寫(51單片機必須這么寫);
  • 0:為中斷向量,該值詳看第一個表格,如果是外部中斷1就寫2,如果是定時器1中斷就寫3;

中斷函數(shù)不用在主函數(shù)中調(diào)用,只要中斷事件發(fā)生,單片機自己主動會調(diào)到中斷函數(shù)中。
該例子的函數(shù)如下所示:


5仿真實現(xiàn)
當按鍵發(fā)生時,LED燈點亮,如下圖所示。注意對比兩種圖中按鍵的狀態(tài)。

圖片中的程序大家可能看不太清楚,我把本節(jié)內(nèi)容貼到論壇里,大家請到論壇里查看詳情,并踴躍回帖探討,友情提示:點贊、回復、簽到都會得到積分啊,當你的積分達到一定程度會得到一套電子套件。

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表