发新帖我要提问
12
返回列表
打印

用delay函数,改变你的编程思维

[复制链接]
楼主: 趣味单片机
手机看帖
扫描二维码
随时随地手机跟帖
21
西门看雪| | 2012-11-17 17:46 | 只看该作者 回帖奖励 |倒序浏览
不用定时器用长延时太浪费资源了
zhhbncwu 发表于 2012-11-15 21:47


对于很多人来说用了定时器也是浪费资源!

使用特权

评论回复
22
machunshui| | 2012-11-17 19:35 | 只看该作者
这种 方法颇有点无聊。

现在的单片机一般都有定时器,

抛弃更有效的定时器不用,用这种延时死等1ms,

有什么意义?????

有双脚能跑,非得比赛爬,

有什么意义??

使用特权

评论回复
23
machunshui| | 2012-11-17 19:35 | 只看该作者
同样的方法完全,可以用定时器中断做。

就是一个前后台程序。

使用特权

评论回复
24
machunshui| | 2012-11-17 19:37 | 只看该作者
本帖最后由 machunshui 于 2012-11-17 20:02 编辑

void DoSysTimer()
{
  for(int i = 0; i < MAX_SYSTIMER_CNT; i++)
  {
  if(sysTimer【i】  > 0)
  sysTimer【i】--;
  }
}


void timer_ISR                //1ms定时中断



DoSysTimer();

}



void TASK_A()

{

   //任务A,1s 一次

    if(GetSysTimer(0))

  {

      //Do something

      SetSystimer(0,1000); //1000ms

 }

}


这种定时方法不更好吗,非得delay 1ms 延时???

对于一个1MIPS 速度的单片机,1ms就意味着1000条指令,
而且不用定时,要延时1ms,还真的费点力气,

也许你熟悉51,但是换成PIC呢,换成avr呢,换成msp430呢,
换成lpc2000,换成stm32,stm8呢??

每种你都根据汇编指令,算1ms delay??????

人又多大的精力,非得浪费在这种低效率无聊无意义的事情上面???

电子工程师,总不能只用一种单片机吧?

使用特权

评论回复
25
wm2590| | 2012-11-17 21:44 | 只看该作者
有点晕,不过有点收获!

使用特权

评论回复
26
趣味单片机|  楼主 | 2012-11-18 15:48 | 只看该作者
也就这么一说,让初学者了解时间片的工作原理。至于时间片发生器,当然是定时器好。

使用特权

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

本版积分规则