采用单片机定时器实现4个LED的轮流亮灭每个LED点亮时间为1s
以下是基于8051单片机的代码实现:
#include <reg51.h>
#define LED1 P1_0
#define LED2 P1_1
#define LED3 P1_2
#define LED4 P1_3
void delay(unsigned int time) // 延时函数
{
unsigned int i, j;
for (i = time; i > 0; i--)
for (j = 125; j > 0; j--);
}
void main()
{
TMOD = 0x01; // 定时器0工作在模式1
TH0 = 0x3C; // 定时器初值
TL0 = 0xB0;
TR0 = 1; // 启动定时器0
while (1)
{
if (TF0) // 定时器0溢出
{
TF0 = 0; // 清除溢出标志
LED1 = ~LED1; // LED1亮灭
TH0 = 0x3C; // 重新设置定时器初值
TL0 = 0xB0;
}
delay(1000); // 延时1s
if (TF0) // 定时器0溢出
{
TF0 = 0; // 清除溢出标志
LED2 = ~LED2; // LED2亮灭
TH0 = 0x3C; // 重新设置定时器初值
TL0 = 0xB0;
}
delay(1000); // 延时1s
if (TF0) // 定时器0溢出
{
TF0 = 0; // 清除溢出标志
LED3 = ~LED3; // LED3亮灭
TH0 = 0x3C; // 重新设置定时器初值
TL0 = 0xB0;
}
delay(1000); // 延时1s
if (TF0) // 定时器0溢出
{
TF0 = 0; // 清除溢出标志
LED4 = ~LED4; // LED4亮灭
TH0 = 0x3C; // 重新设置定时器初值
TL0 = 0xB0;
}
delay(1000); // 延时1s
}
}
代码中,定时器0工作在模式1,每次溢出后LED亮灭一次,并重新设置定时器初值。延时函数用于控制每个LED的点亮时间为1s
原文地址: http://www.cveoy.top/t/topic/c8RO 著作权归作者所有。请勿转载和采集!