本程序基于STC89C52RC进行 晶振频率为12MHz
基础流水灯程序
#include <REGX52.H>
sbit LED1=P2^4; //位定义LED1~4
sbit LED2=P2^5;
sbit LED3=P2^6;
sbit LED4=P2^7;
static void DelayNms() //@12.000MHz //12MHz单片机的延时50ms函数
{
unsigned char i, j;//50ms
i = 98;
j = 67;
do
{
while (--j);
} while (--i);
}
void main()
{
while(1) //循环中,每隔50ms改变一次LED灯的状态
{
LED1=0;
DelayNms();
LED1=1;
LED2=0;
DelayNms();
LED2=1;
LED3=0;
DelayNms();
LED3=1;
LED4=0;
DelayNms();
LED4=1;
}
}
利用位运算实现的LED流水灯
#include <REGX52.H>
static void DelayNms(int nms) //延时函数,可传入需要延时的时间进行延时
{
static unsigned int i,j;
for(i=0;i<nms;i++)
for(j=0;j<123;j++);
}
void main()
{
unsigned char i;
while(1)
{
P2=0xEF; //初始化LED灯的状态
for(i=0;i<4;i++)
{
DelayNms(50); //采用循环以及位运算方式改变LED灯的亮灭顺序
P2=P2<<1;
}
}
}