定时器设置:
void Timer0_A3_init(void)
{
TA0CCTL0 = CM_0 + CCIS_0 + OUTMOD_0 + CCIE;
TA0CCR0 = 1500;
TA0CTL = TASSEL_1 + ID_3 + MC_1;
}
设置两个按键:
P2DIR &= ~(BIT4 + BIT5);
P2OUT |= BIT4 + BIT5;
P2REN |= BIT4 + BIT5;
P2IES |= BIT4 + BIT5;
P2IFG = 0;
P2IE |= BIT4 + BIT5;
在键中断中进行消抖:
unsigned int push_key = 0;
push_key = P2IFG&(~P2DIR);
__delay_cycles(10000);
if ((P2IN&push_key)==0)
{
}
问题是:在启用定时器代码时,消抖中的代码
if((P2IN&push_key)==0)会一直为false,不会执行下方的语句。push_key中的数据已经保存,是否可理解为此时P2IN中的结果出现了问题?启用定时器,会对这个条件有影响吗?
HG:
你可以先屏蔽消抖程序,按的时候注意点,在IDE里add watch看一下,P2IN和push_key的状态。