找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17153|回复: 27
收起左侧

单片机初学者请教软件延时和定时器延时的区别?

  [复制链接]
ID:143584 发表于 2018-11-23 19:51 | 显示全部楼层 |阅读模式
对于软件延时还是定时器延时有点疑惑,为什么说定时器延时不占用单片机时间,书上和视频中都说软件延时占用单片机的扫描时间,会错过一些事件,不都是起一个延时的效果吗,比如 led=0;delay();led=1;delay(); ........
比如第一个delay()不论是软件延时还是定时器延时,都得把延时函数执行完才会执行下一步吧,如像书上和视频中说的定时器延时不占用扫描时间,哪岂不是就跳过delay() 函数了,哪还有什么意义。
回复

使用道具 举报

ID:432075 发表于 2018-11-23 21:36 | 显示全部楼层
定时器延时会使程序进入中断,中断进行中,主程序并不会运行,所以没问题
回复

使用道具 举报

ID:358930 发表于 2018-11-24 07:44 | 显示全部楼层
定时器有专用寄程器的,如你的主程序随便运行,只要定时中断一到就会叫停主程序而执行行定时中断,这个中断可以是点个小灯。如你主程序不停取反闪烁一个灯,定时一到就长亮。你看这不就是你主程序一直运行取反,无论定时到的那一会灯是什么状态,他都会常亮。这样理行能行吗?
回复

使用道具 举报

ID:143584 发表于 2018-11-24 08:07 | 显示全部楼层
背球客 发表于 2018-11-23 21:36
定时器延时会使程序进入中断,中断进行中,主程序并不会运行,所以没问题

你的意思是程序是在中断中进行的,可主程序中往往有很多的状态要扫描的,你说主程序在这个时候是不运行的,哪不是主程序的扫描停止了吗,哪和软件延时还有什么区别,都是停在delay不往下进行,都会错过一些状态的,我的疑惑就在这儿.
回复

使用道具 举报

ID:396960 发表于 2018-11-24 09:21 | 显示全部楼层
1软件延时:
其他执行  --------           --------
延时执行             --------          --------
    看到软件延时像是一般其他执行那样,会占用时间的

2定时器延时:
其他执行 ------- - - - -   --------  - - - -  --------
延时执行         - - - - -            - - - - -
   看到,在定时器计数时,单片机是在做着其他工作,知道定时器加1一次,才回到定时器延时执行。

大概就这么个理解,要深入理解,变成自己的知识,还是多写代码多看书。
回复

使用道具 举报

ID:155507 发表于 2018-11-24 09:21 | 显示全部楼层
用软件延时,CPU 循环执行一小段延时程序。
浪费 CPU 的精力。

用定时器定时,CPU 就可以干别的。
回复

使用道具 举报

ID:155507 发表于 2018-11-24 09:26 | 显示全部楼层
1、软件循环延时:采用循环语句,如for,while等,进行长时间的空操作,或者空语句。
优点:程序理解简易,入手快,新手必备武器!
缺点:时间精度不高,且占用单片机大量时间资源,引发其它子函数的不流畅(卡滞、迟钝),导致系统实时反应能力下降。
2、定时延时:采用定时器定时,如T0,T1;
优点:时间精度高,提高系统程序执行的高效性,不影响子函数的正常运行。
缺点:需占用1个定时器资源(可以复用),需良好程序构架支持,入手难。
个人建议:一旦学会定时器,就不应该再使用“循环延时”函数,采用定时器才是正道。如果对延时精度要求不高,建议使用结构体组成多个延时体。
回复

使用道具 举报

ID:424073 发表于 2018-11-24 09:31 | 显示全部楼层
用软件定时,CPU 循环执行一小段延时程序。 浪费 CPU 的精力。 用定时器定时,CPU 就可以干别的。
回复

使用道具 举报

ID:358930 发表于 2018-11-24 10:05 来自手机 | 显示全部楼层
lwhmgp 发表于 2018-11-24 08:07
你的意思是程序是在中断中进行的,可主程序中往往有很多的状态要扫描的,你说主程序在这个时候是不运行的, ...

那是对的,但中断所以才分优先级别,中断还可以被另一个中断高级别叫停,回归,但延时就只能等待,
回复

使用道具 举报

ID:358930 发表于 2018-11-24 10:10 来自手机 | 显示全部楼层
lwhmgp 发表于 2018-11-24 08:07
你的意思是程序是在中断中进行的,可主程序中往往有很多的状态要扫描的,你说主程序在这个时候是不运行的, ...

所以我们才会引入N多中断优先级,防止延时或者大量不应答器件,死在那里,使得主程序停止,中断有时等于你认为的延
回复

