位置:51电子网 » 技术资料 » 汽车电子

MAIN函数中的运行状态处理程序

发布时间:2012/6/12 20:54:05 访问次数:875

    变量TopWorkStep记录工作MAX913CSA+步数的顶部。如上例,TopWorkStep将从O开始逐渐增加到5,虽执行完第5步后要返回第3步执行,但变量TopWorkStep将维持5不变。
    变量LoopStep记录当前设有循环标志的工作步数,如上例中LoopStep等于5;变量pLoopStep记录上一次设有循环标志的工作步数,如上例中pLoopStep=3。变量pWorkStep用于辅助说明当前工作步数已发生变化,要求根据当前的工作步数重新读取相应变量并赋值。
    变量WorkTim用于记录当前步的工作时间,即它等于每步4字节参数中的第3个字节(无循环标志时),或者将第3个字节减去100(有循环标志时);变量wLoopNum表示当前循环次数,即它由4字节参数中的第4字节来赋值,并在内部小循环一次后减1。运行状态的流程如图7所示。
    在运行状态中,有一个精度为0. Is的软件定时器sTI在起着重要作用,正是它推动着工作步数一步一步地往前进或者往后退。每当执行到一个新的工作时,舍读取4字节的参数,第1、2字节被送到74HC595芯片中;第3字节为当前步的工作时间,这
个值用来设置sTl。如该值为15,那么sT1将会在1.5s后执行时间11H无线电己011到的相关处理代码。如果当前步是循环点且循环次数控制变量wLoopNum还未减到O,则令WorkStep等于pLoopStep,将循环标志wLoop景1,循环次数控制变量wLoopNum减1。如果当前是循环点但循环次数已减为0,说明内部的小循环结束,令WorkStep加1,清循环标志wLoop,更新pLoopStep,令其等于LoopStep,而LoopStep则变为O。如果当前步不是循环点,那么直接令WorkStepjJ[Il即可。
    另外一个重要的变量LoopStep的设置是在每次WorkStep发生变化以后,WorkStep是在sT1定时时间到以后发生的变化,此时变量pWorkStep尚未发生变化,因此程序行:
    if(pWorkStep!=WorkStep)
    满足要求,将执行从93C46中读取参数的程序。如果当前有循环标志(第3字节大于100),则根据TopWorkStep是否等于WorkStep来判断当前是否是最离步。如果是,则令变量LoopStep等于WorkStep。
    另一个重要的变量是循环次数wLoopNum,前面提到这个变量的减1操作,那么它的赋值操作就在读取当前步的4字节参数之后。在参数读取完毕后,根据变量mLoop是否为1来判断当前是否正工作于内部小循环中。如果正在工作于内部小循环中,则不必更新变量wLoopNum,否则说明有进入内部小循环的请求且还没有设定wLoopNum,那就根据读到的第4字节来更新wLcopNum。
    在设置过程中其他的操作还有对显示缓冲区的操作,将WorkStep显示在数码管的第2、3位上,这个工作在每次循环中进行一次。
    变量TopWorkStep记录工作MAX913CSA+步数的顶部。如上例,TopWorkStep将从O开始逐渐增加到5,虽执行完第5步后要返回第3步执行,但变量TopWorkStep将维持5不变。
    变量LoopStep记录当前设有循环标志的工作步数,如上例中LoopStep等于5;变量pLoopStep记录上一次设有循环标志的工作步数,如上例中pLoopStep=3。变量pWorkStep用于辅助说明当前工作步数已发生变化,要求根据当前的工作步数重新读取相应变量并赋值。
    变量WorkTim用于记录当前步的工作时间,即它等于每步4字节参数中的第3个字节(无循环标志时),或者将第3个字节减去100(有循环标志时);变量wLoopNum表示当前循环次数,即它由4字节参数中的第4字节来赋值,并在内部小循环一次后减1。运行状态的流程如图7所示。
    在运行状态中,有一个精度为0. Is的软件定时器sTI在起着重要作用,正是它推动着工作步数一步一步地往前进或者往后退。每当执行到一个新的工作时,舍读取4字节的参数,第1、2字节被送到74HC595芯片中;第3字节为当前步的工作时间,这
个值用来设置sTl。如该值为15,那么sT1将会在1.5s后执行时间11H无线电己011到的相关处理代码。如果当前步是循环点且循环次数控制变量wLoopNum还未减到O,则令WorkStep等于pLoopStep,将循环标志wLoop景1,循环次数控制变量wLoopNum减1。如果当前是循环点但循环次数已减为0,说明内部的小循环结束,令WorkStep加1,清循环标志wLoop,更新pLoopStep,令其等于LoopStep,而LoopStep则变为O。如果当前步不是循环点,那么直接令WorkStepjJ[Il即可。
    另外一个重要的变量LoopStep的设置是在每次WorkStep发生变化以后,WorkStep是在sT1定时时间到以后发生的变化,此时变量pWorkStep尚未发生变化,因此程序行:
    if(pWorkStep!=WorkStep)
    满足要求,将执行从93C46中读取参数的程序。如果当前有循环标志(第3字节大于100),则根据TopWorkStep是否等于WorkStep来判断当前是否是最离步。如果是,则令变量LoopStep等于WorkStep。
    另一个重要的变量是循环次数wLoopNum,前面提到这个变量的减1操作,那么它的赋值操作就在读取当前步的4字节参数之后。在参数读取完毕后,根据变量mLoop是否为1来判断当前是否正工作于内部小循环中。如果正在工作于内部小循环中,则不必更新变量wLoopNum,否则说明有进入内部小循环的请求且还没有设定wLoopNum,那就根据读到的第4字节来更新wLcopNum。
    在设置过程中其他的操作还有对显示缓冲区的操作,将WorkStep显示在数码管的第2、3位上,这个工作在每次循环中进行一次。

上一篇:程序编写

上一篇:复费率电能表

热门点击

 

推荐技术资料

频谱仪的解调功能
    现代频谱仪在跟踪源模式下也可以使用Maker和△Mak... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!