51单片机用定时器方式1在流水灯的基础上,控制亮灭的间隔为一秒的代码
时间: 2024-02-06 18:11:10 浏览: 84
以下是51单片机用定时器方式1控制流水灯的代码,亮灭间隔为1秒:
```c
#include <reg51.h>
#define LED P1
void delay(unsigned int t)
{
while(t--);
}
void main()
{
unsigned char i;
TMOD = 0x10; //设置定时器1为模式1
TH1 = 0xFC; //设置定时器1的初值
TL1 = 0x66;
TR1 = 1; //启动定时器1
while(1)
{
for(i=0; i<8; i++)
{
LED = ~(1<<i); //流水灯
delay(50000); //延时
}
}
}
void timer1() interrupt 3 //定时器1中断函数
{
TH1 = 0xFC; //重新设置定时器1的初值
TL1 = 0x66;
}
```
在上述代码中,定时器1的时钟源为晶振频率,为12MHz,经过分频后,定时器1的计时单位为1us。定时器1的初值为65536-12000=53536,定时器1每计数到0时,就会触发一次中断,中断函数会重新设置定时器1的初值,从而实现定时器的循环计时。流水灯的控制与普通的代码相同,只是加了一个延时函数,控制亮灭的间隔为1秒。
阅读全文