- 积分
- 3553
- 下载分
- 分
- 威望
- 点
- 原创币
- 点
- 下载
- 次
- 上传
- 次
- 注册时间
- 2014-11-13
- 精华
|
马上注册,获取阅读精华内容及下载权限
您需要 登录 才可以下载或查看,没有帐号?注册
x
花样流水灯,拉幕花样+左移位+右移位+循环左移+循环右移
//花样流水灯,拉幕花样+左移位+右移位+循环左移+循环右移
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar y,aa;
void delay(uint i) //延时子函数
{
uint m;
uchar n;
for(m=i;m>0;m--)
for(n=110;n>0;n--);
}
void main()
{
while(1)
{
uchar k;
for(k=0;k<2;k++)
{
P1=0xff;
delay(1000); //拉幕花样
P1=0x7e;
delay(1000);
P1=0x3c;
delay(1000);
P1=0x18;
delay(1000);
P1=0x00;
delay(1000);
P1=0x00;
delay(1000);
P1=0x18;
delay(1000);
P1=0x3c;
delay(1000);
P1=0x7e;
delay(1000);
P1=0xff;
delay(1000);
P1=0; //灯闪烁1次
delay(1000);
P1=0xff;
delay(1000);
}
y=8; // y=8时,不需要里面的for循环就可以,流水灯为1次,改变y的值可以改变亮灯的位数。
while(y--) //这里如果不加while语句,灯会乱跳几下后,就去执行后面的程序了
{ //如果需要多次流水灯,就需要for循环语句,改变K的值就可以改变次数
uchar k;
for(k=0;k<2;k++) //流水循环次数
{
P1 = P1 << 1; //按位左移
delay(1000); //延时
if(P1 == 0) //如果P1等于零,
{ /*则跳到下一步,P1全送高电平*/
P1 = 0xff;
delay(1000);
}
}
}
y=8;
while(y--)
{
uchar k;
for(k=0;k<2;k++) //流水循环次数
{
P1 = P1 >> 1; //按位右移
delay(1000); //延时
if(P1 == 0) //如果P1等于零,
{ /*则跳到下一步,P1全送高电平*/
P1 = 0xff;
delay(1000);
}
}
}
aa=0xfe;
y=8;
while(y--)
{
P1 = aa;
delay(1000);
aa=_crol_(aa,1); //循环左移
}
aa=0x7f;
y=8;
while(y--)
{
P1 = aa;
delay(1000);
aa=_cror_(aa,1); //循环右移
}
}
} |
|
|