内容正文:
本任务的内容是采用外部按键方式(外部中断方式)控制彩灯的运行状态。通过按动按键,彩灯在三种闪亮方式(左移、右移、自定义花样)之间切换。
任务提出
任务 键控彩灯
课题五 键控彩灯
本任务的目标是用按键去控制彩灯的显示,就是在彩灯显示的基础上增加按键控制程序,实现几个不同显示花样的切换。实现彩灯显示的电路及方法在课题二中已做过介绍,按键的功能特点在课题四中也已介绍,需要把二者有机结合起来实现本任务目标。
任务分析
在课题四中,对按键的处理可有两种方式,一种方法是不断查询按键,有键按下时就进行消抖处理,判断是否真有按键按下,这种方法在按键查询期间单片机不能做任何其他操作。另一种方法是每间隔一段时间对按键进行一次判别处理,这种方式对具体的按键能够适用,但对于时间较短的脉冲输入方式可能无效,由于输入脉冲较短,会造成漏检。可以看出,这两种方法都是有缺陷的。为了解决实时检测和其他程序的运行之间的矛盾,常采用单片机的外部中断方式实现按键的控制功能,本任务也是应用单片机的外部中断功能,利用按键实现控制彩灯的。
一、中断的概念
所谓“中断”,是指CPU在正常执行程序时,系统中出现特殊请求,CPU暂时中止当前运行的程序,转去处理更紧急的事件,处理完毕后,CPU返回被中止的源程序继续执行的过程,如图所示为中断程序执行顺序示意图。
相关知识
中断响应过程
通俗地说,对于单片机,中断服务程序的执行相当于一种特殊的程序调用,而中断源是产生这种调用的条件。作为MCS-51系列单片机,中断源有外部中断、内部定时器/计数器中断和串口中断三种,后两种中断将在后续模块的任务中介绍。对应的产生中断的条件可能是一段时间、脉冲个数、高电平变为低电平以及异步串行数据发送/接收完毕等。
中断调用与子程序调用的最主要区别在于:子程序的调用是程序中预先安排好的,在程序中写有调用子程序的命令。而中断调用是随中断源的产生而出现的,中断是随机发生的,当中断事件发生后,CPU自动中止正在运行的程序,保护好现场数据,转去执行中断服务程序,中断服务程序执行完毕后才回到原断点所在位置继续执行其后的程序。中断服务程序的执行过程中,还可被优先级别更高的中断请求所中断,处理完级别更高的中断源后,再返回到被中断了的中断服务程序继续执行,这个过程就是中断嵌套。
二、常用中断控制寄存器
要完成中断调用,在程序中必须对相应的中断控制寄存器进行设置,即中断的初始化。设置好中断初始条件后,当系统检测到中断信号,硬件自动保护好正在执行程序的现场,转而执行中断服务程序。中断初始化就是对定时器控制寄存器TCON、中断允许寄存器IE、中断优先控制寄存器IP等进行设置。这些寄存器在单片机内部,它们是单片机内部存储器的一部分,称为特殊功能寄存器(SFR),这些寄存器可以用命令对寄存器的各位进行设置(置0或置1)或随工作状态变化。这里先介绍外部中断用到的相关寄存器及其初始设置方法。
作为MCS-51系列单片机,针对中断的内部特殊功能寄存器见表。
中断寄存器
1.定时器控制寄存器TCON
定时器控制寄存器TCON内部存储器地址为88H。
2.中断优先级寄存器IP
中断优先级寄存器IP内部存储器地址为B8H。
3.中断允许控制寄存器IE
MCS-51系列单片机中断的开启和关闭是通过中断允许寄存器IE的设置来实现控制的。中断允许控制寄存器IE内部存储器地址为A8H。
三、外部中断的实现过程
外部中断设置工作示意图
四、中断源和优先次序
中断源和优先次序
五、C51中的中断函数
1.中断源和中断号
从上表可以看出,MCS-51系列单片机有5个中断源和两个优先级,高优先级中断源可中断低优先级的服务程序,而两个同样优先级别的中断申请到来时,则按固定的查询次序来处理中断响应。
2.中断服务程序的格式
3.中断服务程序的执行
一、硬件设计
根据任务分析,本任务硬件系统是在单片机最小系统的基础上增加彩灯输出和外部中断按键输入。
在本任务中,单片机选择AT89S51芯片作为系统控制芯片,其最小系统较为简单,包括复位电路和时钟电路,其参数选择原则见课题一相关说明,本任务中选择的系统晶振频率为12 MHz。
任务实施
键控彩灯的硬件电路原理图
根据系统分析及电路和元器件选择,整个硬件电路如图所示。
二、软件设计
由于中断函数与主程序之间的关系,相当于两个程序并行运行,将一个任务分为两个部分处理的具体分解方法有多种,所以用中断函数去控制彩灯的显示,具体的实现方法和实现程序也是多种多样的,如图所示的框图就是其中的一种处理方法。
键控彩灯程序框图
a)主程序运行框图 b)中断函数程序框图
在主程序中,按照设置的flag值的不同,执行相应的程序,实现相应的功能。当没有中断发生时,标志flag的值没有被改变,主程序保持运行,使彩灯按其中某一种花样闪