簡體   English   中英

為 8051 執行特定時間段

[英]Executing for specific period of time for 8051

請幫個忙,

我正在使用 MikroC 編譯器為 8051 微控制器編寫程序,我試圖找到一種方法來執行並重復主程序 10 秒,然后停止 2 秒

下面的代碼只是一個例子,我需要每 200 毫秒切換端口 2,重復 10 秒,然后停止 2 秒,然后重復此操作。

void main()
{
    P2 = 0xAE;

    while (1) {
        P2 = ~P2;
        Delay_ms(200);
    }
}

謝謝

您可以使用計數器來測量時間:例如:

#define MS_PER_TICK       200
#define BLINK_PERIOD_IN_S 10
#define PAUSE_PERIOD_IN_S 2

#define BLINK_PERIOD_IN_TICKS (BLINK_PERIOD_IN_S * 1000 / MS_PER_TICK)
#define PAUSE_PERIOD_IN_TICKS (PAUSE_PERIOD_IN_S * 1000 / MS_PER_TICK)

void main(void) {
    unsigned char ticks = 0;

    P2 = 0xAE;

    for (;;) {
        Delay_ms(MS_PER_TICK);
        ticks++;

        if (ticks <= BLINK_PERIOD_IN_TICKS) {
            P2 = ~P2;
        }
        if (ticks == BLINK_PERIOD_IN_TICKS + PAUSE_PERIOD_IN_TICKS) {
            ticks = 0;
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM