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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

怎么只是最左邊的LED閃爍?附單片機程序

[復制鏈接]
跳轉到指定樓層
樓主
各位論壇的大佬,又碰到問題了。電路圖如下,就是想實現從左邊開始的流水燈。代碼也附上了,可是運行的時候就是只有最左邊的LED閃爍,運行環境是proteus8.17sp4,麻煩大家看看原因出在哪里?
#include <reg51.h>
#include <intrins.h>
#define u8 unsigned char

void delay1s( u8 x )
{
    u8 i, j, k;
    i = x;
    j = 120;
    k = 169;
    while( i )
    {
        while( j )
        {
            while( k )
            {
                ;
                k --;
            }
            k = 169;
            j --;
        }
        j = 120;
        i --;
    }
}

void main( void )
{
    u8 i;
    while( 1 )
    {
        P2 = 0xfe;
        for( i = 7; i > 0; i -- )
        {
            delay1s( 1 );
            P2 = _crol_( P2, 1 );
        }
    }
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1133081 發表于 2025-10-24 19:53 | 只看該作者
#include <reg51.h>
#include <intrins.h>
#define u8 unsigned char

void delay1s( u8 x )
{
    u8 i, j, k;
    i = x;
    j = 120;
    k = 169;
    while( i )
    {
        while( j )
        {
            while( k )
            {
                ;
                k --;
            }
            k = 169;
            j --;
        }
        j = 120;
        i --;
    }
}

void main( void )
{
//        u8 i;
        P2 = 0xfe;
        while( 1 )
        {       
//                for( i = 7; i > 0; i -- )
//                {
                        delay1s( 1 );
//                        P2 = _crol_( P2, 1 );
                        P2 = _cror_( P2, 1 );
//                }
        }
}
回復

使用道具 舉報

板凳
ID:1145592 發表于 2025-10-25 11:25 | 只看該作者
你在while(1)里面的P2 = _crol_( P2, 1 );已經做成了循環左移了,不用再在外面套一個for循環
回復

使用道具 舉報

地板
ID:584814 發表于 2025-10-26 11:42 | 只看該作者
undyme 發表于 2025-10-25 11:25
你在while(1)里面的P2 = _crol_( P2, 1 );已經做成了循環左移了,不用再在外面套一個for循環

運行后顯示的結果有什么不同么
回復

使用道具 舉報

5#
ID:409878 發表于 2025-10-26 23:04 | 只看該作者
undyme 發表于 2025-10-25 11:25
你在while(1)里面的P2 = _crol_( P2, 1 );已經做成了循環左移了,不用再在外面套一個for循環

不用for循環,就只會左移一次。
回復

使用道具 舉報

6#
ID:409878 發表于 2025-10-26 23:05 | 只看該作者
WL0123 發表于 2025-10-24 19:53
#include
#include
#define u8 unsigned char

這個運行結果一樣。
回復

使用道具 舉報

7#
ID:409878 發表于 2025-10-26 23:05 | 只看該作者
man1234567 發表于 2025-10-26 11:42
運行后顯示的結果有什么不同么

問題照樣沒解決。
回復

使用道具 舉報

8#
ID:1133081 發表于 2025-10-27 08:28 | 只看該作者
suiwinder 發表于 2025-10-26 23:05
這個運行結果一樣。

如果用的是沙發代碼在樓主截圖電路仿真,結果不是由左至右反復循環。只能是樓主太自信且不仔細。
回復

使用道具 舉報

9#
ID:161164 發表于 2025-10-27 10:26 | 只看該作者
請檢查有沒有生成Hex檔
Proteus引用的Hex檔是不是正確的
回復

使用道具 舉報

10#
ID:1109793 發表于 2025-10-27 11:55 | 只看該作者
WL0123 發表于 2025-10-27 08:28
如果用的是沙發代碼在樓主截圖電路仿真,結果不是由左至右反復循環。只能是樓主太自信且不仔細。

為啥不是反復循環?
樓主的意思是為啥輸出的口沒有按照代碼改變吧,只有P2.7有變化,其他的腳沒有。
回復

使用道具 舉報

11#
ID:409878 發表于 2025-10-27 13:31 | 只看該作者
WL0123 發表于 2025-10-27 08:28
如果用的是沙發代碼在樓主截圖電路仿真,結果不是由左至右反復循環。只能是樓主太自信且不仔細。

你有好的辦法嗎?
回復

使用道具 舉報

12#
ID:1109793 發表于 2025-10-27 17:45 | 只看該作者
suiwinder 發表于 2025-10-27 13:31
你有好的辦法嗎?

先給端口直接賦值,看看那些指示燈能不能有對應的變化
回復

使用道具 舉報

13#
ID:384109 發表于 2025-10-27 21:08 | 只看該作者
定義一個變量,這個變量進行移位,然后再把變量賦值給P2口
回復

使用道具 舉報

14#
ID:281828 發表于 2025-10-27 21:37 | 只看該作者
用實驗板測試驗證以下代碼可以實現流水顯示,代碼如下:

****
void main(void)


P6=0xfe;
    while(1)
    {
            delay_ms(250);
            P6 = _crol_(P6, 1);
    }

加入for循環效果不變,如果只是驗證單向流水加for循環顯然是沒必要的,實現雙向流水時各自加for循環就必要了。

回復

使用道具 舉報

15#
ID:619259 發表于 2025-10-28 10:55 | 只看該作者
1.樓主的程序問題不大,跑馬燈可以跑起來,只是高位燈不亮,只循環點亮7個燈,原因是程序行for( i = 7; i > 0; i -- )有問題,應改為for( i = 8; i > 0; i -- )。
2.程序可以化簡,既然用了_crol_()函數,可以不用for循環,也不用定義循環邊界,因為_crol_()函數已經內含循環機制,它跟左移運算符<<的運行結果是有區別的。主程序可簡化為:
void main(void)
{
    P2=0xfe;
    while( 1 )
    {
                P2=_crol_(P2,1);
                delay1s(1);
    }
}
回復

使用道具 舉報

16#
ID:409878 發表于 2025-10-29 22:12 | 只看該作者
謝謝網友的回復。
這個代碼在proteus 8.17 sp5上運行的時候,一個燈都不亮。
回復

使用道具 舉報

17#
ID:409878 發表于 2025-10-29 22:13 | 只看該作者
wannenggong 發表于 2025-10-27 21:37
用實驗板測試驗證以下代碼可以實現流水顯示,代碼如下:

****

謝謝你的回復。
加入for循環是必要的。但是你這個代碼和樓下的是一樣的。
回復

使用道具 舉報

18#
ID:409878 發表于 2025-10-29 22:14 | 只看該作者
lkc8210 發表于 2025-10-27 10:26
請檢查有沒有生成Hex檔
Proteus引用的Hex檔是不是正確的

謝謝你的熱心回復。
生成了hex文檔的,proteus引用也是正確的。就是沒有按預想的仿真結果出現。
回復

使用道具 舉報

19#
ID:619259 發表于 2025-10-29 23:42 | 只看該作者
suiwinder 發表于 2025-10-29 22:12
謝謝網友的回復。
這個代碼在proteus 8.17 sp5上運行的時候,一個燈都不亮。

想要很快的解決問題,把你高傲的proteus 8.17 sp5工程文件和程序文件打包發上來吧。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表