C语言状态机程序实例
时间: 2024-11-04 15:08:34 浏览: 15
C语言的状态机程序通常用于描述系统的行为模式,通过一系列的状态转换来响应输入或满足特定条件。下面是一个简单的状态机例子,它模拟了一个简单的LED灯控制系统,有三种状态:关闭(OFF)、亮起(ON)和闪烁(FLASH)。
```c
#include <stdio.h>
typedef enum {
LED_OFF,
LED_ON,
LED_FLASH
} LedState;
void setState(LedState state) {
switch (state) {
case LED_OFF:
printf("LED is OFF.\n");
break;
case LED_ON:
printf("LED is ON.\n");
break;
case LED_FLASH:
printf("LED is flashing.\n");
break;
}
}
int main() {
LedState led_state = LED_OFF;
while (1) {
// 用户输入(这里简化为按键控制)
if (getInputFromUser()) { // 假设函数检查用户输入并返回相应状态变化
if (led_state == LED_OFF) {
led_state = LED_ON; // 从关闭到打开
} else if (led_state == LED_ON) {
led_state = LED_FLASH; // 从开到闪
} else {
led_state = LED_OFF; // 从闪到关,然后循环回到开始
}
}
setState(led_state);
// 模拟LED闪烁的延时(这里仅做示例,实际应用需要硬件支持)
sleep(500); // 休眠500毫秒
}
return 0;
}
```
在这个例子中,`setState()` 函数用于更新LED状态,并打印出相应的状态信息。主循环根据用户的输入改变状态,然后调用 `setState()` 更新显示。这个程序展示了如何使用C语言的基本结构来创建一个简单的状态机。
阅读全文