void level_change_isr(void)
{
INTCONbits.IOCIF = 0 ;
IOCBFbits.IOCBF4 = 0 ;
//IOCBPbits.IOCBP4 = 0 ;
prevent_repeat_interrupt = 0 ;
count++;
timer1_flag = 0 ;
}震动之后,产生中断,这里计数count++;
if(count > 10)//12
{
QUIVER_Configuration();
timer1_flag = 0 ;
wake_flag = 1 ;
count=0;
shiver_flag_2=1;
//QUIVER_Configuration();
IOCBPbits.IOCBP4=0;
}//这是假如震动10次就执行这部分
if(IO_RB4_GetValue()==1)
{
timer1_flag=0;
}//这部分是假如检测到震动,即引脚电平变为1,就清除这个标志位
if(count > 1)
{
//for(uint8_t timers=0;timers <20;timers++ )
{
timer1_flag = 0 ;
if(count <= 10)
{
timer1_flag = 0 ;
count = 0;
}
}
} //这部分是防止误操作,2-10,就清0,重新计数;
现在有个问题就是我按下按下按键或者震动,小灯偶尔会出现闪烁的现象,还有就是这么写可以改良灵敏度吧。 |