单片机C语言编程(正反流水灯)

单片机C语言编程(正反流水灯),第1张

#include"reg51.h"

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) //停机.

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8165462.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存