|
#include"reg51.h"
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long
sbit KEY1=P2^1;
sbit LED=P2^0;
bit LED_Flash_flag;
void flash(u8 number,u16 const_time_level) //LED闪烁函数 可以精确闪烁次数number 闪烁快慢
{
static u8 flash_count=0;//闪烁次数=flash_count/2
static u16 count=0;//闪烁计数
number+=number;
if(LED_Flash_flag)
{
flash_count=number;LED_Flash_flag=0;
}
if(flash_count)
{ if(count>const_time_level)//闪烁计数 时间越长,闪的越慢
{
//LED^=1;//异或运算 实现位取反 占用5字节
count=0;
flash_count--;
if(LED)LED=0;//语句判断 占用9字节
else LED=1;
//LED=~LED;//位取反 占用2字节
}
count++;
}
}
//void flash1() //LED闪烁函数 长闪
//{
// static u16 count=0;//闪烁计数
//
//if(count>const_time_level)//闪烁计数 时间越长,闪的越慢
// {
// //LED^=1;//异或运算 实现位取反 占用5字节
// count=0;
//
// if(LED)LED=0;//语句判断 占用9字节
// else LED=1;
// //LED=~LED;//位取反 占用2字节
// }
// count++;
// }
///*********LED闪烁函数**********************/
//void flash2() //LED闪烁函数 长闪
//{
// static u16 count=0;//闪烁计数
//
//if(count%100==0)//闪烁计数 时间越长,闪的越慢
// {
// //LED^=1;//异或运算 实现位取反 占用5字节
// count=0;
//
// if(LED)LED=0;//语句判断 占用9字节
// else LED=1;
// //LED=~LED;//位取反 占用2字节
// }
// count++;
// }
void delay(u16 i)
{
while(i--);
}
void main()
{
LED=0;
while(1)
{
if(KEY1==0)
{
delay(10000);
if(KEY1==0)
{
LED_Flash_flag=1;
}
}
flash(5,10000);
//flash2();
}
}
|
评分
-
查看全部评分
|