這句話是將接下來的代碼(壹般是中斷函數)置於非分頁區。請參看我對S12單片機中斷函數的回答。/question/224213298.html
#pragma CODE_SEG __NEAR_SEG NON_BANKED //中斷函數置於非分頁區內
interrupt VectorNumber_Vtimch7 void ICU_Ch7Int(void)
{
TFLG1_C7F = 1; //清中斷標誌位
}
#pragma CODE_SEG DEFAULT //後續代碼置於默認區域內
我壹般是用上述方式聲明中斷函數。
由於飛思卡爾16位單片機的中斷向量是16位,所以中斷函數只有被置於非分頁區內才能被尋址到,這就是第壹行的作用。
第二行中“VectorNumber_Vtimch7”是中斷號,它是由文件“MC9S12XS128.h”中定義的宏,這個中斷號在它的技術手冊中找到,但是我建議妳采用這種宏的形式,因為這個宏不容易出錯,可讀性較高,比如“VectorNumber_Vtimch7”即為定時器(TIM)通道7(CH7)所對應的中斷號。中斷函數名“ICU_Ch7Int”可任意取,沒有影響。
由於單片機內部非分頁區大小有限,非中斷函數壹般置於分頁區內,最後壹行即為此作用。