项目场景:
1.当我们在使用拨动开关的时候,只能表示开或者关。但是我又想通过这个拨动开关来控制另一个灯或者开启关闭某种状态。那程序怎么实现呢?类似于按键的长按短按。我这里提供的是一种程序实现。大佬勿喷!
解决方案:
1.我这里是放在定时器中断里面的来判断的
void T1_INT(void) interrupt 3 //1ms
{
TH1=T1load>>8;
TL1=T1load;
if(IO_SysMode!=0) //IO口高低判断 开关在开的位置
{
Delayms1=0;
if(++Delayms2>200)//这里延时是防止误动作
{ Delayms2=201;
KEY3_flag=0;
SYSMODE=1;}//拨动开关的第一控制开
}
if(IO_SysMode==0) //拨动开关到关的位置
{ Delayms2=0;
if(++Delayms1>10)//延时消抖
{ Delayms1=11;
if(IO_SysMode==0) //还在关的位置
{
SYSMODE=0;//拨动开关的第二控制关
if(++Delayms3>1000)//这里延时是为了实现快速拨动就是进去第三,第四状态 超过1秒就不算
{ Delayms3=0;
mode_cont=0;
}
if(KEY3_flag==0)
{
Delayms3=0;
mode_cont++;
if(mode_cont>1)
{mode_cont=0;
SYSMODE_flag=~SYSMODE_flag;
//IO_ERROR_LED=~IO_ERROR_LED;
}
}
KEY3_flag=1;
}
}
}
if(SYSMODE_flag==0)//第三控制状态
{
IO_ERROR_LED=0;
}
if(SYSMODE_flag!=0)//第四控制状态
{
IO_ERROR_LED=1;
}