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