Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
03/06/09 14:50
Read: times


 
#163160 - enum + switch() ... case ... break
Responding to: ???'s previous message
Walter Adrián Quiroga said:
Hi everybody, I need if somebody could help me, I need some example in C of Finite State Machine to apply in 8052.

Let obj be the object you want to control (e.g., a communication protocol). I normally write my code this way:

/// object FSM's states
enum OBJ_STATES {
        OBJ_STATE_INIT,
        OBJ_STATE_1,
        OBJ_STATE_2,
        ...
};

/// object FSM container
struct obj_fsm {
        enum OBJ_STATES state;    ///< current state
        char var1;                ///< variable 1
        char var2;                ///< variable 2
        ...
};

/// actual object FSM
static struct obj_fsm obj_fsm;

/// initialize object
void init_obj (void)
{
        obj_fsm.state = OBJ_STATE_INIT;
}

/// update object FSM state
void update_obj (void)
{
        switch (obj_fsm.state) {

        case OBJ_STATE_INIT:
                ...
                obj_fsm.state = OBJ_STATE_1;
                break;

        case OBJ_STATE_1:
                ...
        }
}
 


I've been using this scheme for a few years and I find it flexible and very easy to follow and understand what I meant the FSM to do even after long time.

List of 8 messages in thread
TopicAuthorDate
FSM Finite State Machine            01/01/70 00:00      
   Clarify            01/01/70 00:00      
      FSM Finite State Machine            01/01/70 00:00      
   enum + switch() ... case ... break            01/01/70 00:00      
      FSM            01/01/70 00:00      
         no struct + transactions            01/01/70 00:00      
            Thank you So Much            01/01/70 00:00      
   SMC - The State Machine Compiler            01/01/70 00:00      

Back to Subject List