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

標題: 初學單片機求解 [打印本頁]

作者: sz15207554653    時間: 2016-9-19 21:48
標題: 初學單片機求解
/***********************************************************************
                          點亮LED燈
***********************************************************************/
#include<reg52.h>

sbit LED0=P2^0;

void Delay10ms(unsigned int ms);

void main()
{
    P2=0xc0;
    while(1)
            {
                   LED0=1;
                }


}

為啥第一顆燈老是亮,為什么?小蝦一枚


作者: sz15207554653    時間: 2016-9-19 21:50
P2=0x02;時第一顆燈還是亮的?怎么回事啊?
作者: npn    時間: 2016-9-20 07:17
延遲程序里的循環語句哪里去了?
作者: sz15207554653    時間: 2016-9-20 10:33
npn 發表于 2016-9-20 07:17
延遲程序里的循環語句哪里去了?

我只是點亮某一顆LED,不需要延遲啊!
作者: npn    時間: 2016-9-20 19:19
sz15207554653 發表于 2016-9-19 21:50
P2=0x02;時第一顆燈還是亮的?怎么回事啊?

0x02 二進制等于 10, P2.0等于0也就是GND LED另一端接的VCC 當然要亮。
寫個流水燈程序之類的,那個燈亮滅不能改變則是那個IO口壞了或線路有短路或開路。


作者: 李志博32    時間: 2016-9-20 19:50
沒有原理圖嗎?   高電平亮還是低電平亮;  如果是低電平點亮的話,你的P2=0xc0;  二進制位1100 0000,除了P2.7 P2.6  其余的都是低電平,  while(1)中,P2.0=1; 意味著此時  P2=(1100 0001)B;
作者: jinsheng7533967    時間: 2019-2-2 01:25
其實你范錯就只是敲錯一個字符,下面看正確的:

#include<reg52.h>

sbit LED0=P2^0;

void Delay10ms(unsigned int ms);

void main()
{
    P2=0x00; //P2口全置低//P2=0xC0;這是你的,一個字符之差,估計你超PDF上的資料沒看清所致

    while(1)
        {
                LED0=1;
        }       
}

我們再來談談,開機后沒給P1,P2,P3,P0值時他們是高電平還是低電平

#include<reg52.h>
sbit LED0=P2^0;

void Delay10ms(unsigned int ms);

void main()
{
   
    while(1);
}

結果如下圖


結果是除P0外全都是高電平,
所以,你只要P2口只亮一個燈,就得先將P2口全部置低,這樣當你LED0=1時才亮一個燈
至于P0口為什么不是高電平,那是因為他內部是開漏設計




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1