连续拨动开关进入第三,第四状态的程序

项目场景:

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;
	}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值