在 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;
}
}
}

最新更新