jianhong_wu 发表于 2014-12-17 19:11:49

鸿哥所谓的状态机结构大概是什么样的思路?已解答。

本帖最后由 jianhong_wu 于 2014-12-17 19:13 编辑

MCU编程-华力:
鸿哥能写个状态机裸结构框架的介绍吗?这样会让更多初学者能够看懂读懂后面的内容.一上来就将状态机结构很多初学者看的西路糊涂.可以举一个思路吗?具体灵活应用,可以举一反三。


鸿哥-深圳:
你看我“第三节:累计主循环次数使LED灯闪烁”,这些讲的很清晰了。
void led_flicker() ////第三区 LED闪烁应用程序
{

switch(ucLedStep)
{
   case 0:
/* 注释三:
* uiTimeCnt累加循环次数,只有当它的次数大于或等于设定上限const_time_level时,
* 才会去改变LED灯的状态,否则CPU退出led_flicker()任务,继续快速扫描其他的任务,
* 这样的程序结构就可以达到多任务并行处理的目的。
* 本程序基于坚鸿51单片机学习板
*/
          uiTimeCnt++;//累加循环次数,
                  if(uiTimeCnt>=const_time_level) //时间到
                  {
                     uiTimeCnt=0; //时间计数器清零
             led_dr=1;    //让LED亮
                         ucLedStep=1; //切换到下一个步骤
                  }
            break;
   case 1:
          uiTimeCnt++;//累加循环次数,
                  if(uiTimeCnt>=const_time_level) //时间到
                  {
                     uiTimeCnt=0; //时间计数器清零
             led_dr=0;    //让LED灭
                         ucLedStep=0; //返回到上一个步骤
                  }
            break;

}

}

你看看我是怎么样通过切换switch(ucLedStep)中ucLedStep这个变量,来根据不同的条件跳到不同的case 中,这个是万能的状态机思路。

MCU编程-华力:
状态机程序我写过,每一层依据上一层的判断来进行下一层的执行。没有你的灵活。

鸿哥-深圳:
是的。但是我想说的是,我的连载《从业将近十年!手把手教你单片机程序框架》不仅仅是状态机,它有我很多独特的项目框架模板在里面,比如按键,显示,跑马灯,串口他们的模板框架。

MCU编程-华力:
看出来了,的确很灵活,不只是依据当前状态切换到下一状态这么固定。

鸿哥-深圳:
对。你可以根据需要跳到任意一个case。

MCU编程-华力:
恩,我再好好看看。谢谢鸿哥。


页: [1]
查看完整版本: 鸿哥所谓的状态机结构大概是什么样的思路?已解答。