专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

3种方法实现流水灯

作者:huqin   来源:本站原创   点击数:  更新时间:2014年01月29日   【字体:

(P0一般接10K的上拉电阻,此图复位电路没给出)

当然,有些比较有心的同学会做些有花样的,如这种“心”形的流水灯
下面试代码:

(1)用总线的方法实现流水灯

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

uchartable[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void delay(uint xms) //延时约1ms

{

       uintx,y;

       for(x=110;x>0;x--)

       for(y=xms;y>0;y--);

}

void main()

{

       uchar i;

       while(1)

       {

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

              {

                     P0=table[i];

                     delay(500);

              }

       }

}

(2)移位实现流水灯

#include<reg52.h>

#define uchar unsigned char

#define uint unsigned int

void delay(uint xms) //延时约1ms

{

       uintx,y;

       for(x=110;x>0;x--)

       for(y=xms;y>0;y--);

}

void main()

{

       uchar a,i;

       while(1)

       {

              a=0xfe;

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

              {

                     P0=a;

                     a=a<<1;

                     a=a|0x01;

                     delay(500);

              }

       }

}

(3)用库函数实现流水灯

#include<reg52.h>

#include<intrins.h>//此头文件包含移位函数

#define uchar unsigned char

#define uint unsigned int

void delay(uint xms) //延时约1ms

{

       uint x,y;

       for(x=110;x>0;x--)

       for(y=xms;y>0;y--);

}

void main()

{

       uint a;

       a=0xfe;

       while(1)

       {

              P2=a;

              a=_crol_(a,1);

              delay(500);

       }

}

关闭窗口

相关文章