导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→时间编程问题[defoe99]

 *第35439篇: 时间编程问题

  
楼 主:defoe99 2005年11月2日08:52
 时间编程问题
mcu有两个定时器,  其中一个定时器用了1秒中断一次,   现在有个问题就是

比如按设置键3秒进入设置模式, 和 在设置过程中如果5秒没有相应, 就退出设置模式,  这个计时怎么实现的? 我想了半天,都是不能用 空指令实现,如果用空指令,就会使 显示子程序停止工作几秒.

怎么办? 怎么实现啊.

  
2楼:terryhappy 2005年11月4日19:04
 可以这样
做了个框架,可以试试看(可以用另外一个定时器做显示.)

void main(void)
{
    ....
    ToEnableTimer1Interruption(); //允许定时器1中断
    ToEnableTimer2Interruption(); //允许定时器2中断
    
    Delayvalue=0;
    while(key==0)//设置按钮按下
    {
       DelayNS();
       flag=1;
    }
    flag=0;
    if(Delayvalue>  =3)
    {
       ToEnterSetMode(); //进入设置模式
    }
  ....
}

void ToEnterSetMode(void)
{
     Delayvalue=0;
     flag=1;//允许记时
     while(Delayvalue  <=5) 
     {
       WaitResponse();//等待响应
     }  
    Delayvalue=0;
    flag=0;
}

void WaitResponse()
{
    ...
    if(TaskIsFinished)  //设置任务完成
      {
         Delayvalue=6;
      }
   
}
void Timer1(void)
{
      ...
      if(flag==1);
       {
          Delayvalue=Delayvalue+1;
       }
}

  
3楼:哈佛 2005年11月5日23:31
 还是会做一些空的任务。
要做到不做空程

还是会做一些空的任务。
要做到不做空程序,就使用类系统。如下:

main()
{
........
if(TimeCt>  =3)
    执行设置模式
.......
}
void UserTask()
{

//one min task.
如果 One_Min_Task_True:
        TimeCt++;
         清One_Min_Task标志;
       break;
//two min task.
.............
}

  
4楼:yyjasen 2005年11月8日12:07
 就是说[原创]
用状态来控制,比如设置一些标志位,或者使用switch...case...
是不是这样???哈拂同志

>>>>>>对该主题发表你的看法

本主题贴数4,分页: [第1页]


[上一篇主题]:关于计算机串口转并口的IC和方法

[下一篇主题]:[求助]8051与8253相连,如何知道8253的各计数器和控制寄存器地址是什么