📄 流水灯.c
字号:
#include <reg51.h>
void delay_ms(unsigned short ms)
{
unsigned short i;
unsigned char j;
for(i=0;i<ms;i++)
{
for(j=0;j<200;j++);
for(j=0;j<102;j++);
}
}
void main(void)
{
unsigned char led_contrl; //指示灯控制字节
unsigned char i,j; //循环变量
unsigned char contrl1,contrl2; //指示灯移位变量
while(1)
{
for(j=0;j<3;j++) //模式一:按次序闪烁灯
{
P2=0xff; //熄灭所有指示灯
led_contrl=0x01; //初始化指示灯控制字节
delay_ms(300); //延时300MS
for(i=0;i<8;i++)
{
P2=~led_contrl; //点亮控制字节相应指示灯
delay_ms(250);
if(led_contrl<0x80) led_contrl<<=1; //控制字节移位操作
else led_contrl=0x01;
}
}
for(j=0;j<3;j++) //模式二:依次点亮所有指示灯
{
P2=0xff; //熄灭所有指示灯
led_contrl=0xff; //初始化指示灯控制字节
contrl1=0xfe; //初始化移位变量1
delay_ms(300);
for(i=0;i<8;i++)
{
P2=led_contrl&contrl1; //点亮控制字节相应的指示灯
delay_ms(250);
contrl1<<=1; //移位变量左移1位
}
}
for(j=0;j<3;j++) //模式三:交叉闪烁指示灯
{
P2=0xff; //熄灭所有指示灯
contrl1=0x02; //初始化移位变量1
contrl2=0x80; //初始化移位变量2
delay_ms(300);
for(i=0;i<8;i++)
{
led_contrl=contrl1|contrl2;
P2=~led_contrl; //点亮控制字节相应指示灯
delay_ms(250);
contrl1<<=1; //移位变量1左移1位
contrl2>>=1; //移位变量2右移1位
}
}
}
}
本文来自: 电子工程师之家[url]http://www.eehome.cn[/url] 记得常回家看看!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -