按下按键,LED点亮,否则熄灭,按键按住不放1秒以上LED则闪烁,放开则熄灭的实现方法
/*
按下按键,LED点亮,否则熄灭,按键按住不放1秒以上LED则闪烁,放开则熄灭。
延迟时间通过晶振频率修改,LED接P3.4和VCC,按键接P3.5和GND即可。
延时时间根据晶振频率修改,型号C51指令集通用。
By:LscmunaixMG 2017-08-05
*/
#include "reg51.h"
#include "intrins.h"
sbit led=P3^4 ;//灯
sbit key=P3^5 ;//按键
void delay1ms() //延时1毫秒
{
unsigned char i, j;
_nop_();
_nop_();
i = 12;
j = 168;
do
{
while (--j);
} while (--i);
}
void delay10ms() //延时10毫秒
{
unsigned char i, j;
_nop_();
_nop_();
i = 117;
j = 183;
do
{
while (--j);
} while (--i);
}
void main() {//主函数
unsigned int a; //按键按住时间计数
unsigned int b; //延时计数
while(1) { //无限循环
if(key==0){ //按键按下则
delay10ms(); //按键消抖
while(key==0){ //按键按住不放则
if(a!=1000){ //a不等于1000则
led=0 ; //led点亮
delay1ms(); //延迟1毫秒
a++ ; //a加1
} else { //a等于1000则
led=1 ; //led熄灭
for(b=0;b!=250;b++)delay1ms(); //延时250毫秒
led=0 ; //led点亮
for(b=0;b!=250;b++)delay1ms(); //延时250毫秒
}
}
} else { //按键没有按下则
delay10ms(); //延时10毫秒
led=1 ; //led熄灭
a=0 ; //a等于0
}
}
}
沙发。{:5_119:}
页:
[1]