这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 基础知识每日一题——第十三题

共11条 1/2 1 2 跳转至

基础知识每日一题——第十三题

高工
2014-06-20 09:36:50     打赏
       活动简介:

“每日一题”是EEPW参考西电XDLab社推出的旨向初学者普及基础知识的一项活动,每天在此帖内公布“每日一题”的题目。大家可以根据自己的理解对题目进行回答和相互讨论,我们鼓励大家积极发言。第二天会给出参考答案。每天一帖,所有的题目都将汇集至此,以期方便大家查找。

 

活动宗旨:

活动目的在于通过“每日一题”让大家每天进步一点点,增强大家的基础知识,提高大家对电子制作的兴趣。我们鼓励大家积极发言,如果不懂、是菜鸟,请积极发问;如果懂、是大神,请慷慨解囊。


        今日题目:【单片机中的延时】

       1. 51系列单片机中延时的方式有哪些,分别怎么实现

       2. 影响软件延时和定时器延时的因素有哪些

       3. 软件延时和定时器延时各有哪些优劣


       参考答案:7L





基础知识每日一题



关键词: 单片机延时     51单片机     基础知识    

专家
2014-06-20 10:27:00     打赏
2楼
软件延时相当于瞎等cpu就休息了,定时器延时cpu可以进行其他的工作。

助工
2014-06-20 20:02:47     打赏
3楼

刚开始学习51时只会用软件延时,让计算机对指令机器周期计数来达到延时  常用ACALL DELAY

对于12MHZ的晶振,一个机器周期是1us,利用DJNZ来自减循环 

后来知道有定时器  有4中工作方式

影响软件延时的我觉得就是晶振了,晶振的频率会影响机器周期

影响定时器延时的想不出   

软件延时是对循环体内的指令机器数进行计数,定时器延时是采用加法计数器直接对机器周期进行计数。

定时器延时相比软件延时比较方便 和更精确    并且占用CPU少 

软件延时就感觉写程序简单点,容易入手

刚接触51不久,也因为工作的关系,学习51 断断续续,还要继续学习


高工
2014-06-20 23:03:47     打赏
4楼

童鞋们都上哪了。。。

这题目出的,被后面题目提醒,1题有答案了。

 

1. 51系列单片机中延时的方式有哪些,分别怎么实现 
-  软件延时和定时器延时。

   软件延时:浪费CPU的时间(整点NOP啥的,使劲地循环)

   定时器:CPU不用那么累了,可以当甩手掌柜了。

 2. 影响软件延时和定时器的因素有哪些 

- CPU 的主频(指令执行时间)决定软件延时的时长;

  定时器延时由软件指令控制

(这答的,是不是不合题意。因为确实不知道题目想问什么,在这猜题目意图)
 3. 软件延时和定时器延时各有哪些优劣

- 软件延时优点:方便,随意。随时随地不同CPU,用法基本相同。缺点:只能有一个在用,还占CPU时间。

定时器延时优点:不占用CPU,可以有多个同时使用,可产生中断;缺点:使用操作麻烦,常为难菜鸟。


 


高工
2014-06-21 08:23:15     打赏
5楼
如楼上所述,还是用定时器吧,方便软件的移植,提高兼容性

菜鸟
2014-06-21 21:43:33     打赏
6楼

高工
2014-06-23 09:25:12     打赏
7楼

1. 在8051系列单片机中,延时有两种方式:定时器延时和软件延时(执行的方式产生延时)定时器延时,是通过定时器计数而产生定时器中断,一个机器周期记一个数。而通过执行空语句来延时,则是在函数的某个需要延时的地方,不断的执行空语句,来达到延时的效果。

2. 两种延时方式都与外部晶振的频率和单片机的运行速度(即一个机器周期对应多少个时钟周期)有关。例如,对于STC89C52单片机而言,一个机器周期=12个时钟周期,那么如果外部晶振选择12.000M,则一个机器周期=12/12M=1us;而STC12系列单片机,一个机器周期=1个时钟周期,也就是说,一个机器周期=1/12M=0.0833us。

3. 定时器延时,相对来说比较准确。但是也会有误差,因为每次响应中断都是需要时间的。(但是每次相应中断的时间相差不大,所以相对来说还是比较精确的)。补充:定时器的工作方式中,8位自动重装要比在中断中手动重装精确。

软件延时:软件延时中的nop是精确的一个机器周期,因为它对应汇编指令的NOP。之所以暂时不精确,是因为c语言转化为汇编时,在循环语句上翻译成汇编占的机器周期不好确定,如果看汇编代码可以把软件延时做的很精确。

关于CPU占用率:如果在主函数中使用软件延时,那么在函数执行过程中,如果遇到需要延时的时候,CPU始终被延时函数占用,无法执行其他操作,大大降低了MCU的利用率;如果用定时器延时,则不存在这个问题。



由于水平有限,如果您发现参考答案中有错误或者有需要补充的,请将您的答案或者建议发送至:master@eepw.com.cn 


高工
2014-06-23 10:41:08     打赏
8楼
要精确延时,当然要算汇编语言编写的程序,不一定非要用NOP指令,可以是其它需要做的事情。用中断的方式来延时,误差除了响应中断时间,还有一个高一级中断的问题。所以要精确延时,应该用汇编语言编写的中断程序,并在延时时禁止一切中断。

菜鸟
2014-06-25 19:31:17     打赏
9楼
学习了

院士
2014-06-25 22:08:10     打赏
10楼
学习了,一起谢谢各位。

共11条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]