51單片機的中斷系統(tǒng)十分重要,前幾次我在學(xué)習的時候,根本分不清外部中斷、定時器中斷的區(qū)別以及正確使用方法。今天,偶然打破了自己的常規(guī)思路,得到了一點點理解,與大家分享下,希望大家不吝指出其中的不足與錯誤。
1.單片機的中斷分類:只有兩類,外部中斷和定時器中斷。這兩種中斷使用時可以完全分離。
2.最常用的自動中斷是定時器中斷,也就是自己設(shè)定一個“倒計時”,該倒計時與主程序同時開始,一旦時間耗盡,開始停止主程序,進行中斷程序。這種定時器中斷的開啟方法只需要這幾個寄存器設(shè)置:
EA=1表示允許任何中斷開啟;
ETx表示時間耗盡允許執(zhí)行中斷程序;
TRx表示允許倒計時開始;
TMOD表示倒計時的計時工作方式;
THx,TLx表示倒計時的值。
然后寫中斷程序interrupt 1或3 。
3.可以人工控制的中斷是外部中斷,開啟方式最簡單,只需要以下寄存器:EA=1表示意義同上;EXx表示外部條件(3.2或者3.3口低電平)滿足去執(zhí)行中斷程序。然后寫中斷程序interrupt 0或 2 。
以前總是誤認為使用外部中斷必須要開啟定時器中斷,現(xiàn)在想想不是這樣的。
提供兩個簡單程序供大家測試:
程序一:定時器中斷
sbit beep=P2^3;
void init();
int main()
{
init();
while(1);
}
void init()
{
EA=1;
ET0=1;
TR0=1;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TMOD=0x01;
}
void inter() interrupt 1
{
int a;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
a++;
if(a==40)
{
a=0;
beep=~beep;
}
}
程序二:外部中斷
#include
void init()
{
EA=1;
EX0=1;
IT0=0;
}
int main()
{
init();
while(1)
{
P1
}
}
void interceshi() interrupt 0
{
P1=0;
}
上一篇:51單片機的定時器與中斷
下一篇:51單片機之中斷系統(tǒng)
推薦閱讀
史海拾趣
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- EEworld獨家原創(chuàng)視頻:大話TI CC2650,邀你來看!
- 觀看TI IOT解決方案研討會 答題即可贏取更多精美好禮!
- 【EEWORLD第三十九屆】2012年06月社區(qū)明星人物揭曉!
- 永不過時的物聯(lián)網(wǎng)解決方案 Intel帶你6的飛起來!
- ADI有獎下載活動之25:ADI汽車傳感器和傳感器接口解決方案
- Vicor 更好的供電方式提升無人機飛行時間飛行半徑及有效載荷
- 考眼力:高速數(shù)字設(shè)計的秘籍 藏在哪里? 走近Keysight PATHWAVE,提升工作效率
- TI 最新電容式觸控套件,免費嘗鮮中
- TI有獎直播|借助Sitara™ AM263x MCU 創(chuàng)造電氣化的未來