亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2034|回復(fù): 18
打印 上一主題 下一主題
收起左側(cè)

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:409878 發(fā)表于 2025-10-24 16:31 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
各位論壇的大佬,又碰到問(wèn)題了。電路圖如下,就是想實(shí)現(xiàn)從左邊開(kāi)始的流水燈。代碼也附上了,可是運(yùn)行的時(shí)候就是只有最左邊的LED閃爍,運(yùn)行環(huán)境是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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1133081 發(fā)表于 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 );
//                }
        }
}
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

運(yùn)行后顯示的結(jié)果有什么不同么
回復(fù)

使用道具 舉報(bào)

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

不用for循環(huán),就只會(huì)左移一次。
回復(fù)

使用道具 舉報(bào)

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

這個(gè)運(yùn)行結(jié)果一樣。
回復(fù)

使用道具 舉報(bào)

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

問(wèn)題照樣沒(méi)解決。
回復(fù)

使用道具 舉報(bào)

8#
ID:1133081 發(fā)表于 2025-10-27 08:28 | 只看該作者
suiwinder 發(fā)表于 2025-10-26 23:05
這個(gè)運(yùn)行結(jié)果一樣。

如果用的是沙發(fā)代碼在樓主截圖電路仿真,結(jié)果不是由左至右反復(fù)循環(huán)。只能是樓主太自信且不仔細(xì)。
回復(fù)

使用道具 舉報(bào)

9#
ID:161164 發(fā)表于 2025-10-27 10:26 | 只看該作者
請(qǐng)檢查有沒(méi)有生成Hex檔
Proteus引用的Hex檔是不是正確的
回復(fù)

使用道具 舉報(bào)

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

為啥不是反復(fù)循環(huán)?
樓主的意思是為啥輸出的口沒(méi)有按照代碼改變吧,只有P2.7有變化,其他的腳沒(méi)有。
回復(fù)

使用道具 舉報(bào)

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

你有好的辦法嗎?
回復(fù)

使用道具 舉報(bào)

12#
ID:1109793 發(fā)表于 2025-10-27 17:45 | 只看該作者

先給端口直接賦值,看看那些指示燈能不能有對(duì)應(yīng)的變化
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

14#
ID:281828 發(fā)表于 2025-10-27 21:37 | 只看該作者
用實(shí)驗(yàn)板測(cè)試驗(yàn)證以下代碼可以實(shí)現(xiàn)流水顯示,代碼如下:

****
void main(void)


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

加入for循環(huán)效果不變,如果只是驗(yàn)證單向流水加for循環(huán)顯然是沒(méi)必要的,實(shí)現(xiàn)雙向流水時(shí)各自加for循環(huán)就必要了。

回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

16#
ID:409878 發(fā)表于 2025-10-29 22:12 | 只看該作者
謝謝網(wǎng)友的回復(fù)。
這個(gè)代碼在proteus 8.17 sp5上運(yùn)行的時(shí)候,一個(gè)燈都不亮。
回復(fù)

使用道具 舉報(bào)

17#
ID:409878 發(fā)表于 2025-10-29 22:13 | 只看該作者
wannenggong 發(fā)表于 2025-10-27 21:37
用實(shí)驗(yàn)板測(cè)試驗(yàn)證以下代碼可以實(shí)現(xiàn)流水顯示,代碼如下:

****

謝謝你的回復(fù)。
加入for循環(huán)是必要的。但是你這個(gè)代碼和樓下的是一樣的。
回復(fù)

使用道具 舉報(bào)

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

謝謝你的熱心回復(fù)。
生成了hex文檔的,proteus引用也是正確的。就是沒(méi)有按預(yù)想的仿真結(jié)果出現(xiàn)。
回復(fù)

使用道具 舉報(bào)

19#
ID:619259 發(fā)表于 2025-10-29 23:42 | 只看該作者
suiwinder 發(fā)表于 2025-10-29 22:12
謝謝網(wǎng)友的回復(fù)。
這個(gè)代碼在proteus 8.17 sp5上運(yùn)行的時(shí)候,一個(gè)燈都不亮。

想要很快的解決問(wèn)題,把你高傲的proteus 8.17 sp5工程文件和程序文件打包發(fā)上來(lái)吧。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表