51单片机流水灯用C语言编写的设计程序是什么?

Python013

51单片机流水灯用C语言编写的设计程序是什么?,第1张

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

void delay(void)

{

uchar i,j

for(i=0i<150i++)

for(j=0j<240j++)

}

main()

{

uchar led,i,j

while(1)

{

for(i=0i<8i++)

{

led=0xfe<<i

for(j=0j<8-ij++)

{

P0=led

led=_crol_(led,1)

delay()

}

}

}

}

请你参考:

参照上图,代码如下:

#include<reg51.h>

unsigned char i

void Delayms(unsigned int x)

{

  unsigned char t

while(x--)

for(t=0t<120t++)

}

void main()

{

IT1=1

IE|=0x84

P2=0xFE

i=1

while(1)

}

void EX1_INT() interrupt 2

{

ET0=0

Delayms(10)

P2=~(1<<i)

i=++i%8

ET0=1

}

//你原来的b2,b2都是死循环,这是不行的,只有主函数才可以死循环。

//你的主函数结构也有问题。

//为你增加了一个按键检测的函数。

//下列程序通过了实验测试。

//b1输出的周期大约0.9s。

//b2输出的周期大约0.6s。

//K为触动开关,reg为红灯,bice为绿灯,b1、b2 各为一个方波,

//按第一次触动开关时红灯亮、b1输出,

//按第二次绿灯亮、为b2输出,

//按第三次都关闭.

#include <reg51.h>

#define uint unsigned int

#define uchar unsigned char

uint a

void b1()

void b2()

sbit t = P1^0

sbit k = P3^5

sbit reg = P3^3

sbit bice = P3^2

void delay(uchar z)

{

uint x,y

for(x = zx >0x--) for(y = 110y >0y--)

}

bit key()

{

bit kkk

kkk = k //读入按键.

if(kkk == 1) return 0//没有按下.

delay(5)//延时.

if(k == kkk) return 1//两次相等.

return 0

}

void main()

{

while(1) {

P3 = 0xff

while(!key()) //静等按下第一次.

reg = 0

bice = 1

while(!key()) b1()//没有按下第二次就循环等待.

reg = 1

bice = 0

while(!key()) b2()//没有按下第三次就循环等待.

}

}

void b1()

{

P1 = 0xfe a = 50000 while(a--)

P1 = 0xff a = 50000 while(a--)

}

void b2()

{

P1 = 0xfe a = 30000 while(a--)

P1 = 0xff a = 30000 while(a--)

}