TI中文支持网
TI专业的中文技术问题搜集分享网站

定时器与按键中断冲突,求帮助

定时器设置:

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的状态。

赞(0)
未经允许不得转载:TI中文支持网 » 定时器与按键中断冲突,求帮助
分享到: 更多 (0)