要求在原程序上增加 k1 按键的 长按功能。 长按一秒 led 和 led1 灯一起亮。
单片机源程序如下:
#include <AT89X52.H>
unsigned char n = 0;
sbit k1 = P1^0;
sbit led = P0^0;
sbit led1 = P0^1;
void delay()
{
unsigned int i, j;
for(i = 0; i < 100; i++) for(j = 0; j < 100; j++);
}
void readkey(void)
{
unsigned char i, j;
if(!k1) {
for(i = 0; i < 10; i++)
for(j = 0; j < 120; j++);
if(!k1) {
while(!k1);
n++;
n %= 2; //n = 0~0
}
}
}
main()
{
while(1) {
switch(n) {
case 0: led = 1;led1 = 1; readkey(); break;
case 1: led1 = 0; delay(); readkey(); led=~led;
}
}
}
|