单片机怎么能延时执行不耽误正常运转

 我来答
lycdl
高粉答主

推荐于2018-03-14 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4907万
展开全部
延时有两种方法,一种是用软件延时,即写延时子程序,这种方法是让单片机执行无用的指令,就是为了延时,延时期间就不能做其他事情了,很浪费单片机的时间。这种方法是在单片机不忙的情况下用,反正闲着也是闲着。
第二种方法就是你要求的,即能延时,又不耽误主程序的运行,用定时器T0或T1定时,设置定时时间后,定时器开始计时,主程序继续执行,不用管定时器,当定时时间到,定时器就会申请中断,单片机就响应中断,处理定时子程序需要完成的工作,完成后返回到主程序继续主程序的执行,这是最合理的方法,充分利用了单片机的资源,互不影响。
和小叙
2014-02-03 · TA获得超过436个赞
知道小有建树答主
回答量:417
采纳率:0%
帮助的人:192万
展开全部
单片机执行一条语句的速度是非常的慢的,接12M晶振其实到了单片机内部就分到1M而已了。所以时间非常可贵,因为衡量一个CPU好坏来说,它的速度是很重要的一个指标,因此,在一个比较大的工程当中,很不提倡使用简单的延时函数(也就是我们通常命名为delay的那个函数)来处理延时问题。就像你说的那样,虽是延时了,但却耽误了正常运转。
什么意思呢?举个简单的例子,在有八个数码管(采用动态显示)和几个按键(因需消抖,要延时)的工程当中,程序在不断地对数码管和按键进行扫描,当检测到某个按键按下时,水平不高的人一般都delay(100)来延时消抖,那样子的话,如果是细心的人会发现数码管闪了一下(也就是灭了一下),做出这种产品的人只能说是一个二流工程师做出来的。
那如何不影响数码管扫描,又能达到按键消抖的效果呢?这里,时间把握就很重要了。
其实,按脚抖动的时间持续大约是10ms,一个发光二极管从亮到完全暗大约也是10ms,而从灭到完全亮需要1ms,因此,懂得这些以后,就好办了。
说了那么多,不用延时,那方法是什么?答案是定时器中断。是的,定时器中断,当时间到了,再去处理按键动作,这样,就不回卡住CPU时间(也就是你所说的“不耽误正常运转”)了。那怎么实现呢?通常是设一些标志位,这里就不详细讲了。
当然,像数码管也是最好用定时器来延时扫描最好,大的工程都需要这么做,本人从不提倡使用简单的delay延时来处理一切需要延时的事例。
要做精品,并且做好,需要经验的累加。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
852849931
2014-02-03 · TA获得超过135个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:154万
展开全部
1.用中断 2.用标志位 如if(a==0){函数体;}当a!=0时跳出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
九方依秋36
2019-10-22 · TA获得超过514个赞
知道小有建树答主
回答量:126
采纳率:66%
帮助的人:23.4万
展开全部
你这个想法若能实现,基本上99%的工程项目也就与操作系统无缘了,操作系统出现的原因80%都和怎么处理延时有关
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cc21aee
2014-02-03 · TA获得超过2044个赞
知道小有建树答主
回答量:1273
采纳率:100%
帮助的人:1221万
展开全部

可以借鉴系统的解决方法,比如ucos2,设计一个时间基准,看看这个帖子

http://bbs.elecfans.com/jishu_406259_1_1.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式