#include "reg52.h"
#define uint unsigned int
typedef unsigned int u16;
typedef unsigned char u8;
sbit k1=P3^4;
sbit led=P1^5;
uint i,j;
void delay(u16 i)
{
while(i--);
}
void keypros()
{
if(k1==0)
{
delay(1000); //软延时,消除按键抖动
if(k1==0)
{
for(i=3000;i>0;i--)
for(j=110;j>0;j--);
led=0;
for(i=5000;i>0;i--) //这行的执行没有加判断,每次循环都会执行这个5秒延时后,再改变led的状态
for(j=110;j>0;j--);
led=1;
}
while(!k1);
{
led=1;
}
}
}
void main()
{
while(1)
{
keypros();
}
}
比较欣赏你的学习态度,敢于实践,从小实验开始,找乐趣,找动力。 你这个办法是可以简单实现你想要的功能,但是问题很多,单片机的功能远不止如此。 延时和程序结构也不是你这样弄的。 试着用定时器去实现主功能延时,慢慢实践,加油。 |