2种方法实现流水灯
for(y=110;y>0;y--); }
/* *名称:显示函数 *功能:实现流水灯功能 */ void display() {
uchar temp=0,i=0;
P1=0xfe;
//左移模块
temp=P1;
for(i=0;i<8;i++)
{
P1=temp;
temp=(temp<<1)|0x01;
delay(1000);
void;
void main() {
while(1) {
display(); } }
/* *名称:延时函数 *功能:实现延时.5眤为 1000 时,延时约 1s. */ void delay(uint z) {
uint x,y; for(x=z;x>0;x--)
delay(500);
}
}
还有一种方法就是将数据放到数组中,然后利用 for 循环,将数据取出赋值。
平常用到的 2 种实现流水灯的方法
/* *作用:实现流水灯功能 *思路:通过左移和右移运算符实现 *不足:在首尾 2 个灯上停留时间过长,产生类似停顿现象 *解决方法:右移模块初始赋值 0xbf,循环改为 6 次 */
Author : LONG
#include<reg52.h> #define uchar unsigned char #define uint unsigned int
uchar temp=0,i=0;
P1=0xfe;
//左移模块
temp=P1;
for(i=0;i<8;i++)
{
P1=temp;
temp=_crol_(temp,1);
delay(500);
}
P1=0x7f;
//右移模块
temp=P1;
for(i=0;i<8;i++)
{
P1=temp;
temp=_cror_(temp,1);
*/
#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int
void delay(uint); void display();
void main() {
while(1) {
display(); } }
}
P1=0x7f;
//右移模块
temp=P1;
for(i=0;i<8;i++)
{
P1=temp;
temp=(temp>>1)|0x80;
delay(1000);
}
}
/* *作用:实现流水灯功能 *思路:通过自带函数_crol_(),与_cror_();在头文件 intrins.h 中包含 *不足:在首尾 2 个灯上停留时间过长,产生类似停顿现象 *解决方法:右移模块初始赋值 0xbf,循环改为 6 次
/* *名称:延时函数
*功能:实现延时.5眤为 1000 时,延时约 1s. */ void delay(uint z) {
uint x,y; for(x=z;x>0;x--)
for(y=110;y>0;y--); }
/* *名称:显示函数 *功能:实现流水灯功能 */ void display() {