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

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

QQ登錄

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

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

這個(gè)帖有趣"關(guān)于單片機(jī)LED燈循環(huán)點(diǎn)亮程序調(diào)試問(wèn)題"

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:917199 發(fā)表于 2021-5-21 21:32 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
ttp://m.raoushi.com/bbs/dpj-207328-1.html
注意樓主的問(wèn)題是為什么沒(méi)有停下來(lái),嚇面是原程序:
#include <REGX52.H>
void delay(int t);
void main()
{
        char i;
        while(i<=5)
        {
                for(i=0;i<5;i++)
                {
                P2=0x00;
                delay(60000);
                P2=0xff;
                delay(60000);
                i=i+1;
                }
        }               
}
void delay(int t)
{
        while(--t);
}
我將它修改如下再仿真仍然沒(méi)停,事情是不是變得有趣了?
char i=0;
        while(i<5)
        {
                for(i;i<5;i++)
                {
無(wú)論實(shí)物還是仿真,很期待大家的測(cè)試結(jié)果
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:342822 發(fā)表于 2021-5-21 22:10 | 只看該作者
#include <REGX52.H>
void delay(int t);
void main()
{
        char i;
        while(i<5)
        {
                for(i=0;i<5;i++)
                {
                P2=0x00;
                delay(60000);
                P2=0xff;
                delay(60000);
               // i=i+1;
                }
        }
   while(1);            
}

void delay(int t)
{
        while(--t);
}
回復(fù)

使用道具 舉報(bào)

板凳
ID:342822 發(fā)表于 2021-5-21 22:16 | 只看該作者
對(duì)比上面的“i”有什么不同
#include <REGX52.H>
void delay(int t);
void main()
{
        char i;
        while(i<=5)
        {
                for(i=0;i<5;i++)
                {
                P2=0x00;
                delay(60000);
                P2=0xff;
                delay(60000);
               // i=i+1;
                }
i=i+1;
        }
   while(1);            
}

void delay(int t)
{
        while(--t);
}
回復(fù)

使用道具 舉報(bào)

地板
ID:917199 發(fā)表于 2021-5-22 08:32 | 只看該作者
taotie 發(fā)表于 2021-5-21 22:10
#include
void delay(int t);
void main()

請(qǐng)注意問(wèn)題是FOR循環(huán)中I>5以后為什么沒(méi)有跳出,而不是點(diǎn)個(gè)破燈!             !!!!!!!!!!!!!!!
回復(fù)

使用道具 舉報(bào)

5#
ID:342822 發(fā)表于 2021-5-22 09:07 | 只看該作者
你沒(méi)有搞懂循環(huán)嵌套--內(nèi)外循環(huán)體
下面程序正常運(yùn)行

#include <REGX52.H>
void delay(int t);
void main()
{
        char i;
        while(i<5)
        {
                for(i=0;i<5;i++)
                {
               
                }
        }
   while(1)
       {
                P2=0x00;
                delay(60000);
                P2=0xff;
                delay(60000);

       }


            
}

void delay(int t)
{
        while(--t);
}
回復(fù)

使用道具 舉報(bào)

6#
ID:917199 發(fā)表于 2021-5-22 09:30 | 只看該作者
taotie 發(fā)表于 2021-5-21 22:16
對(duì)比上面的“i”有什么不同
#include
void delay(int t);

謝謝您的回復(fù),能具體解釋下或者給個(gè)關(guān)鍵詞我去搜索?   用 您的代碼完美的閃爍5次,但結(jié)束循環(huán)的關(guān)鍵是WHILE,I=i+1的位置只改變了閃爍次數(shù)

                                                         
回復(fù)

使用道具 舉報(bào)

7#
ID:917199 發(fā)表于 2021-5-22 09:38 | 只看該作者
taotie 發(fā)表于 2021-5-22 09:07
你沒(méi)有搞懂循環(huán)嵌套--內(nèi)外循環(huán)體
下面程序正常運(yùn)行

您這個(gè)是一直在閃?
回復(fù)

使用道具 舉報(bào)

8#
ID:917199 發(fā)表于 2021-5-22 10:01 | 只看該作者
我不理解之處在于將原代碼改成下面這樣
#include <REGX52.H>
void delay(int t);
void main()
{
        char i;
        while(i<5)
        {
                for(i=0;i<5;i++)
                {
                P2=0x00;
                delay(60000);
                P2=0xff;
                delay(60000);
                i=i+1;
                }
        }               
}
void delay(int t)
{
        while(--t);
}
若干次FOR循環(huán)后i=5跳出,while循環(huán)似乎也跳出了,這時(shí)候P2不是應(yīng)該保持最后的狀態(tài)么,為什么還在閃?  
順便說(shuō)下之前認(rèn)為還閃說(shuō)明沒(méi)跳出while所以迷惑
回復(fù)

使用道具 舉報(bào)

9#
ID:824490 發(fā)表于 2021-5-22 10:14 | 只看該作者
簡(jiǎn)單地說(shuō),就是原代碼是雙重嵌套,while()嵌入for(),for()能跳出,而while()跳不出,所以就一直在while()內(nèi)運(yùn)行。更改的方法也簡(jiǎn)單,單獨(dú)用while()或單獨(dú)用for()就可以了。
i=5
while(i)
{
P2=0x00;
  delay(60000);
  P2=0xff;
   delay(60000);
i--;
}


for(i=0;i<5;i++)
{
P2=0x00;
  delay(60000);
  P2=0xff;
   delay(60000);
}
回復(fù)

使用道具 舉報(bào)

10#
ID:342822 發(fā)表于 2021-5-22 10:28 | 只看該作者
timerzero 發(fā)表于 2021-5-22 09:38
您這個(gè)是一直在閃?

跳出嵌套循環(huán)進(jìn)入最后的死循環(huán)當(dāng)然是
回復(fù)

使用道具 舉報(bào)

11#
ID:342822 發(fā)表于 2021-5-22 10:34 | 只看該作者
用Proteus 8 調(diào)試模式,觀察變量“i”的變化你就明白了~~
回復(fù)

使用道具 舉報(bào)

12#
ID:342822 發(fā)表于 2021-5-22 12:00 | 只看該作者
用Proteus 8 調(diào)試模式,觀察變量“i”的變化。源程序還是跳出FOR循環(huán),只是程序末尾沒(méi)有 while(1);語(yǔ)句他又重新返回執(zhí)行 while(i<5)。



#include <REGX52.H>
void delay(int t);
void main()
{
        char i;
        while(i<5)
        {
                for(i=0;i<5;i++)
                {
                P2=0x00;
                delay(60000);
                P2=0xff;
                delay(60000);
                i=i+1;
                }
        }
while(1);            
}
void delay(int t)
{
        while(--t);
}
回復(fù)

使用道具 舉報(bào)

13#
ID:917199 發(fā)表于 2021-5-22 16:36 | 只看該作者
taotie 發(fā)表于 2021-5-22 12:00
用Proteus 8 調(diào)試模式,觀察變量“i”的變化。源程序還是跳出FOR循環(huán),只是程序末尾沒(méi)有 while(1);語(yǔ)句他 ...

那個(gè)還不會(huì),用的土辦法   代碼里加P1={i];不僅跳出了for循環(huán)還跳出了while循環(huán),
以前一直以為這種情況下cpu是處在空載狀態(tài),什么都不干掛在那里,真沒(méi)想到語(yǔ)句他又重新返回執(zhí)行 while(i<5)
謝謝您的指點(diǎn)
回復(fù)

使用道具 舉報(bào)

14#
ID:917199 發(fā)表于 2021-5-22 16:41 | 只看該作者
名字不是重點(diǎn) 發(fā)表于 2021-5-22 10:14
簡(jiǎn)單地說(shuō),就是原代碼是雙重嵌套,while()嵌入for(),for()能跳出,而while()跳不出,所以就一直在while()內(nèi) ...

感謝回復(fù),原鐵確實(shí)跳不出while,
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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