MSP430F149按键中断寄存器配置
2020-03-17 来源:eefocus
P20~P23为LED,P11为按键。按下为低电平。
使用中断函数按下一次按键则LED状态反转一次。
#include 'io430.h'
#include 'in430.h'
void select_xt2(void){
unsigned char i;
/*------选择系统主时钟为8MHz-------*/
BCSCTL1 &= ~XT2OFF;
do{
IFG1 &= ~OFIFG; //清除晶振失败标志
for (i = 0xFF; i > 0; i--); //等待8MHz晶体起振
}while ((IFG1 & OFIFG));
BCSCTL2 |= SELM_2 + SELS ; //MCLK和SMCLK选择高频晶振
}
void main()
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0XFD; //P1 in or out
P1IE = 0X02; //开启P1中断
P1IES = 0X02; //中断触发方式
P1IFG = 0X00; //中断标志清零
P2DIR = 0XFF;
P2OUT = 0XFF;
_EINT();
}
#pragma vector = PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
__delay_cycles(50000);
if((P1IN&0X02) == 0)
P2OUT = ~P2OUT;
__delay_cycles(50000);
}
其中,配置P1端口的中断时要用到的寄存器有:
P1IE,中断使能寄存器,只使能P11的中断:0000,0010 = 0X02
P1IES,中断触发选择寄存器,0上升沿,1下降沿,0000,0010=0X02
P1IFG,中断标志寄存器,清零,0X00
一定要开启全部中断!__EINT();
中断响应函数定义为统一格式:
#pragma vector = PORT1_VECTOR
__interrupt void PORT1_ISR(void)
其中,PORT1_VECTOR为头文件中定义了的
下一篇:MSP432P401R时钟入门