interruptm修飾符
C51中斷函數(shù)必須通過該修飾符進行修飾。在C51程序設(shè)計中,當(dāng)函數(shù)定義時用了interruptm修飾符,系統(tǒng)編譯時把對應(yīng)函數(shù)轉(zhuǎn)化為中斷函數(shù),自動加上程序頭段和尾段,并按51系統(tǒng)中斷的處理方式自動把它安排在程序存儲器中的相應(yīng)位置。
在該修飾符中,m的取值為0~31,對應(yīng)的中斷情況如下:
0——外部中斷0
1——定時/計數(shù)器T0
2——外部中斷1
3——定時/計數(shù)器T1
4——串行口中斷
5——定時/計數(shù)器T2
其它值預(yù)留。
C51編譯器從絕對地址8m+3處產(chǎn)生一個中斷向量,其中m為中斷號,也即interrupt后面的數(shù)字。該向量包含一個到中斷函數(shù)入口地址的絕對跳轉(zhuǎn)。
【例】編寫一個用于統(tǒng)計外中斷0的中斷次數(shù)的中斷服務(wù)程序
1intx=0;2voidint0()interrupt0using13{4x++;5}
usingn修飾符
修飾符usingn用于指定本函數(shù)內(nèi)部使用的工作寄存器組,其中n的取值為0~3,表示寄存器組號。該修飾符可以省略,省略后系統(tǒng)自動選擇
中斷函數(shù)注意如下:
(1)中斷函數(shù)不能進行參數(shù)傳遞,如果中斷函數(shù)中包含任何參數(shù)聲明都將導(dǎo)致編譯出錯。
(2)中斷函數(shù)沒有返回值,如果企圖定義一個返回值將得不到正確的結(jié)果,建議在定義中斷函數(shù)時將其定義為void類型,以明確說明沒有返回值。