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

標題: 單片機LED流水燈左移是怎么實現的? [打印本頁]

作者: 1245463159    時間: 2018-2-6 14:05
標題: 單片機LED流水燈左移是怎么實現的?
單片機新人自學有個問題啊
我想問下這里的左移是怎么實現的

for(i=0;i<7;i++)         //將led左移一位
                {
                        led=_crol_(led,1);
                        delay(50000); //大約延時450ms        
                }

  1. /**************************************************************************************
  2. *                              LED流水燈實驗                                                                                                  *
  3. 實現現象:下載程序后LED呈現流水燈效果進行左移右移滾動
  4. 注意事項:無                                                                                                                                                                  
  5. ***************************************************************************************/

  6. #include "reg52.h"                         //此文件中定義了單片機的一些特殊功能寄存器
  7. #include<intrins.h>                //因為要用到左右移函數,所以加入這個頭文件

  8. typedef unsigned int u16;          //對數據類型進行聲明定義
  9. typedef unsigned char u8;

  10. #define led P0           //將P0口定義為led 后面就可以使用led代替P0口

  11. /*******************************************************************************
  12. * 函 數 名         : delay
  13. * 函數功能                   : 延時函數,i=1時,大約延時10us
  14. *******************************************************************************/
  15. void delay(u16 i)
  16. {
  17.         while(i--);      
  18. }

  19. /*******************************************************************************
  20. * 函 數 名       : main
  21. * 函數功能                 : 主函數
  22. * 輸    入       : 無
  23. * 輸    出             : 無
  24. *******************************************************************************/
  25. void main()
  26. {
  27.         u8 i;
  28.         led=0x01;
  29.         delay(50000); //大約延時450ms      
  30.         while(1)
  31.         {      
  32. /*                for(i=0;i<8;i++)
  33.                 {
  34.                         P0=(0x01<<i);         //將1右移i位,然后將結果賦值到P0口
  35.                         delay(50000); //大約延時450ms
  36.                 }
  37. */
  38.                
  39.                 for(i=0;i<7;i++)         //將led左移一位
  40.                 {
  41.                         led=_crol_(led,1);
  42.                         delay(50000); //大約延時450ms      
  43.                 }
  44.                 for(i=0;i<7;i++)        //將led右移一位
  45.                 {
  46.                         led=_cror_(led,1);
  47.                         delay(50000); //大約延時450ms      
  48.                 }
  49.         }               
  50. }
復制代碼



作者: kongxiaofuzi    時間: 2018-2-7 09:38
主要是這句,led=_crol_(led,1);,這個是左移函數,_crol_()是 內部函數,循環左移。整句的意思就是把某個輸出口數據循環左移一位。
作者: 你這個逗比    時間: 2018-2-7 10:55
led=_crol_(led,1);,這個是左移函數,_crol_()是 內部函數,循環左移。整句的意思就是把某個輸出口數據循環左移一位。
作者: jiangkeqin_sy    時間: 2018-2-7 11:14
主要是這句,led=_crol_(led,1);,這個是左移函數,_crol_()是 內部函數,循環左移。整句的意思就是把某個輸出口數據循環左移一位
作者: 1245463159    時間: 2018-2-7 13:37
kongxiaofuzi 發表于 2018-2-7 09:38
主要是這句,led=_crol_(led,1);,這個是左移函數,_crol_()是 內部函數,循環左移。整句的意思就是把某個 ...

哦哦,看懂了,謝謝
作者: zl2168    時間: 2018-2-7 15:01
還可應用數組實現。應用數組時可實現任意花樣。
作者: xujuncheng    時間: 2018-2-7 16:31
_crol_(led,1)這個是單片機的內部左移函數,主要是通過這個函數實現的
作者: meung    時間: 2018-2-7 16:44
通過左移函數led=_crol_(led,1)實現的~
作者: eeeewu    時間: 2018-2-7 17:12
也可以采用位移操作符,就是你代碼中注釋那一段
/*                for(i=0;i<8;i++)
                {
                        P0=(0x01<<i);         //將1右移i位,然后將結果賦值到P0口
                        delay(50000); //大約延時450ms
                }
*/
注:注釋有點小錯誤,“<<”是左移
作者: 13886419675    時間: 2018-2-7 17:24
可以的
作者: clfzuiniu    時間: 2018-2-7 18:17
可以采用位移操作符
作者: 王了得    時間: 2018-2-7 19:58
ed=_crol_(led,1);,這個是左移函數




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