2019-03-24 13:39发布
}//*********************************************************************#pragma vector = PORT1_VECTOR __interrupt void Key_interrput(void){ Delay_ms(30); //消抖
if(P1IFG&BIT3) { P1OUT ^= BIT0+BIT6; P1IFG &= 0x00; //中断标志位 需要软件清除!! P1REN |= BIT3; }}//********************************************************************void Key_Init(void){ P1DIR |= BIT0+BIT6 ; P1REN |= BIT3; P1OUT |= BIT3; //很关键的一步(上拉寄存器使能后必须加上这条语句才能完成上拉功能的配置) P1IES |= BIT3; //选择触发边沿,下降沿触发 P1IFG &= ~BIT3; // P1.3 IFG cleared 很重要的一步 P1IE |= BIT3;}
最多设置5个标签!
- #include <msp430g2553.h>
复制代码#include <intrinsics.h>
#define CPU_F ((double)1000000) //1000000为MCLK 单位:HZ
#define Delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define Delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
void Key_Init(void);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
Key_Init();
_EINT(); //开启总中断,这一步没有的话,所有的中断都不能触发
for(;;);
}
//*********************************************************************
#pragma vector = PORT1_VECTOR
__interrupt void Key_interrput(void)
{
Delay_ms(30); //消抖
if(P1IFG&BIT3)
{
P1OUT ^= BIT0+BIT6;
P1IFG &= 0x00; //中断标志位 需要软件清除!!
P1REN |= BIT3;
}
}
//********************************************************************
void Key_Init(void)
{
P1DIR |= BIT0+BIT6 ;
P1REN |= BIT3;
P1OUT |= BIT3; //很关键的一步(上拉寄存器使能后必须加上这条语句才能完成上拉功能的配置)
P1IES |= BIT3; //选择触发边沿,下降沿触发
P1IFG &= ~BIT3; // P1.3 IFG cleared 很重要的一步
P1IE |= BIT3;
}
一周热门 更多>