C51实现10连击翻转LED亮灭状态,对新手有帮助。
#include "reg51.h"
#include"intrins.h"
sbit led=P3^4 ;//灯,连接Vcc。
sbit key=P3^5 ;//按键,连接Gnd。
void delay10ms() //@6MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 59;
j = 89;
do
{
while (--j);
} while (--i);
}
void main(){
unsigned char a=0; //连击次数
unsigned int b=0; //等待时间
while(1){
if(key == 0){//按键按下
delay10ms(); //延迟10ms
a++; //连击次数+1
b=0; //等待时间清零
if(a>=10){ //连击次数大于等于10
a=0; //连击次数清零
b=0; //等待时间清零
led=~led; //led翻转
}
while(key == 0); //防止按键按住不放
} else { //未按下
delay10ms();
if(a>=1){ //连击次数大于等于1
b++; //等待时间+1
if(b>=100){ //1秒内未检测到按键
a=0;//连击次数清零
b=0;//等待时间清零
}
}
}
}
}
{:5_118:}现在还没接触单片机,只能单纯的四处暖(水)贴。消灭零回复。
页:
[1]