一个51单片机独立控制一个led灯闪烁的程序
时间: 2023-06-19 17:09:25 浏览: 122
51单片机控制led灯闪烁程序
下面是一个简单的51单片机控制LED灯闪烁的程序,使用了定时器和GPIO口控制:
```c
#include <reg51.h>
sbit LED = P1^0; //定义LED的IO口
void Init_Timer0() //初始化Timer0
{
TMOD |= 0x01; //将TMOD寄存器的低4位设为0001,表示Timer0工作在模式1
TH0 = 0xFC; //计时器初值,定时500ms
TL0 = 0x18;
ET0 = 1; //开启Timer0中断
EA = 1; //开启总中断
TR0 = 1; //启动Timer0计时器
}
void Timer0_ISR() interrupt 1 //Timer0中断服务程序
{
static unsigned int count = 0; //计数器,用来控制LED灯闪烁
TH0 = 0xFC; //重新赋值,定时500ms
TL0 = 0x18;
count++;
if (count == 1000) //如果计数器达到1000次,说明已经闪烁了500ms
{
count = 0;
LED = ~LED; //改变LED灯的状态
}
}
void main()
{
Init_Timer0(); //初始化Timer0
while(1);
}
```
这个程序使用了定时器0工作在模式1,每隔500ms触发一次中断,中断服务程序中有一个计数器,每累加1000次(即500ms),改变LED灯的状态。在主函数中,程序一直循环等待中断发生。
阅读全文