三個:
1.總中斷使能位EA=1
2.相應中斷使能 (ET0、EX0……) 打開
3.中斷源:外部中斷引腳的電平觸發、定時器溢出……
oid PxInt0(void) interrupt 0 //定義外部中斷0
void PxInt1(void) interrupt 2 //定義外部中斷1
void time0_int(void) interrupt 1 //定義定時器0
void time1_int(void) interrupt 3 //定義定時器1
這里為什麼是 0 1 2 3的順序呢~?其實是單片機內部默認的,順序依次是:
0 外部中斷0
1 定時/計數器0
2 外部中斷1
3 定時/計數器1
4 串列口中斷
這個是沒有什麼理由的,記住就行,以後要定義一個中斷的時候,定義的是哪一個,就在後面加上它的序號就行了,比如void PxInt0(void) interrupt 0 表示外部中斷0,就在後面加上interrupt 0.
逐詞解釋的話。。。如:void PxInt0(void) interrupt 0
void的意思是沒有返回值,Pxint0(void)是你定義的函數名,interrupt表示你定義的是中斷函數,0表示你定義的是外部中斷0
後面的依此類推。
另外,中斷函數不需要在main函數前聲明,當單片機檢測到中斷所需的信號時,它會自動立即停止正在進行的工作進入中斷函數。
㈡ 51單片機外部中斷的觸發方式
51單片機的外部中斷有兩種觸發方式可選:電平觸發和邊沿觸發。選擇電平觸發時,單片機在每個機器周期檢查中斷源口線,檢測到低電平,即置位中斷請求標志,向CPU請求中斷。選擇邊沿觸發方式時,單片機在上一個機器周期檢測到中斷源口線為高電平,下一個機器周期檢測到低電平,即置位中斷標志,請求中斷。
這個原理很好理解。但應用時需要特別注意的幾點:
1) 電平觸發方式時,中斷標志寄存器不鎖存中斷請求信號。也就是說,單片機把每個機器周期的S5P2采樣到的外部中斷源口線的電平邏輯直接賦值到中斷標志寄存器。標志寄存器對於請求信號來說是透明的。這樣當中斷請求被阻塞而沒有得到及時響應時,將被丟失。換句話說,要使電平觸發的中斷被CPU響應並執行,必須保證外部中斷源口線的低電平維持到中斷被執行為止。因此當CPU正在執行同級中斷或更高級中斷期間,產生的外部中斷源(產生低電平)如果在該中斷執行完畢之前撤銷(變為高電平)了,那麼將得不到響應,就如同沒發生一樣。同樣,當CPU在執行不可被中斷的指令(如RETI)時,產生的電平觸發中斷如果時間太短,也得不到執行。
2) 邊沿觸發方式時,中斷標志寄存器鎖存了中斷請求。中斷口線上一個從高到低的跳變將記錄在標志寄存器中,直到CPU響應並轉向該中斷服務程序時,由硬體自動清除。因此當CPU正在執行同級中斷(甚至是外部中斷本身)或高級中斷時,產生的外部中斷(負跳變)同樣將被記錄在中斷標志寄存器中。在該中斷退出後,將被響應執行。如果你不希望這樣,必須在中斷退出之前,手工清除外部中斷標志。
3) 中斷標志可以手工清除。一個中斷如果在沒有得到響應之前就已經被手工清除,則該中斷將被CPU忽略。就如同沒有發生一樣。
4) 選擇電平觸發還是邊沿觸發方式,TCON 控制寄存器
設置。應從系統使用外部中斷的目的上去考慮,而不是如許多資料上說的根據中斷源信號的特性來取捨。比如,有的書上說(《Keil C51使用技巧及實戰》),就有類似的觀點。
㈢ 單片機C51外部中斷程序問題
外部中斷0設置為低電平觸發,去掉while循環後一直按下按鍵實際代碼為
delay();
P1=0xfe;
delay();
EX0=0;
P1=_crol_(P1,1);
delay();
EX0=1;
P1=0X00;
一直重復.
之前的代碼進入中斷後會一直循環,並不會退出中斷。正確做法中斷應該改為:
void
tx0()
interrupt
0
using
0
{
unsigned
char
i;
delay();
P1=0xfe;
delay();
EX0=0;
while(1)
{
P1=_crol_(P1,1);
delay();
if(P3&0x04)
//判斷是否松開中斷0的按鍵
{
break;
}
}
EX0=1;
P1=0X00;
}
㈣ 關於51單片機的外部中斷
我也是初學者,不過我覺得你的中斷程序有點問題,如下,僅供參考。
INT00:
PUSH
ACC
PUSH
PSW
MOV
P2,#0FFH
;全滅
CALL
DELAY
MOV
P2,#00H
;全亮
CALL
DELAY
POP
PSW
POP
ACC
RETI
㈤ MCS-51單片機外部中斷的觸發方式如何設定和選擇
1、首先在Proteus軟體中添加元器件,如下圖所示。
㈥ 51單片機的外部中斷有哪兩種觸發方式
有兩種觸發方式,一是低電平觸發,二是下降沿觸發,由於低電平觸發易引起中斷重入問題,所以常用下降沿觸發。