|
发表于 2012-5-11 10:29:45
|
显示全部楼层
C++状态机Demo- #include "proj_incs.h"
- class VSTATE_SCHED_DEMO_CLASS:public VSTATE_SCHED_CLASS
- {
- private:
-
- VSTATE_DeclarationIn(VSTATE_SCHED_DEMO_CLASS,VSTATE_0); //声明一个状态VSTATE_0
- VSTATE_DeclarationIn(VSTATE_SCHED_DEMO_CLASS,VSTATE_1); //声明一个状态VSTATE_1
- VSTATE_DeclarationIn(VSTATE_SCHED_DEMO_CLASS,VSTATE_2); //声明一个状态VSTATE_2
- VSTATE_DeclarationIn(VSTATE_SCHED_DEMO_CLASS,VSTATE_3); //声明一个状态VSTATE_3
-
- public:
- void Init(void);
- };
- VSTATE_SCHED_DEMO_CLASS VSTATE_SCHED_DEMO;
- void VSTATE_SCHED_DEMO_CLASS::Init(void)
- {
- *this<<VSTATE_OBJECT(VSTATE_0); //设置状态机初始状态为VSTATE_0
- }
- //------------------------------------------------------------------
- //VSTATE_0 实现
- VSTATE_ImplementationIn(VSTATE_SCHED_DEMO_CLASS,VSTATE_0)
- {
- //ENTER: LED_0亮,LED_3灭----------------------------
- if(this->GetEnterFlagAndClear())
- {
- GPIO_LED_0<<IO_ON; //LED_0亮
- GPIO_LED_3<<IO_OFF; //LED_3灭
-
- *this<<VSTATE_OBJECT(VSTATE_1)<<1000;
- //设置状态机下一个状态为VSTATE_1,并延时1000ms
- }
-
- //Do:空-----------------------------------------------------------
-
-
- //EXIT:空---------------------------------------------------------
- return ;
- }
- //------------------------------------------------------------------
- //VSTATE_1 实现
- VSTATE_ImplementationIn(VSTATE_SCHED_DEMO_CLASS,VSTATE_1)
- {
- //ENTER: LED_1亮,LED_0灭----------------------------
- if(this->GetEnterFlagAndClear())
- {
- GPIO_LED_1<<IO_ON; //LED_1亮
- GPIO_LED_0<<IO_OFF; //LED_0灭
-
- *this<<VSTATE_OBJECT(VSTATE_2)<<1000;
- //设置状态机下一个状态为VSTATE_2,并延时1000ms
- }
-
- //Do: 空-----------------------------------------------------------
-
-
- //EXIT: 空---------------------------------------------------------
- return ;
- }
- //------------------------------------------------------------------
- //VSTATE_2 实现
- VSTATE_ImplementationIn(VSTATE_SCHED_DEMO_CLASS,VSTATE_2)
- {
- //ENTER: LED_2亮,LED_1灭----------------------------
- if(this->GetEnterFlagAndClear())
- {
- GPIO_LED_2<<IO_ON; //LED_2亮
- GPIO_LED_1<<IO_OFF; //LED_1灭
-
- *this<<VSTATE_OBJECT(VSTATE_3)<<1000;
- //设置状态机下一个状态为VSTATE_3,并延时1000ms
- }
- //Do: 空-----------------------------------------------------------
-
-
- //EXIT: 空---------------------------------------------------------
- return ;
- }
- //------------------------------------------------------------------
- //VSTATE_3 实现
- VSTATE_ImplementationIn(VSTATE_SCHED_DEMO_CLASS,VSTATE_3)
- {
- //ENTER: LED_3亮,LED_2灭----------------------------
- if(this->GetEnterFlagAndClear())
- {
- GPIO_LED_3<<IO_ON; //LED_3亮
- GPIO_LED_2<<IO_OFF; //LED_0灭
-
- *this<<VSTATE_OBJECT(VSTATE_0)<<1000;
- //设置状态机下一个状态为VSTATE_0,并延时1000ms
- }
-
- //Do: 空-----------------------------------------------------------
-
-
- //EXIT: 空---------------------------------------------------------
- return ;
- }
- int main()
- {
- VSTATE_SCHED_DEMO.Init();
- while(1)
- {
- VSTATE_SCHED_DEMO.Do();
- }
- }
复制代码 |
|