單片機(jī)中斷按照中斷源類型的不同主要分為:外部中斷、定時器中斷、串口中斷
而因為電路板上可能存在多個定時器或多個引起外部中斷的位置,所以產(chǎn)生多個中斷源,也因此單片機(jī)有多個中斷函數(shù)
以51單片機(jī)為例:
====================================
中斷編號 中斷源
0 外部中斷0
1 T0定時器溢出中斷
2 外部中斷1
3 T1定時器溢出中斷
4 串口中斷
====================================
C程序中使用中斷的方法
EA=1; //打開中斷總開關(guān)
ET0=1; //打開T0定時器中斷
while(1)
{
//your code
}
//定義中斷處理函數(shù)(程序會自動調(diào)用)
void InterruptTimer0() interrupt 1
{
//關(guān)鍵詞interrupt后面的1表示中斷函數(shù)編號
//your code
//當(dāng)T0定時器溢出(即截獲中斷)時,執(zhí)行InterruptTimer0中斷處理函數(shù),執(zhí)行完畢后程序?qū)膚hile中發(fā)生中斷的位置繼續(xù)往下執(zhí)行
}
而因為電路板上可能存在多個定時器或多個引起外部中斷的位置,所以產(chǎn)生多個中斷源,也因此單片機(jī)有多個中斷函數(shù)
以51單片機(jī)為例:
====================================
中斷編號 中斷源
0 外部中斷0
1 T0定時器溢出中斷
2 外部中斷1
3 T1定時器溢出中斷
4 串口中斷
====================================
C程序中使用中斷的方法
EA=1; //打開中斷總開關(guān)
ET0=1; //打開T0定時器中斷
while(1)
{
//your code
}
//定義中斷處理函數(shù)(程序會自動調(diào)用)
void InterruptTimer0() interrupt 1
{
//關(guān)鍵詞interrupt后面的1表示中斷函數(shù)編號
//your code
//當(dāng)T0定時器溢出(即截獲中斷)時,執(zhí)行InterruptTimer0中斷處理函數(shù),執(zhí)行完畢后程序?qū)膚hile中發(fā)生中斷的位置繼續(xù)往下執(zhí)行
}