51单片机定时器控制LED闪烁

时间:2025-03-07 17:27:16
#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 }