打印

大家看下,这样的程序时序该怎么修改?

[复制链接]
1501|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mrainborn|  楼主 | 2009-3-10 09:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有主函数:
main()
{
    .........
    .........
    for(;;)
    {
      ........
      ........
      switch(a)
      {
        case 1:
               mode1();
               break;
        case 2: 
               mode2();
               break;
        case 3:
               mode3();
               break;
      }
      ............
      ............
    }
}

每个子函数mode 的结构是这样的

mode1()
{
   .........
   .........
   switch(b)
   {
     case 1:
            .......
            .......
            .......
            b=2;
            break;
     case 2:
            .......
            .......
            .......
            b=3;
            break;
     case 3:
            .......
            .......
            .......
            b=4;
            break;
     case 5:
            .......
            .......
            .......
            b=1;
            break;
   }
}
在mode函数中,每个case执行完毕后,将b赋值,再运行到mode函数中,则进入令一阶段

出现的问题在这里:
出现的问题在这里:
出现的问题在这里:
出现的问题在这里:

在mode 函数中,是有时间判断的条件语句

if(time1>settime)
{
   b=3;
}
time1 为1ms定时器中的计数变量
settime 为设置值
若设置值为60ms,则在time1=59ms,没有执行次条件判断中内容,b没有赋值,程序向下运行,直道从主函数又到这里,才给
b赋值,这样的话,中间的时间差就会造成误差了。

各位大虾有没有好时序走向,说说看


相关帖子

沙发
ayb_ice| | 2009-3-10 20:49 | 只看该作者

这种情况time1肯定只能由主程序循环改变值

使用特权

评论回复
板凳
渤海三叠浪| | 2009-3-10 22:12 | 只看该作者

建议!!

很可能一种可行的办法是:把原来的思路彻底的从脑袋中删除,另外再想个思路!

使用特权

评论回复
地板
wjy1107| | 2009-3-12 15:41 | 只看该作者

加个中断函数吧,有点像时间片的东西。

其他不用改变,只是建立一个软中断函数,将b=3这样修改状态的东东,放到里面做。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

69

帖子

0

粉丝