#include<reg52.h>
void main()
{
unsigned char tmp = 0;
unsigned char mnt = 0;
unsigned char fag = 0;
TMOD = 0x01;
TH0 = 0xb8;
TL0 = 0x00;
TR0 = 1;
while(1)
{
if(TF0 == 1)
{
TF0 = 0;
TH0 = 0xb8;
TL0 = 0x00;
mnt++;
}
if(mnt == 50)
{
P0=~(0x01 << tmp);
tmp++;
mnt = 0;
if(tmp == 8)
{
mnt = 51;
}
}
if(mnt == 101)
{
P0 = ~(0x40 >> fag);
fag++;
mnt = 51;
if(fag == 6)
{
mnt = 0;
tmp = 0;
fag = 0;
}
}
}
}
void main()
{
unsigned char tmp = 0;
unsigned char mnt = 0;
unsigned char fag = 0;
TMOD = 0x01;
TH0 = 0xb8;
TL0 = 0x00;
TR0 = 1;
while(1)
{
if(TF0 == 1)
{
TF0 = 0;
TH0 = 0xb8;
TL0 = 0x00;
mnt++;
}
if(mnt == 50)
{
P0=~(0x01 << tmp);
tmp++;
mnt = 0;
if(tmp == 8)
{
mnt = 51;
}
}
if(mnt == 101)
{
P0 = ~(0x40 >> fag);
fag++;
mnt = 51;
if(fag == 6)
{
mnt = 0;
tmp = 0;
fag = 0;
}
}
}
}
本文介绍了一个基于51单片机的简单程序,利用定时器实现LED灯的周期性亮灭切换。通过设置定时器模式、初始化定时器初值并启动定时器,实现了每秒点亮一个LED灯的功能,并在8个LED灯循环结束后重置状态。

1872

被折叠的 条评论
为什么被折叠?



