×
单片机 > 单片机程序设计 > 详情

c51循环移位的浅谈

发布时间:2020-06-04 发布时间:
|
      如果学习单片机,最基本的考题就是流水灯了,呵呵,可是有时候一个很厉害的工程师,还真是不好弄出来,当然,我不是工程师,可是学习51单片机也有很长时间了,回想起当初学习51的时候,一直都是没有自己的核心的东西,今天就谈谈c51循环移位的见解

          记得如果你打开intrins.h(51自带的一个头文件),你会发现其中有关于定义_crol_()(字符循环左移函数)(一般我们用的多的是这个,呵呵),还有一个是_cror_()(字符循环右移函数)

         可是,如果你去面试的时候,这个时候,你难道还用它自带的循环函数么?当然不能了。真是的(有时候我们自己小组出的笔试题就是流水灯,可是我却紧锁眉头,感觉很是窝囊。咳,今天就把源程序写出来。)这时候就要用到你的c语言知识了,呵呵。

        假如说是共阴极数码管的话:

 程序可以这样(只写主要算法):

 

while(1)

{

         temp=0x01;         

         P1=temp;           

         delay(100);  //延时100ms

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

         {

                     temp=temp<<1;

                     P1=temp;

                     delay(100);

         }

}

 

 

可是假如是共阳极流水灯的话,就得写成这样,更好些:

while(1)

{

        temp=0xfe;         

         P1=temp;           

         delay(100);

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

         {

              P1=(temp<>(8-i);

              delay(100);

         }

}

看到没有,其中核心的一条语句就是  temp=temp<<1;P1=temp; 和P1=(temp<>(8-i);,其实第一个可以用第二个代替,不过对于共阴极的太过简单,直接写出来就行了,可是对于共阳极的话,就得思考思考了,先左移,然后和右移的数进行相或,这是相当经典的(8次)。呵呵,可能还有更经典的,以后有时间补充上,呵呵。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
8051单片机的函数发生器的设计