|

/*********************************************************************************************
函數名:外部中斷INT初始化函數
調 用:INT_init();
參 數:無
返回值:無
結 果:啟動外部中斷INT1、INT0中斷,設置中斷方式
備 注:
/**********************************************************************************************/
void INT_init (void){
EA = 1; //中斷總開關
EX1 = 1; //允許外部中斷1中斷
EX0 = 1; //允許外部中斷0中斷
IT1 = 1; //1:下沿觸發 0:低電平觸發
IT0 = 1; //1:下沿觸發 0:低電平觸發
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:外部中斷INT1中斷處理程序
調 用:[外部引腳INT1中斷處理]
參 數:無
返回值:無
結 果:用戶處理外部中斷信號
備 注:
/**********************************************************************************************/
void INT_1 (void) interrupt 2 using 2{ //切換寄存器組到2
//用戶函數內容
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:外部中斷INT0中斷處理程序
調 用:[外部引腳INT0中斷處理]
參 數:無
返回值:無
結 果:用戶處理外部中斷信號
備 注:
/**********************************************************************************************/
void INT_0 (void) interrupt 0 using 2{ //切換寄存器組到2
//用戶函數內容
}
/**********************************************************************************************
/*********************************************************************************************
程序名: 外部中斷程序實例
硬件支持: STC12C2052AD 外部12MHZ晶振
接口說明:
修改日志:
NO.1-
/*********************************************************************************************
說明:
兩個按鍵分別控制LED燈的開關。
INT0接口的按鍵按下時開燈。
INT1接口的按鍵按下時關燈。
/*********************************************************************************************/
#include <REG51.h> //51頭文件
sbit LED = P1 ^ 0; //定義LED燈
//注:外部中斷固定與P3.2和P3.3復用,無需定義這兩個接口。
/*********************************************************************************************
函數名:外部中斷INT初始化函數
調 用:INT_init();
參 數:無
返回值:無
結 果:啟動外部中斷INT1、INT0中斷,設置中斷方式
備 注:
/**********************************************************************************************/
void INT_init (void){
EA = 1; //中斷總開關
EX1 = 1; //允許外部中斷1中斷
EX0 = 1; //允許外部中斷0中斷
IT1 = 1; //1:下沿觸發 0:低電平觸發
IT0 = 1; //1:下沿觸發 0:低電平觸發
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:外部中斷INT1中斷處理程序
調 用:[外部引腳INT1中斷處理]
參 數:無
返回值:無
結 果:用戶處理外部中斷信號
備 注:
/**********************************************************************************************/
void INT_1 (void) interrupt 2 using 2{ //切換寄存器組到2
LED = 1; //關燈
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:外部中斷INT0中斷處理程序
調 用:[外部引腳INT0中斷處理]
參 數:無
返回值:無
結 果:用戶處理外部中斷信號
備 注:
/**********************************************************************************************/
void INT_0 (void) interrupt 0 using 2{ //切換寄存器組到2
LED = 0; //開燈
}
/**********************************************************************************************/
/*********************************************************************************************/
void main(void){
INT_init(); //外部中斷初始化
while(1){
//其他程序
}
}
/*********************************************************************************************/
1. MCS-51通用外部中斷有2種觸發方式,分別是下降沿觸發和低電平觸發。
# 下降沿觸發:電平從高電平狀態突然降低(即電壓跌落)的過程中觸發中斷。
# 低電平觸發:電平處在低電平時觸發中斷,具體的電平值因電路不同而有差異。
# 低電平觸發與下降沿觸發的區別是下降沿觸發是一有跌落馬上觸發,而低電平觸發是跌落到低電平的閥值時(一般為0.8V)才觸發。
2. 當進入外部中斷處理程序時,系統會關閉其他中斷觸發,在中斷處理程序中外部中斷接口只能做I/O接口使用,不可嵌套中斷。
可將其模板下載到本地硬盤,在編寫新程序的時候復制、粘貼到工程當中,然后根據情況寫入具體內容。
|
|
|
|
|
|
|