中断函数中可以使用计时器吗?或者中断函数中如何才能做到计时功能?

中断函数中可以使用计时器吗?或者中断函数中如何才能做到计时功能?,第1张

在中断函数中一般不建议使用计时器,因为中断函数会在响应中断时立即执行,而如果在中断函数中使用计时器,则可能会导致定时器中断和正常的中断冲突,从而造成程序出错,甚至死机。

为了实现计时功能,有两种常见的方法。一种是在主循环中使用计时器,不在中断函数中使用计时器。这种方法适用于较长的计时间隔。具体实现方法是:在主循环中不断地读取计时器的值,当计时器的值达到所需的时间时,执行相应的任务。

另一种方法是使用另一个中断来实现计时功能,即所谓定时器中断。定时器中断可以在固定时间间隔内定期发生,然后在中断函数中执行计时相关的 *** 作。这种方法适用于需要较高精度的计时任务。但是,需要注意的是,定时器中断的频率不能太高,否则会影响程序的性能。

1、首先编写一段简单的代码,如下图所示,编辑一段简单的输出语句。

2、依次点击菜单栏内的编译→组建→执行,确保这段成率可以正确执行。

3、从运行结果来看程序正确,没有问题,然后找到exe可执行程序看其是否有闪退现象。

4、将C语言代码保存后打开代码所在的文件夹,该文件夹内有一个名为【Debug】的文件夹,exe可执行程序就在此文件夹内。

5、打开【Debug】文件夹内的exe可执行程序,未出现闪退,可清晰查看到程序运行结果。

单片机,采用定时中断方式2,是8位自动重载模式,用低8位寄存器计数定时,高8位保存计数初值。例如用定时器T0,则TL0计数,TH0保存初值。当TL0计数到FFH最大数,再计一个数就溢出,产生中断,单片机响应中断,执行中断程序。同时,TH0会自动把保存的初值送给TL0,那TL0立即重新开始计数定时。即单片机在执行中断程序的同时,新的定时是同时在进行的,不受程序的控制。但是,假如定时很短,而中断程序很长,执行中断程序的时间超过了定时的时间,那么T0定时会照样请求中断的,但因为单片机正在自己的前一个中断的程序,就不会响应这次的中断了,那就等于丢了一次中断。因此,在写定时器中断程序时,一定要尽量短,中断程序千万别写得很长。如果中断程序确实要很长,那就一定要延长定时的时间,一定要大于执行中断程序的时间,否则,定时就不准确的,也就失去了意义。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11816041.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存