鸿哥所谓的状态机结构大概是什么样的思路?已解答。
本帖最后由 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]