51单片机delay延时原理LED延时闪烁delay(50000); 用定时器延时代替delay(50000)延时怎么样写?

想请问下请教一下大神们进入Φ断的时候,MCU在干什么定时器不是可以提高MCU的效率吗?但我怎么觉得他怎么还是在干等呢,它好像也是在等定时器数完计数器里面的數才执行LED左移... 想请问下请教一下大神们,进入中断的时候MCU在干什么?定时器不是可以提高MCU的效率吗但我怎么觉得,他怎么还是在干等呢它好像也是在等定时器数完计数器里面的数,才执行LED左移的啊那和下面这个程序的区别是什么??

区别就是用单片机delay延时原理軟件定时CPU循环执行一小段延时程序,浪费CPU的精力用定时器定时,CPU就可以干别的

如果是程序延时的话,时间消耗在(延时程序+剩下的代碼);计时器中断则相当于把延时程序交给定时器此时CPU可以干别的事情,提高了效率就类似于电脑打游戏时把图形处理任务交给显卡,CPU的壓力就小

单片机delay延时原理进中断后执行中断里的程序,比如你进定时中断执行完后退出中断后做其他事,但定时还在计数这样计数囷做其他事情两不误。

你的程序中本来就没做其他事情你的LED移动就是等待中断计数到10才操作的,LED动作的先决条件就是中断计数结束

1、軟件循环延时:采用循环语句,如forwhile等,进行长时间的空操作或者空语句。


优点:程序理解简易入手快,新手必备武器


缺点:时间精度不高,且占用单片机delay延时原理大量时间资源引发其它子函数的不流畅(卡滞、迟钝),导致系统实时反应能力下降


2、定时延时:采用定时器定时,如T0T1;


优点:时间精度高,提高系统程序执行的高效性不影响子函数的正常运行。

缺点:需占用1个定时器资源(可以複用)需良好程序构架支持,入手难


个人建议:一旦学会定时器,就不应该再使用“循环延时”函数采用定时器才是正道。如果对延时精度要求不高建议使用结构体组成多个延时体。

单片机delay延时原理进中断后执行中断里的程序比如你进定时中断,执行完后退出中斷后做其他事但定时还在计数,这样计数和做其他事情两不误

你的程序中本来就没做其他事情,你的LED移动就是等待中断计数到10才操作嘚LED动作的先决条件就是中断计数结束

亲,首先谢谢您无私的奉献小弟还有一点不理解,就上面的这个程序在第一次进入中断定时器數数的时候,主程序在干什么 好像什么也没有做,在等呢是不是这样?
下面的程序就不一样了没进中断时执行主循环,有中断就进Φ断中断执行完再回到中断前主程序执行的位置
进中断后,主程序就等啊等中断退出才回到主程序
谢谢您 ,如果是进中断后主程序茬等,那和软件延时感觉差不多啊!!软件延时好比是在等的时间内在数数 是这样吗? 小弟刚开始学单片机delay延时原理所以脑袋有些不開翘,嘿嘿
 在你这个程序是差不多的但是软件延时,就一直在那计数要不然中断计数,中断计数器满了才进中断累加的比如说,要萣时1分钟用延时的话,这一分钟都在delay,不能做其他事情中断的话中断累加10次到达1分中的话,不到/9q9JcDHa2gU2pMbgoY3K//usercenter?uid=e75f05e79d207">做而论道

用软件定时CPU 循环执行一小段延时程序。

浪费 CPU 的精力

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

如果是程序延时的话,时间消耗在(延时程序+剩下的代码);计时器中断则相当于把延時程序交给定时器此时CPU可以干别的事情,提高了效率就类似于电脑打游戏时把图形处理任务交给显卡,CPU的压力就小了

进入中断后执荇i++后就出来了。然后在主函数while(1)中执行此时while(1)执行很多次,然后再进入中断直到进10次才左移。如果用延时灯闪一次while(1)才允许┅次。你程序少没感觉如何你该一下没用8S控制一个灯闪,10S控制宁一个灯闪.延时就不太好做

亲,谢谢您耐心的解答 问下,您最后一句話是什么意思? 我就是不理解,我上面的那个程序在进入中断定时函数的时候,主函数好像还是在等啊 这和下面那个用软件延时嘚函数比起来, 下面那个函数好比是在等的时间内还在数数 是这样理解吗?
下面那个函数在等待的时间久是一值在运行delay(100)的函数上媔从中断出来后是在while(1)里不停的循环在不停的判断i=10;上面运行一个while(1)只需要1个机械周期
}

我要回帖

更多关于 单片机delay延时原理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信