#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閃爍函數(shù) 可以精確閃爍次數(shù)number 閃爍快慢
{
static u8 flash_count=0;//閃爍次數(shù)=flash_count/2
static u16 count=0;//閃爍計數(shù)
number+=number;
if(LED_Flash_flag)
{
flash_count=number;LED_Flash_flag=0;
}
if(flash_count)
{ if(count>const_time_level)//閃爍計數(shù) 時間越長,閃的越慢
{
//LED^=1;//異或運算 實現(xiàn)位取反 占用5字節(jié)
count=0;
flash_count--;
if(LED)LED=0;//語句判斷 占用9字節(jié)
else LED=1;
//LED=~LED;//位取反 占用2字節(jié)
}
count++;
}
}
//void flash1() //LED閃爍函數(shù) 長閃
//{
// static u16 count=0;//閃爍計數(shù)
//
//if(count>const_time_level)//閃爍計數(shù) 時間越長,閃的越慢
// {
// //LED^=1;//異或運算 實現(xiàn)位取反 占用5字節(jié)
// count=0;
//
// if(LED)LED=0;//語句判斷 占用9字節(jié)
// else LED=1;
// //LED=~LED;//位取反 占用2字節(jié)
// }
// count++;
// }
///*********LED閃爍函數(shù)**********************/
//void flash2() //LED閃爍函數(shù) 長閃
//{
// static u16 count=0;//閃爍計數(shù)
//
//if(count%100==0)//閃爍計數(shù) 時間越長,閃的越慢
// {
// //LED^=1;//異或運算 實現(xiàn)位取反 占用5字節(jié)
// count=0;
//
// if(LED)LED=0;//語句判斷 占用9字節(jié)
// else LED=1;
// //LED=~LED;//位取反 占用2字節(jié)
// }
// 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();
}
}
|