#include <reg52.h>
sbit k1 = P3^4; //定义k1按键
sbit k2 = P3^5; //定义k2按键
sbit led = P1^4; //定义LED
void main(void)
{
unsigned char i, n_k1;
unsigned char i, n_k2;
unsigned int tt, t_led = 1000;
while(1)
{ //无限循环
//----------------------------------------------
for (i = 0; i < 24; i++); //约延时50us;
//----------------------------------------------
//检测 k1:
if (!k1)
{ //如果是按下,累计按下的时间
n_k1++;
if (n_k1 > 250) n_k1 = 250;
}
else
{ //如果已松开
if (n_k1 > 200)
{ //曾连续按下了10ms
if (t_led < 20000) //LED时间上限是1s
t_led += 500; //增加50ms
}
n_k1 = 0; //不足10ms,是抖动, 从零累计
}
//----------------------------------------------
//检测 k2:
//和上面雷同, 可自己编写
if (!k2)
{ //如果是按下,累计按下的时间
n_k2--;
if (n_k2 < 250) n_k2 = 250;
}
else
{ //如果已松开
if (n_k2 > 200)
{ //曾连续按下了10ms
if (t_led > 20000) //LED时间上限是1s
t_led -= 500; //增加50ms
}
n_k2 = 0; //不足10ms,是抖动, 从零累计
}
//----------------------------------------------
//LED 取反:
tt++; if(tt > t_led) {tt = 0; led = ~led;}
//----------------------------------------------
}
}