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

標題: C51單片機LED流水燈顯示程序問題分析 [打印本頁]

作者: pipi-lcy    時間: 2023-5-14 22:38
標題: C51單片機LED流水燈顯示程序問題分析
本人初學C51單片機,在實現流水燈效果時,首先使用如下程序進行控制:
```
#include <reg52.h>
unsigned int a;
void main()
{
        while(1)
        {
                int i=1;
                while (i<=256)
                {
                        P1=~i;
                        a=50000;
                        while (a--);
                        i*=2;
                }
        }
}
```
發現當最下方第8個LED燈亮后,經短暫延遲后最上方第1個LED才點亮。而若使用以下程序:
```
#include <reg52.h>
unsigned int a;
void main()
{
        while(1)
        {
                int i=1,n=1;
        while (n<=8)
                {
                        P1=~i;
                        a=50000;
                        while (a--);
                        i*=2;
                        n++;
                }
        }
}

```
則無此現象,能正常實現LED循環點亮。按本人粗淺的認識,兩個程序運行的效果應該不足以造成肉眼能分辨的差異,其中原因請大家多多指教。
作者: wulin    時間: 2023-5-15 06:28
第一段程序中while (i<=256),只有當  i*=2; 增值到512才能跳出循環,所以循環要延遲一個移動時間。
#include <reg52.h>
unsigned int a;
void main()
{
        while(1)
        {
                int i=1;
                while (i<=256)//此處多循環了一次
                {
                        P1=~i;
                        a=50000;
                        while (a--);
                        i*=2;
                }
        }
}

//以上程序寫法不規范,改如下寫法
#include <reg52.h>
unsigned int a;
void main()
{
        int i;
        while(1)
        {
                i=1;
//                while (i<=255)//兩種寫法都行
                while (i!=256)
                {
                        P1=~i;
                        a=50000;
                        while (a--);
                        i*=2;
                }
        }
}

作者: pipi-lcy    時間: 2023-5-15 09:55
非常感謝前輩指導。我把二進制1000 0000錯算成256了。請問第2個while循環里的條件改為i<=128是否也可以呢?>
作者: pipi-lcy    時間: 2023-5-15 10:01
wulin 發表于 2023-5-15 06:28
第一段程序中while (i

非常感謝前輩指導。我把二進制1000 0000錯算成256了。請問第2個while循環里的條件改為i<=128是否也可以呢?
作者: Longan.Wang    時間: 2023-5-15 11:10
pipi-lcy 發表于 2023-5-15 10:01
非常感謝前輩指導。我把二進制1000 0000錯算成256了。請問第2個while循環里的條件改為i

試試一試就不知道了!學習需要不斷地去嘗試,驗證自己的想法!
作者: wulin    時間: 2023-5-15 15:13
pipi-lcy 發表于 2023-5-15 10:01
非常感謝前輩指導。我把二進制1000 0000錯算成256了。請問第2個while循環里的條件改為i

i<=128當然可以,建議下載一個仿真軟件,這種簡單問題很容易驗證。
作者: pipi-lcy    時間: 2023-5-15 15:22
wulin 發表于 2023-5-15 15:13
i

感謝幫助
作者: pipi-lcy    時間: 2023-5-15 15:22
Longan.Wang 發表于 2023-5-15 11:10
試試一試就不知道了!學習需要不斷地去嘗試,驗證自己的想法!

感謝幫助
作者: kk17328    時間: 2023-5-16 10:16
流水燈可以用左移 右移 庫函數,很方便




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