使用道具 举报

ID:432321 发表于 2018-11-24 13:51 | 显示全部楼层
软件延时说白了就是浪费CPU时间而且还有很大的机械抖动,而定时器就不一样他是单片机的内部定时就好像你要2MS的延时,定时器就像CPU雇佣的工人2MS
回复

使用道具 举报

ID:432353 发表于 2018-11-24 14:15 | 显示全部楼层
软件延迟一般时间不精准,定时器就比较准
回复

使用道具 举报

ID:97097 发表于 2018-12-11 17:08 | 显示全部楼层
精度不一样
回复

使用道具 举报

ID:444256 发表于 2018-12-11 17:22 | 显示全部楼层
软件延时会占用cpu,定时器延时的话就好比你在工作的时候还有个小助手来帮你,不用经常打断你的工作
回复

使用道具 举报

ID:367460 发表于 2018-12-11 19:00 | 显示全部楼层
延时函数时CPU会一直纯延时,什么都不干,  而定时器不一样,它在背后跑它自己的,到时间了会进入中断,执行中断函数里的程序,不占用CPU,主程序和定时器互不影响
回复

使用道具 举报

ID:441377 发表于 2018-12-12 15:06 | 显示全部楼层
可以这样理解:定时器延时是让程序跑进定时器里面运行,单片机依旧可以干别的事情,软件延时就是让单片机依旧不停在干活,只不过干的活是无意义纯粹消磨时间的期间单片机干不了别的。
回复

使用道具 举报

ID:421426 发表于 2018-12-13 09:58 来自手机 | 显示全部楼层
只是暂时跳过吧    当中断执行完以后还会继续执行没有完成的程序   等到下次中断时间到了在进去中断就这么循环下去
回复

使用道具 举报

ID:229821 发表于 2019-3-28 09:03 | 显示全部楼层
我可以这样理解吗? 延时是单片机等待,什么都做不了,主程序也不会继续执行。定时器虽然也让主程序不继续执行。但是有多个定时器的话,那多个定时器都还在执行???
回复

使用道具 举报

ID:423528 发表于 2019-3-28 11:10 | 显示全部楼层
定时器延时是利用定时计数,视为外设,计数是一直在进行的,当计数到溢出更新值时产生中断信号,MCU接收到这个信号后,在中断函数中可以处理你要延时之后再执行的代码,在未进入定时中断时间内,MCU同时可以执行其他代码;而普通的延时函数,函数里面的代码是需要MCU一句一句地执行,要占用时间。
回复

使用道具 举报

ID:158375 发表于 2019-3-28 11:17 | 显示全部楼层
举个例子:单片机要点亮1 Minute的LED,软件延时的意思是,从点亮LED开始,单片机什么都不干,等待1 Minute,到时关闭LED;
定时器延时意思就是,从点亮LED开始,设置好定时器延时时间,单片机该干什么就干什么,等到延时器延时时间到了,来个中断,单片机放下当前工作,保存现场参数,响应中断并关闭LED,单片机回复现场参数,接着干原来的工作;
回复

使用道具 举报

ID:467275 发表于 2019-3-28 12:55 | 显示全部楼层
用软件定时,CPU 循环执行一小段延时程序。 浪费 CPU 的精力。浪费资源。
回复

使用道具 举报

ID:499790 发表于 2019-3-28 15:42 | 显示全部楼层
定时器延时准确,依靠晶振。重点是不耽误单片机运行。软件延时消耗的是cpu指令时间。CPU处于暂停(只能执行延时)状态
回复

使用道具 举报

ID:599165 发表于 2019-8-13 23:46 | 显示全部楼层
pingshuenhao 发表于 2019-3-28 15:42
定时器延时准确,依靠晶振。重点是不耽误单片机运行。软件延时消耗的是cpu指令时间。CPU处于暂停(只能执行 ...

说的好呀
回复

使用道具 举报

ID:426861 发表于 2019-8-14 10:01 | 显示全部楼层
软件延时只是傻瓜式的空等,此时延时的优先级高于一切中断,这样做是有风险的
回复

使用道具 举报

ID:425699 发表于 2019-8-14 10:33 | 显示全部楼层
延时不精确,主要是相当于用单片机执行空语句, 而定时器则是精确定时,每隔几ms或us执行一次程序
回复

使用道具 举报

ID:418329 发表于 2019-8-14 11:35 | 显示全部楼层
定时器延时是单机内部硬件延时,不占用软件时间。
回复

使用道具 举报

ID:510570 发表于 2019-8-14 16:02 | 显示全部楼层
你这个问题,可以留着,等你多学习一点,自己就明白了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表