找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

小白請教一個單片機AT89C51的問題,兩個LED輪流點亮500ms 求思路

[復(fù)制鏈接]
ID:659173 發(fā)表于 2020-3-5 21:44 | 顯示全部樓層 |閱讀模式
他的要求是p0.0、p0.1相連的兩個LED輪流點亮500ms,想了很久沒想出來,大佬能給一個具體思路嗎
回復(fù)

使用道具 舉報

ID:687694 發(fā)表于 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)體中不就可以了嗎?授人與魚不如授人與漁,還請你多多思考一下。
回復(fù)

使用道具 舉報

ID:560467 發(fā)表于 2020-3-5 22:41 | 顯示全部樓層
使用定時器計時,每500ms改變一次兩個小燈狀態(tài)。初始狀態(tài)相反。
回復(fù)

使用道具 舉報

ID:462827 發(fā)表于 2020-3-5 22:51 | 顯示全部樓層
while(1)
{
    P0^0=~P0^0;
    P0^1=~P0^0;
    DelayMs(500);  //延時500ms,這個子函數(shù)自己寫吧
}
回復(fù)

使用道具 舉報

ID:633559 發(fā)表于 2020-3-5 22:57 | 顯示全部樓層
while(1)
{
  LED1亮;
  延時500ms;
  LED1滅;
  LED2亮;
  延時500ms;
  LED2滅;
}
你要這樣子嗎?
回復(fù)

使用道具 舉報

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

使用道具 舉報

ID:559684 發(fā)表于 2020-3-6 10:49 | 顯示全部樓層
用延時函數(shù)就行
回復(fù)

使用道具 舉報

ID:659173 發(fā)表于 2020-3-6 12:11 | 顯示全部樓層
lovexulu 發(fā)表于 2020-3-5 22:38
你好,輪流點亮,我理解為P0.0亮500ms然后熄滅,接著P0.1亮500ms然后熄滅,然后P0.0亮500ms。。。。。循環(huán) ...

謝謝謝謝
回復(fù)

使用道具 舉報

ID:659173 發(fā)表于 2020-3-6 12:11 | 顯示全部樓層
感謝幫助我的大佬,我就不一一回復(fù)了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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