相關寄存器在cc2530中文數手冊中2.4小節
中斷初始化
其實中斷的初始化可以參照引腳的初始化,即4個寄存器(PxSEL,PxDIR,PxINP,P2INP)。中斷同樣也要初始化
1)初始化輸入信号寄存器(PICTL)
設定中斷的觸發(開始)條件
例如:PICTL |= 0x01 設定端口P0_7中斷觸發方式為下降沿觸發
PICTL &=~0x02 設定端口P1_2中斷觸發方式為上升沿觸發

2)初始化中斷使能端口寄存器(PxIEN)
設定Px端口中斷使能
例如:P0IEN |=0x02 使能端口0_1
P1IEN |=0x08 使能端口1_3
3)初始化中斷使能寄存器1(可位尋址)
例如:P0IE=1 端口0中斷使能 也可以寫為 IEN1 |=0x20
P1IE=1 端口1中斷使能 也可以寫完 IEN2 |=0x10
4)打開總中斷
EA=1 或者 IEN0 |=0x80
5)PxIFG 中斷狀态标志寄存器
例如 P0IFG |= 0x0F 設定端口P0_0到P0_3的端口請求狀态
中斷函數
中斷函數沒有傳回值和參數
中斷向量名稱
#pragma vector = <中斷向量>
__interrupt void <中斷名稱>(void){
if(判斷中斷到來标志位是否是1){
EA=0;//關閉總中斷
delay(100);//延時防止抖動
//操作
P0IFG &= ~0x02;//手動清除Px端口的标志位
}
P0IFG =0;//複位Px端口的标志位
EA=1;
}
上面代碼和例子僅供參考,如果有誤請留言。