首页 > 编程语言 >51单片机(at89c51)制作流水灯程序的四种方法。

51单片机(at89c51)制作流水灯程序的四种方法。

时间:2022-11-19 21:35:30浏览次数:40  
标签:P1 点亮 -- 51 unsigned 单片机 while 延时 at89c51

程序:

//流水灯程序方法一

#include<reg51.h>

void main()

{

unsigned int i;//定义初始延时变量

i=40000;

while(1)//循环

{

 P1=0xFE;//点亮1灯

 while(i--);//延时40000

 P1=0xFD;//点亮2灯

 while(i--);

 P1=0XFB;//点亮3灯

 while(i--);

 P1=0XF7;//点亮4灯

 while(i--);

 P1=0XEF;//点亮5灯

 while(i--);

 P1=0XDF;//点亮6灯

 while(i--);

 P1=0XBF;//点亮7灯

 while(i--);

 P1=0X7F;点亮8灯

 while(i--); 

}

}

//流水灯程序方法二(取反~)

/*#include<reg51.h>

void main()

{

unsigned int x;//定义左移的位数

unsigned int i;//定义初始延时变量

x=0;//此时不左移,点亮1灯

i=40000;//延时时长

while(1)//循环,一次点亮8个灯

{

P1=~(0x01<<x);//二进制(00000001)取反得到二进制(11111110),即为1号灯的位地址。使其左移x位

x++;//表示每次左移位数加1,即第一次左移1位,第二次左移2位......,每移位一次,依次点亮8个灯(1~8)

 //while(i--);//延时点亮,使得每个灯点亮时有时间间隔

if(x>=8)//一共8个灯,当x=7时,8号灯亮,所以当x>=8时没有相应的I/O口(灯),使其循环,只得让x从0开始。

{

 x=0;  

}

while(i--);

}

}*/

//流水灯程序方法三

/*#include<reg51.h>

#include<intrins.h>//循环移位库

void main()//主函数

{

unsigned int i;//定义无符号延时变量

i=40000;//延时赋值

P1=0x7F;//(01111111)此时第八灯亮

while(1)//循环函数

{

 P1=_cror_(P1,1);//(01111111-10111111-11011111-11101111-11110111-11111011-11111101-11111110)循环右移,_crol_(值,位数):循环左移

 while(i--);

}

}*/

/*//方法四:点亮led灯(定义数组灵活点亮)

#include<reg51.h>

unsigned char code led[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};///code意思是储存在外部硬盘上,不占用内存,随用随调取。

void main()

{

unsigned int i;

unsigned int temp;

//i=40000;

while(1)

{

P1=led[temp++];

if(temp>=8)

{

 temp=0;

}

i=40000;

while(i--);

 }

}*/

标签:P1,点亮,--,51,unsigned,单片机,while,延时,at89c51
From: https://blog.51cto.com/u_15797078/5870654

相关文章