| P3M0&=0xfd;//高阻
hold_ctrl=0;
Delay_ms(10);
//WKTCL = 49; //488us*(49+1) = 24.4ms
//WKTCH = 0x80; //开掉电定时器
INT_CLKO |= 0x40;//开中断4
EA = 1;
EX1 = 1;//开中断1,震动开关
IT1 = 1;//仅下降沿
EX0 = 1;//开中断0,点动开关
IT0 = 1;//仅下降沿
while(1)
{
if(light_key_hold_time)
{
WKTCL = 0x09; //488us*(9+1) = 4.8ms
WKTCH = 0x80; //开掉电定时器 每隔4.8ms检测一次按键。检测之间掉电休眠
light_key_hold_time++;
if(light_key_hold_time==65535)light_key_hold_time=101;
if(light_key_hold_time>80&&system_on==0)//表关的时候,按一下不会触发hold,而是开机//后期增大此时间,意味着,长按才能开表,在休眠下
{
power_ctrl=1;//开表
power_on=power_on_time;
system_on=system_on_time;
light_key_hold_time=0;
EX1 = 1;
WKTCL = 0xff; //488us*(255+1) = 125ms
WKTCH = 0x80; //开掉电定时器
}
if(light_key_hold_time>100)//长按开灯
{
light_time=light_on_time;//灯倒计时
P3M0|=0x02;
P3M1&=0xfd;//推挽
led_ctrl=1;//开灯
}
if(key2==1)//抬键
{
(责任编辑:admin) |