欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 求大神分析下代碼是如何實現左右流水燈的,小弟新手想不通。謝謝 [打印本頁]

作者: w322405    時間: 2017-8-6 14:09
標題: 求大神分析下代碼是如何實現左右流水燈的,小弟新手想不通。謝謝
#include<reg51.h>
typedef unsigned char uchar;
typedef unsigned int uint;
uchar i;
uchar temp;
uchar a,b;
void delay(void)
{
       ucharm,n,s;
       for(m=20;m>0;m--)
              for(n=20;n>0;n--)
                     for(s=248;s>0;s--);
}
void main(void)
{
       while(1)
       {
              temp=0xfe;
              P1=temp;
              delay();
              for(i=1;i<8;i++)
              {
                     a=temp<<i;
                     b=temp>>(8-i);
                     P1=a|b;
                     delay();
              }
              for(i=1;i<8;i++)
              {
                     a=temp>>i;


b=temp<<(8-i);
                     P1=a|b;
                     delay();
              }
       }
}

作者: djx0    時間: 2017-8-6 18:14
P1口驅動8個LED.
作者: djx0    時間: 2017-8-6 18:26
簡單的移位處理, 用軟件仿真看一下P1口的輸出值就很清楚了
作者: 肖啊哈    時間: 2017-8-6 21:11
引用intrins,里面有移位的函數直接用,也可以在你的這種方法左右移動每次移動移位,之后在自加一,也可行
作者: zl2168    時間: 2017-8-6 23:09
左右流水燈即左右各4個流水燈活左右各n 個流水燈,依次亮燈或變化。
作者: 我有一只小毛驢    時間: 2017-8-7 10:48
移位指令控制端口的高電平
作者: YFJ1993    時間: 2017-8-7 12:25
原理啊,就是輪流點亮燈,就是這么簡單而已,先第一個亮,然后第二個亮,一次輪流
作者: wzzhzsm    時間: 2017-8-7 14:05
用P1口驅動8個LED,第一個for循環是將所有的燈點亮,第一個for循環是依次將其中一個燈滅掉。
作者: lyl00ybz    時間: 2017-8-7 15:10
從程序來看這應該是一個共陽極的流水燈,首先給P1口賦值0xFE,轉換成二進制1111  1110,P1.0亮,然后給個延時再一個邏輯左移,將P1.1清零,在邏輯右移7位將P1.0置1,然后依次循環
作者: wkblack    時間: 2017-8-7 22:58
首先0xfe,就是11111110,這個是P1.O口控制的燈亮,后邊的for語句就是將這個0依次向左邊移位,比如第一個循環就是11111101,這個你可以自己算算。第一個循環結束之后就是01111111,然后第二個循環就是移回去,這個方法比較基礎,也不好理解,可以用intrins函數庫的位移函數
作者: jzh888    時間: 2017-8-8 08:36
是通過移位來實現的
作者: 1160236886    時間: 2017-8-8 20:52
i=1時;a 1111 1100  b  0000 0011
作者: 1160236886    時間: 2017-8-8 20:53
剩下的依次,就可以了
作者: 沙發上vzz    時間: 2017-8-9 09:56
IO口給個數據然后位移,就是給高電平亮,然后一直往左或者右移
作者: 姚亞芬    時間: 2017-8-9 10:55
運用左移右移控制,循環起來




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1