State Machines, as you noted, are easy to do with C. I think the added value in this respect is that this makes it much easier to manage the State Machines. I often hear guys at work complaining about how they'd like to switch to using an RTOS because the codebase is a tangled mess of State Machines (not that the two are mutually exclusive of course). Having said that, I seem to remember there is a tool dedicated to creating State Machines that compile down to C - the name escapes me however.