久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1556|回復: 8
打印 上一主題 下一主題
收起左側

C51單片機LED流水燈顯示程序問題分析

[復制鏈接]
跳轉到指定樓層
樓主
ID:1077493 發表于 2023-5-14 22:38 來自觸屏版 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本人初學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循環點亮。按本人粗淺的認識,兩個程序運行的效果應該不足以造成肉眼能分辨的差異,其中原因請大家多多指教。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 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;
                }
        }
}
回復

使用道具 舉報

板凳
ID:1077493 發表于 2023-5-15 09:55 來自觸屏版 | 只看該作者
非常感謝前輩指導。我把二進制1000 0000錯算成256了。請問第2個while循環里的條件改為i<=128是否也可以呢?>
回復

使用道具 舉報

地板
ID:1077493 發表于 2023-5-15 10:01 來自觸屏版 | 只看該作者
wulin 發表于 2023-5-15 06:28
第一段程序中while (i

非常感謝前輩指導。我把二進制1000 0000錯算成256了。請問第2個while循環里的條件改為i<=128是否也可以呢?
回復

使用道具 舉報

5#
ID:77589 發表于 2023-5-15 11:10 | 只看該作者
pipi-lcy 發表于 2023-5-15 10:01
非常感謝前輩指導。我把二進制1000 0000錯算成256了。請問第2個while循環里的條件改為i

試試一試就不知道了!學習需要不斷地去嘗試,驗證自己的想法!
回復

使用道具 舉報

6#
ID:213173 發表于 2023-5-15 15:13 | 只看該作者
pipi-lcy 發表于 2023-5-15 10:01
非常感謝前輩指導。我把二進制1000 0000錯算成256了。請問第2個while循環里的條件改為i

i<=128當然可以,建議下載一個仿真軟件,這種簡單問題很容易驗證。
回復

使用道具 舉報

7#
ID:1077493 發表于 2023-5-15 15:22 來自觸屏版 | 只看該作者
wulin 發表于 2023-5-15 15:13
i

感謝幫助
回復

使用道具 舉報

8#
ID:1077493 發表于 2023-5-15 15:22 來自觸屏版 | 只看該作者
Longan.Wang 發表于 2023-5-15 11:10
試試一試就不知道了!學習需要不斷地去嘗試,驗證自己的想法!

感謝幫助
回復

使用道具 舉報

9#
ID:1074206 發表于 2023-5-16 10:16 | 只看該作者
流水燈可以用左移 右移 庫函數,很方便
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色在线观看网站 | 天天操天天干天天爽 | 操到爽| 香蕉视频黄色 | 黄色大片在线播放 | 在线观看中文字幕视频 | 国产三区在线观看视频 | 热久久久| 久久精品一区 | 久久狼人天堂 | 国产成人精品一区二区三区视频 | 日韩av一区二区在线观看 | 欧美一区二区三区在线观看 | 91影院在线观看 | 久久国产视频播放 | 欧美午夜影院 | 免费黄色网址视频 | 久久久久久免费看 | 国产精品久久久久久久久久了 | 日韩精品在线网站 | 真人一级毛片 | 精品无码久久久久久国产 | 日韩有码一区 | 国产视频1区2区 | 欧美综合网| 日韩视频在线播放 | www久久久| 日韩欧美二区 | 国产av毛片 | 国产伦精品一区二区三区高清 | 久久精品久久久久久 | 欧美日韩国产一区二区三区 | 日本中出视频 | 国产视频一区在线 | 91精品国产自产精品男人的天堂 | 欧美成人精品一区二区男人看 | 欧美1区2区| 三级在线视频 | 国产原创视频 | 一级大片免费 | 日韩视频专区 |