你会如何解决这个有限状态机(摩尔)?

时间:2015-02-03 01:39:21

标签: state-machine

我正在尝试使用摩尔的机器来解决这个问题,但我有点困惑。我不知道需要多少个州。

输入:

  • A(开关):在自动和手动模式之间切换。
  • P(按钮):按下时为高电平。
  • D(运动检测器):如果检测到运动则给出高水平

输出:

  • L(灯)。

条件:

  • 如果我们处于手动模式,如果我们按下" P" L将改变(从0到1)或(1到0)。我们需要再次按下按钮再次更改L(握住手指无效)。
  • 如果我们处于自动模式,L将启用,而#34; D"检测运动。
  • 用户永远不会推送" A"和" P"在同一时间。
  • 当您从自动更改为手动或手动更改为自动时,指示灯必须通过低电平。
  • 当您从自动更改为手动时,灯泡将保持高水平,同时检测到移动。

最大的问题是最后的条件。我不知道如何处理它们。我是否需要为这些条件创建额外状态?你会采取什么步骤来解决这个问题?

提前致谢

1 个答案:

答案 0 :(得分:1)

首先,为自动和手动情况设计单独的有限状态机。自动外壳只需要两种状态(灯开或关)。手动外壳需要4种状态来跟踪自上次按下后按钮是否已被释放。

然后根据开关A的值在这些机器之间添加转换。仅在灯关闭的状态之间添加转换。这将确保最后两个条件成立。如果在切换A时灯泡亮起,则在机器转换到关闭灯泡之前不会发生任何事情。状态。