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