单片机C语言编程中延时函数和定时器中断有何关系

请教大侠一个问题。。。单片机C语言编程中延时函数和定时器中断有什么关系,为什么我在定时器选择2ms的时候,延时函数的周期要放大好多倍才执行。。。

延时函数(延时子程序)是主程序正常运行时执行的,
---主程序运行的时间即是延时函数的延时时间。

定时器中断是在主程序中插入的事件,是在主程序的某个时间点,跳出主程序去执行定时器中断要做的事情。

所以如果一个延时子程序不停地被中断(包括定时器中断或者其他中断)打断,
就没有时间完成自身运行一次所需的那些语句。
等到它自身运行完一次,可能原定延时时间的很多倍已经过去了。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-09-29
延时函数是一种粗略计算延时时间的函数
是通过让单片机执行空指令,达到等待延时的目的。
经常被应用在对延时时间要求不太严格的场合。
而定时器中断,则是通过对晶振时钟进行计数
由于晶振的频率一般是很稳定的,所以晶振的脉冲频率基本稳定
从而通过对脉冲进行计数即可得到准确的延时目的。
中断延时函数和定时器中断延时没有明确的对应关系。
主要是根据你的应用场合来确定使用哪种函数。
第2个回答  推荐于2017-11-24
没什么关系,都能实现延时,延时要占用系统资源,延时时不能干别的
定时器不占用CPU资源,不影响别的程序执行本回答被提问者和网友采纳
第3个回答  2011-12-20
可能是在执行延时函数的过程中,中断被触发,这样会先执行中断函数的内容,然后在执行延时函数。 延时函数和中断函数没有什么关系。
第4个回答  2011-12-20
延时函数和定时器中断没关系啊

单片机C语言编程中延时函数和定时器中断有何关系
延时函数(延时子程序)是主程序正常运行时执行的,---主程序运行的时间即是延时函数的延时时间。定时器中断是在主程序中插入的事件,是在主程序的某个时间点,跳出主程序去执行定时器中断要做的事情。所以如果一个延时子程序不停地被中断(包括定时器中断或者其他中断)打断,就没有时间完成自身运行一次...

单片机C语言中实际时间为什么比定时的要慢
这很正常,因为,定时器的初始值是按定时的时间计算出来的。如果定时器用了中断,对中断计算来计时的,那影响中断,是需要时间的,特别是中断函数中,必须要第一条就是重写初始值,这都需要时间的,虽然这点时间极短,但是,中断的次数是非常多的,这样,累加起来的误差,就是计时的误差。如果中断函数...

单片机的中断跟延时有什么不同?
中断和延时是不一样的,2个不同的概念。中断是停止当前正执行的任务,转而去执行中断任务,等中断任务执行结束后继续回来执行当前正在运行的任务。中断程序要求尽可能的简洁越短越好(尤其是在多中断任务执行时),中断首先要开启中断源,初始化中断,然后响应中断,从中断的入口地址处执行中断程序。利用中...

c51单片机 用了中断 再用定时器什么意思??有了中断干嘛还要用定时器...
中断和定时是两个概念,中断就是来了中断触发信号 程序马上跳到中断中程序 执行完回到刚开始执行的地方继续执行 是立即执行的 定时器就是定一段时间 时间到了就去执行里面的内容 定时器分为2种方式 查询 和中断方式 查询也就是找标志位 TF0或者TF1 中断方式就是立即执行 用在不同的地方 本回答由提问者推荐 举报...

疑惑…单片机进入中断后不能执行调延时程序?中断服务程序里已写延时程序...
通常在中断子程序中是不调用延时子程序的,这样会增加中断处理时间,如果有其它低级中断了,就会延误响应中断了。所以,中断子程序中不要写调用延时子程序,中断子程序也不要写得过长,处理过多的任务,要尽快处理后及时返回,如果中断一次有很多任务需要执行完全,可以在中断子程序中设置一个标志位,在主...

单片机c语言延时程序
一般单片机在c语言中很难得到精确的延时,所以一般对时间要求高的都用计时器中断来做了。如果时间要求不严格可以用for循环来做,你可以实际测试一下,把时间延时到大概一秒左右,然后烧进单片机里运行,比如一个灯亮灯灭的程序,看着灯计数,同时用秒表计时,几个几十次后取平均值就能知道大概时间了。

51单片机用c语言怎么写延时函数?
现在通过上面两个数据可以得出:单片机每执行一次自减所需要的时间是1\/12M *100(s),即1\/120000 s,逆向计算一下,每1ms需要自减多少次?120次对吧。所以一个简单的延时功能就诞生了,我们只需要自减120次,就可以延时1ms,如果我们要延时50ms呢,那就自减50*120=6000次。那么在程序上如何表达...

单片机C语言延时程序怎么停止?
在循环里判断是否满足跳出的条件,满足则跳出循环,不满足就继续延时直到延时结束。具体的条件要有程序的要求来,比如说某个IO口的电平的状态。sbit state=P1^7;delay(uint){ uint x,y;for(x=1000;x>0;x--)for(y=1200;y>0;y--){ if(state==1)return ;\/\/当p1.7口为高时跳出循环 } ...

51单片机C语言程序中延时函数delay的原理是什么?
关于大小的值:如果是在C语言中,该值不仅与水晶振动、单片机本身的速度,但也与C的编译器,所以,虽然这个值可以精确计算,但大多数情况下,程序员是经验值。当然,如果你在汇编中编程,情况就不同了,因为每条指令使用一定数量的机器周期,你当然可以根据所有指令使用的总时间来计算特定延迟的总时间。

单片机C语言电子钟走时精度与哪些有关
单片机C语言电子钟走时精度的与以下因素有关:1、晶振,晶振是单片机工作的基准,影响到单片机的运行速度和节奏。2、程序,如果是延时方式实现,那么精度将受到很复杂的因素影响,很不准确,如果是定时器中断方式实现,那么仅与晶振有关。

相似回答