
sfr WDTRST = 0xA6 //定义看门狗;
void Delay(unsigned int x)
{unsigned char s
while(x--)
{for(s=0s<125s++)}
}
void main()
{
unsigned char sw=0
char cf=1
WDTRST=0x1E
WDTRST=0xE1//初始化看门狗。
P0=0xFE
for()
{
if(cf>0)
{P0<<=1
P0|=0x01
Delay(200)
if(P0==0xFF)
{cf=cf*(-1)P0=0x7F}
}
else
{
P0>>=1
P0=P0|0x80
Delay(200)
if(P0==0xFF)
{cf=cf*(-1)P0=0xFE}
}
WDTRST=0x1E
WDTRST=0xE1//喂狗指令
}
}
每次一个灯亮,先左移,再右移。每200毫秒移位一次。假设晶振是12MHZ。
在Proteus上仿真通过。
while(1){
for(i=0i<8i++)
{
a=1>>1
delay(x-500)//循环向右点亮1只灯并且延时递减
}
for(j=0j<8j++)//循环向左点亮1只灯并且延时递增
{a=1<<1
delay(x+500)
}
}
void delay(xx)
{int time
while(xx--)
{for(time=0time<2000time++)}
}
主体就是这样的 根据的需要流水灯数量,和延时时间可以自己修改,a代表你用的IO口
可以了.#include<reg52.h>
#include <intrins.h>
void main()
{
unsigned int temp = 0xef, a, i, b
for(b = 0b <= 5b++) {//正向流水5次.
temp = 0x7f
for(i = 0i <7i++) {//1移动到8,移动7次即可.
P1 = temp
a = 50000
while(a--)
temp = _cror_(temp, 1)
}
temp = 0xfe
for(i = 0i <7i++) {
P1 = temp
a = 50000
while(a--)
temp = _crol_(temp, 1)
}
}
P1 = 0xff //全灭.
while(1) //停机.
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)