我用AT89S51.C51单片机编写花样流水灯程序,需要的命令

如题所述

一般每一个流水灯通过1位来控制,该位为0则点亮,为1则灭。软件中可能用到:
1、操作符<<或>>,比如8位流水灯,初始全灭,然后顺序点亮

uchar x=0xFF,i
for(i=0;i<8;i++)
{
x<<=1; //左移1位,最低位补0
P1 = x; //输出,假设LED接在P1口的8个脚上
delay300ms();//延时300ms,时间可根据效果自定,这个函数需要自己编制,我就不写了
}

2、循环移位函数_crol_、_cror_等(这是8位的,还有16位和32位的,原型在C51的INTRINS.H头文件里)
比如8位流水灯,第一态:前4个亮,后四个灭,第二态右移移位,变成8321灭,7654亮,如此循环
uchar x=0x0F,i
while(1)
{
_cror_(x,1); //x循环右移1位,原最低位移到最高位,0x0F->0x87->0xC3....
P1 = x; //输出,假设LED接在P1口的8个脚上
delay300ms();//延时300ms,时间可根据效果自定,这个函数需要自己编制,我就不写了
}

以上提供两种思路和样例,具体应用灵活掌握,不难吧?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-19
#include<reg51.h>
#include<intrins.h>//这个头文件里面包含了左移和右移函数_crol_(),_cror_();
#define uint unsigned int
#define uchar unsigned char
uchar temp;
void delay(uchar x)
{
uchar t;
while(1x--) for(t=0;t<120;t++);
}
void main()
{
temp=0xfe;
while(1)
{
P0=temp;
temp=_crol_(temp,1);
delay(500);
}
}本回答被网友采纳