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

標題: 小白請教一個單片機AT89C51的問題,兩個LED輪流點亮500ms 求思路 [打印本頁]

作者: 479674001    時間: 2020-3-5 21:44
標題: 小白請教一個單片機AT89C51的問題,兩個LED輪流點亮500ms 求思路
他的要求是p0.0、p0.1相連的兩個LED輪流點亮500ms,想了很久沒想出來,大佬能給一個具體思路嗎

作者: lovexulu    時間: 2020-3-5 22:38
你好,輪流點亮,我理解為P0.0亮500ms然后熄滅,接著P0.1亮500ms然后熄滅,然后P0.0亮500ms。。。。。循環(huán)下去。那么轉(zhuǎn)化成這么理解,P0.0輸出-->延遲500ms-->P0.0停止輸出-->P0.1輸出-->延遲500ms-->P0.1停止輸出。完成一循環(huán),那么我把上面步驟放入循環(huán)體中不就可以了嗎?授人與魚不如授人與漁,還請你多多思考一下。
作者: CZ1    時間: 2020-3-5 22:41
使用定時器計時,每500ms改變一次兩個小燈狀態(tài)。初始狀態(tài)相反。
作者: hantu    時間: 2020-3-5 22:51
while(1)
{
    P0^0=~P0^0;
    P0^1=~P0^0;
    DelayMs(500);  //延時500ms,這個子函數(shù)自己寫吧
}
作者: 想進步要學(xué)習(xí)    時間: 2020-3-5 22:57
while(1)
{
  LED1亮;
  延時500ms;
  LED1滅;
  LED2亮;
  延時500ms;
  LED2滅;
}
你要這樣子嗎?
作者: wulin    時間: 2020-3-6 07:59
這種邏輯功能可以有多種寫法,僅舉2例種供樓主參考。
#include "reg52.h"
sbit led1=P0^0;
sbit led2=P0^1;
void delay(unsigned int i)
{
  while(i--);
}
void main()
{
        led1=0;
        delay(55500);
        while(1)
        {
                led2=led1;
                led1=~led1;
                delay(55500);
        }
}

#include "reg52.h"

void delay(unsigned int i)
{
  while(i--);
}
void main()
{
        P0=0xfe;
        delay(55500);
        while(1)
        {
                P0=P0<<1|0x01;
                delay(55500);
                P0=P0>>1|0x80;
                delay(55500);
        }
}

作者: hghvhgv    時間: 2020-3-6 10:49
用延時函數(shù)就行
作者: 479674001    時間: 2020-3-6 12:11
lovexulu 發(fā)表于 2020-3-5 22:38
你好,輪流點亮,我理解為P0.0亮500ms然后熄滅,接著P0.1亮500ms然后熄滅,然后P0.0亮500ms。。。。。循環(huán) ...

謝謝謝謝
作者: 479674001    時間: 2020-3-6 12:11
感謝幫助我的大佬,我就不一一回復(fù)了




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