|
#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();
}
}
|
評分
-
查看全部評分
|