做流水灯实验以前,必须先弄清楚各个发光二极管是怎么控制的,其次,在了解了keil的内部左移右移函数,就可以写出比较简短的流水灯的实验代码。
在写的过程中遇到过一些问题,怎么控制灯的走向,应该用一个怎么样的变量来实现传递,这个很重要。
解决的方法是定义一个unsigned char型变量。
此外还要写一个延时函数,可以是带参数的,也可以不带。
在while大循环里,不能忘了点亮一盏灯,就要把它关上。
#include<reg52.h>
#include <intrins.h> //包含有左右循环移位子函数的库
#define uint unsigned int
void delay() //延时函数,实现500ms延时
{
uint x,y;
for(x=200;x>0;x--)
for(y=625;y>0;y--);
}
void main()
{
unsigned char temp; //定义变量,控制灯
temp=0xfe; //总线的方法,temp初值是11111110
while(1) //死循环,使灯可以一直循环,实现流水作业
{
P1=temp; //点亮第一个二极管
delay(); //延时500ms
P1=0xff; //关闭所有二极管
temp=_crol_(temp,1); //左移函数,如果是右移,就用_cror_(temp,1);其中1代表每次向右移动一位
}
}