我们前面已经学习过了独立按键的使用以及LED流水灯的相关内容了,接下来我们将两者综合起来:利用中断系统实现独立按键实时操控LED流水灯的走向。
我们在实际进行操作的时候,并不能只是简单的将两者结合起来,简单的拼凑代码是无法完成实验目的的。因为当我们执行其中的任何一项任务的时候,单片机的CPU会被占用,因而导致无法读取另一份信息,所以我们就会发现存在独立按键不灵敏的情况。
这个时候我们就要利用到中断系统,这可以让我们在执行某一项任务的时候,让CPU在很短的时间内中断此项任务,去完成另一项任务,由于这个过程时间极短,所以近似认为是CPU同时处理了两项任务。
接下来我们认识具体的电路:
了解相关电路之后我们就可以写出相应的代码,来实现内部电路的连接,这需要一定的电路知识做支撑,笔者在此用了STC-ISP上的一个功能自动生成了实现该过程的代码。当然,如果有一定的知识储备,也可以自己尝试编写代码。
在编写代码的过程中,我们依然采用模块化编程(方便移植、简化主函数)。我们可以分别将中断代码、读取独立按键以及LED流水灯编入到各自的函数文件中,最后再进行调用。
在Kile5中,有一个<INTRINS.h>的头文件,其中有可以实现LED流水灯的函数,我们可以直接调用。代码编写如下:
下面是计时与中断函数:
而读取独立按键和LED流水灯的代码,笔者在之前的文章中已有展现,再次不多做赘述。
下面是实验结果:
独立按键控制LED流水灯状态
以上就是本章的大致内容,希望能够帮到大家!