本帖最后由 datouyuan 于 2017-11-29 15:14 编辑
#include <STC90.H>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned char
sbit key=P2^0;
sbit key1=P2^1;
void Delay10ms() //@12.000MHz
{
unsigned char i, j;
i = 117;
j = 184;
do
{
while (--j);
} while (--i);
}
void Delayms(uchar cnt)
{
if(cnt==0) return;
do
{
Delay10ms();
} while (--cnt);
}
void Delay200ms()
{
Delayms(20);
}
bit gb_ledflash=0;
void ledflash()
{
static uchar ledflashcnt=5;
if(--ledflashcnt) return;
ledflashcnt=5;
if(gb_ledflash)
{
P1=(~P1);
}
}
uchar key1_cnt=0;
void main()
{
uchar a;
P1=0Xff;
while(1)
{
Delay10ms();
ledflash();
if(key1==0)
{
++key1_cnt;
if(key1_cnt==0) --key1_cnt;
if(key1_cnt==5)
{
gb_ledflash=!gb_ledflash;
}
}
else
{
key1_cnt=0;
}
}
}
帮你改成了:单次按下灯闪,双次按下,灯不闪。
另外延时函数你参考我的写法。假如晶振变更了,只要修改一个函数,修改移植更方便些。 |