0%

51单片机程序(点亮LED)

本文记录了自己在折腾51单片机时编写过的点亮LED的程序(/ω\),以作备份。

单片机: STC89C52
开发板: HC6800-MS

点亮一个LED

运行结果:HC6800-MS开发板上的编号为D8的LED常亮。

#include<reg51.h>		//包含特殊功能寄存器定义的头文件
sbit LED=P2^7; //位地址声明
void main()
{
while(1)
{
LED=0; //低电平点亮LED
}
}

LED闪烁

运行结果:HC6800-MS开发板上的编号为D8的LED闪烁。

#include<reg51.h>
sbit LED=P2^7;
void Delaytime(int x); //声明非精确延时函数
void main()
{
while(1)
{
LED=0; //低电平点亮LED
Delaytime(10000); //延时
LED=1; //高电平熄灭LED
Delaytime(10000); //延时
}
}
void Delaytime(int x) //定义非精确延时函数
{
int y;
for(;x>0;x--)
{
for(y=10;y>0;y--);
}
}

流水LED

运行结果:HC6800-MS开发板上的编号为D1~D8的LED,往左依次先点亮后熄灭,再往右依次先点亮后熄灭;依此循环。

#include<reg51.h>
#include<intrins.h> //包含_crol_()和_cror_()函数的头文件
#define LED P2
void Delaytime(int x);
void main()
{
int n;
LED=0xfe; //1111_1110,定义P2的8个IO输出的电平
while(1)
{
for(n=0;n<7;n++)
{
LED=_crol_(LED,1); //左移一位
Delaytime(10000);
}
for(n=0;n<7;n++)
{
LED=_cror_(LED,1); //右移一位
Delaytime(10000);
}
}
}
void Delaytime(int x)
{
int y;
for(;x>0;x--)
{
for(y=10;y>0;y--);
}
}