龙空技术网

通俗读懂单片机之中断和定时器的一些主要应用

蔡头4 123

前言:

当前兄弟们对“中断正在执行的命令”大致比较关怀,咱们都想要学习一些“中断正在执行的命令”的相关知识。那么小编同时在网摘上网罗了一些关于“中断正在执行的命令””的相关内容,希望兄弟们能喜欢,小伙伴们一起来了解一下吧!

最近因为一个定制的软件单子,忙了好像天,今天项目到了尾声,我们就继续来讲一下时钟应用里面的定时器,因为实在应用太多了,所以再接上文,继续讲。中途我们要插一下中断。

首先我们来看一下一下专门的技术网站对中断的定义。

单片机中断是指在程序执行过程中,某一事件发生时CPU能够停下正在执行的任务并立即转到处理这个事件的程序中去执行,在此处理完成后返回原执行点继续原任务的执行。

非常好理解,中断这个东西就是中断核心的工作,保存状态(栈的应用,以后如果有机会讲到软件我们再来细讲堆栈,这个在计算机软件应用中非常非常重要),然后跳去处理中断提到的代码,然后完成再返回现在的程序代码。

这个功能如何实现呢?其实也不难,但是对于芯片设计会增加很多晶体管,就是核心再执行任何指令的时候多了要判断是否中断这个标志位数值为1。如果是1就开始把核心寄存器的值保存到栈里面(内存内的指定位置),然后就可以去跑中断的内容,在结束后又把核心寄存器的内容读会寄存器,然后就恢复到原来状态了。

中断就简单讲到这里,我们回到计时器上,首先计时器最多的用途是定时。

1.定时,结合我们刚刚说的中断,我们就可以准确的确定现在的时间,比如我们在中断里让一个值每次加1,然后定时器的间隔刚好1毫秒,这样我们的单片机就能知道时间,能实现类似长按2秒一个功能,短按一个功能。

2.pwm输出,pwm中文名字叫脉冲宽度调制。这个的实现就是在上次讲得参考值(就是到了参考值就让计数器恢复0)之外还有另外一个参考值,而这个参考值对比计时器当前的值,并输出计时器大于它还是小于它(结果为0,1),一般用于产生输出特殊的信号(比较占空比20%就是1,80%就是0这样来有点没电的时间比来显示发送无限电)或者来调节功率,例如我们的电机,如果你给80%的时间是开的,其实他只工作到80%的效率,而且我们单片机因为随便就可以产生每秒上万次的频率,几乎就看起来行云流水一样(在实际使用中也有一些加入了电感和电容,让电压电动不再那么0,1那么绝对,变得和交流电一样圆滑至少变成一个水平的直线,随带提一下,我们的交流电220v其实是火线在380v到负380v之间波动,然后这条曲线的绝对值积分结果是220v)。

3.捕抓信号,这个一般的做法就是用用到另外2个参考值,当信号变1的时候把计时器当前的值复制给一个参考值,当变0的时候把计时器当前的值复制给另外一个计时器。然后这是给一个中断,然后两个值相减就得到一个脉冲用了计时器跳了多少下。两个数一乘就得到实际时间。这样我们也可以得到信号的频率多少hz,一次信号多久。如果单片机没有中断,和计时器,那么单片机就一在进行以上功能就无法做其他工作,而且可能时间也计算不准确,因为没办法准确预计几时触发。

标签: #中断正在执行的命令