两颗独立按键控制LED亮灭:
#include <io430.h>
Key_Init() //按键中断初始化
{
//S1
P2IE |= BIT1;
P2IES |= BIT1;
P2IFG &= ~BIT1;
P2REN |= BIT1;
P2OUT |= BIT1;
//S2
P1IE |= BIT1;
P1IES |= BIT1;
P1IFG &= ~BIT1;
P1REN |= BIT1;
P1OUT |= BIT1;
}
void main()
{
WDTCTL = WDTPW + WDTHOLD; //停止看门狗
Key_Init();
_EINT(); //中断使能
P1DIR |= BIT0; //初始化LED
P4DIR |= BIT7;
while(1)
{
;
}
}
#pragma vector = PORT2_VECTOR //S2中断服务函数
__interrupt void P2_ISR()
{
if(P2IFG & BIT1)
{
while((P2IN & BIT1)==0); //等待
P1OUT ^= BIT0; //LED状态翻转
}
P2IFG &=~ BIT1; //清除中断标志位
}
#pragma vector = PORT1_VECTOR //S1中断服务函数
__interrupt void P1_ISR()
{
if(P1IFG & BIT1)
{
while((P1IN & BIT1)==0);
P1OUT ^= BIT0;
}
P1IFG &=~ BIT1;
}