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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2620|回復(fù): 12
收起左側(cè)

51單片機(jī)走馬燈程序問題求解

[復(fù)制鏈接]
ID:384762 發(fā)表于 2018-8-9 20:32 | 顯示全部樓層 |閱讀模式
#include "reg52.h"
#define LED P0
void main()
{
unsigned int i=0;
unsigned int j=0;
while(1)
{
for(i=0;i<8;i++)
{
LED=(0x01<<i);
for(j=0;j<20000;j++);
}
for(i=0;i<8;i++)
{
LED=(0x08>>i);/*將0x08改成LED為什么效果不一樣,此處的LED不也是等于0x08嗎*/
for(j=0;j<20000;j++);
}
}
}

回復(fù)

使用道具 舉報(bào)

ID:384762 發(fā)表于 2018-8-9 20:34 | 顯示全部樓層
注釋的地方改成0x08可以正常運(yùn)行,但是換成LED則回到PO.1對應(yīng)的燈的時(shí)候回來就不亮,去的時(shí)候沒問題
回復(fù)

使用道具 舉報(bào)

ID:135253 發(fā)表于 2018-8-9 22:29 | 顯示全部樓層
#define LED P0,這句話看看
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2018-8-10 10:34 | 顯示全部樓層
fandongyang 發(fā)表于 2018-8-9 20:34
注釋的地方改成0x08可以正常運(yùn)行,但是換成LED則回到PO.1對應(yīng)的燈的時(shí)候回來就不亮,去的時(shí)候沒問題

此處的LED不是等于0x08,是0x80。
回復(fù)

使用道具 舉報(bào)

ID:384901 發(fā)表于 2018-8-10 10:53 | 顯示全部樓層
define是直接替換的,所以你這程序里的LED就是P0,不是P0的值。
多寫代碼,多理解。
回復(fù)

使用道具 舉報(bào)

ID:384902 發(fā)表于 2018-8-10 13:38 | 顯示全部樓層
從高到低位   
回復(fù)

使用道具 舉報(bào)

ID:279667 發(fā)表于 2018-8-10 14:21 | 顯示全部樓層

#include "reg52.h"
#define LED P0
void main()
{
unsigned int i=0;
unsigned int j=0;
while(1)
{
for(i=0;i<8;i++)
{
LED=(0x01<<i);  //這句話的意思是讓1向左偏移i位,二進(jìn)制結(jié)果為:0000 0001,0000 0010,0000 0100,0000 1000,0001 0000,0010 0000,0100 0000,1000 0000
for(j=0;j<20000;j++);
}
for(i=0;i<8;i++)
{
LED=(0x08>>i);//這里的數(shù)值應(yīng)該是0x80吧?  等于是把上面的二進(jìn)制數(shù)慢慢的再退回來。
for(j=0;j<20000;j++);
}
}
}
回復(fù)

使用道具 舉報(bào)

ID:384762 發(fā)表于 2018-8-10 19:50 | 顯示全部樓層
mrhan1992 發(fā)表于 2018-8-10 14:21
#include "reg52.h"
#define LED P0
void main()

如果我把
LED=(0x08>>i);//這里的數(shù)值應(yīng)該是0x80吧?  等于是把上面的二進(jìn)制數(shù)慢慢的再退回來。
這句話的0x08用LED替換就是這樣,
LED=(LED>>i);燈在回來的時(shí)候就不會亮了,就是0000 0001對應(yīng)的燈不亮了
回復(fù)

使用道具 舉報(bào)

ID:284969 發(fā)表于 2018-8-11 09:27 | 顯示全部樓層
其實(shí)這個(gè)問題不復(fù)雜,你改成LED也可以的,但是你必須先要對LED初始化一下,就是賦初值,就可以這么寫了,你直接將0x08換成LED,系統(tǒng)并不知道LED具體代表的是什么數(shù),理解了嗎?
回復(fù)

使用道具 舉報(bào)

10#
無效樓層,該帖已經(jīng)被刪除
ID:384717 發(fā)表于 2018-8-11 10:58 | 顯示全部樓層
#define LED P0 改為led=P0
回復(fù)

使用道具 舉報(bào)

ID:384762 發(fā)表于 2018-8-11 11:19 | 顯示全部樓層
zwwstar 發(fā)表于 2018-8-11 09:27
其實(shí)這個(gè)問題不復(fù)雜,你改成LED也可以的,但是你必須先要對LED初始化一下,就是賦初值,就可以這么寫了,你 ...

可是那時(shí)候我將LED換成0x08的地方,LED的值不也就是0x08嗎
回復(fù)

使用道具 舉報(bào)

ID:385283 發(fā)表于 2018-8-11 16:01 | 顯示全部樓層
#include "reg52.h" #define LED P0 void main() { unsigned int i=0;  unsigned int j=0; while(1) { for(i=0;i<8;i++) { LED=(0x01<<i);  //這句話的意思是讓1向左偏移i位,二進(jìn)制結(jié)果為:0000 0001,0000 0010,0000 0100,0000 1000,0001 0000,0010 0000,0100 0000,1000 0000 for(j=0;j<20000;j++); } for(i=0;i<8;i++) { LED=(0x08>>i);//這里的數(shù)值應(yīng)該是0x80吧?  等于是把上面的二進(jìn)制數(shù)慢慢的再退回來。 for(j=0;j<20000;j++); } } }
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2018-8-11 16:54 | 顯示全部樓層
//如果寫成LED=LED<<i,初次循環(huán)i=0,LED值不變=0x01,下次循環(huán)i=1,LED值=0x02,再次循環(huán)i=2,LED值=0x08。
//第4次循環(huán)LED值=0x40,到第5次循環(huán)就溢出了。第二個(gè)for循環(huán)錯(cuò)誤的道理是一樣的。改成如下這樣才合理。
#include "reg52.h"
#define LED P0
void main()
{
        unsigned int i=0;
        unsigned int j=0;
        LED=0x01;//賦初值
        for(j=0;j<20000;j++);//延時(shí)
        while(1)
        {
                for(i=0;i<7;i++)
                {
                        LED=LED<<1;
                        for(j=0;j<20000;j++);
                }
                for(i=0;i<7;i++)
                {
                        LED=LED>>1;
                        for(j=0;j<20000;j++);
                }
        }
}
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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