51单片机定时器控制LED闪烁
#include ""
typedef unsigned int u16;
typedef unsigned char u8;
#define LED P1
#define LED_ON() LED = 0xfe
#define LED_OFF() LED = 0xff
static u8 LedState = 0;//LED状态标志,0表示亮,1表示灭
static u16 LedTimeCount = 0;//LED计数器
void LedProcess(void)
{
if(LedState == 0)//
{
LED_ON();
}
else
{
LED_OFF();
}
}
void LedStateChange(void)
{
if(LedTimeCount >= 500)//
{
LedTimeCount = 0;
LedState =!LedState;//LED状态标志取反
}
}
void Timer0Init(void)
{
TMOD = 0X01;//定时器0工作方式1
TH0 = (65536 - 1000)/256;//定时器赋初值
TL0 = (65536 - 1000)%256;
ET0 = 1;
TR0 = 1;
EA = 1;
}
void main()
{
Timer0Init();
while(1)
{
LedProcess();
LedStateChange();
}
}
void timer0Isr(void)interrupt 1
{
TH0 = (65536 - 1000)/256;//定时器重装初值
TL0 = (65536 - 1000)%256;
LedTimeCount++;//LED计数器加1
}