内容正文:
任务3-1 单键改变8流水灯状态
一.任务目标
掌握单片机片外中断的具体使用。
TCON专用寄存器中的IE1、IT1、IE0、IT0四位的功能和应用
掌握专用寄存器EA和IP的功能和应用
掌握中断服务程序的编写
二.任务要求
任务描述:通过按键K改变8个发光二极管的亮灭状态,当没有按下键时,8个LED为亮点左流动方式(每次亮一个灯,从右向左轮流亮),当按一次K键后,8个LED就一起闪烁6次,闪烁亮灭时间都为1s。
三. 相关知识
1)中断相关的基本概念
(1)中断源
(2)中断请求和中断标志
(3)中断服务程序
(4)中断矢量(中断入口地址)
(5)中断优先级和中断嵌套
2)外部中断源及相关中断标志
IE1: 外部中断1的中断标志。
IE0: 外部中断0的中断标志。
当有中断请求电信号从P3.2或P3.3送到单片机时,相应的中断标志IE1或IE0就会自动置为1,单片机就可以知道有外部的紧急情况发生了。
一般情况,我们都选择下降沿作为中断请求信号。
外部中断INT0的中断请求信号是从P3.2脚输入的,外部中断INT1的中断请求电信号是从P3.3脚输入的。
TCON寄存器还剩下四位存储器,分别是TF1,TR1,TF0,TR0。其中TF0和TF1分别是片内两个定时计数器T0和T1的计数值溢出中断的中断标志,TR0和TR1分别是片内两个定时计数器T0, T1开始定时计数的开启控制位,它们的详细使用方法我们将在第4章中详细介绍。
3)中断控制寄存器
(1)中断允许寄存器IE。51单片机对中断的开放和屏蔽是由中断允许寄存器IE控制来实现的
(2)IP寄存器(优先级控制)
4)中断处理过程
(1)中断请求
(2)中断的响应
(3)中断处理
① 现场保护和现场恢复
② 中断打开和中断关闭
③ 中断服务程序
④ 中断返回
四、任务分析
1)硬件电路分析
(1)流水灯电路:R2~R9为8个限流电阻,D1~D8为8个发光二极管,亮灭受P1口的8位控制,输入1亮,输入0灭。
(2)按键电路:由按键K1、电阻R10构成,
2)软件分析
总体说明:两种显示状态由Mode_Flag控制切换:
main为主程序,控制流水灯显示第一种状态(亮点上流动);
管脚INT0为由按键K1引起的外部中断0的中断服务程序,控制流水灯显示第二种状态(全亮后,由下往上依次熄灭)。
3)知识总结
(1)首先必须在主程序中对中断系统进行初始化,包括:
① 开中断,即设定IE寄存器。
如上面程序中的
EA=1; 开总中断控制位
EX0=1; 开外部中断0
② 设定中断优先级,即设置IP寄存器。
本任务中只用了一个中断,没有设置中断优先级。
③ 外部中断,还必须设定中断请求信号方式,即设定IT0、IT1位。
如上面程序中的“IT0=1”设外部中断0为下降沿触发方式。
(2)中断初始化结束后,就可以编制中断服务程序,编制中断服务程序时应注意以下几点;
① 中断服务程序,必须指定其中断号。
因为外部中断0是占用的0号中断位置,所以任务程序中的代码应写为:
“void ISR_EX0() interrupt 0”interrupt指令即指定其中断号为0。
② 不可在中断服务程序中使用死循环命令。
如“while(1)”,这将使得中断服务程序无法自动跳出。造成程序锁死。
五.任务实施
(1)在Proteus中按图3-1-1连好电路;
(2)用Keil编写程序,并进行编译得到HEX格式文件;
(3)将所得的HEX格式文件在Proteus中加载到单片机芯片中;
(4)开始仿真,看硬件仿真结果;
(5)Proteus中结果正常后,用实际硬件搭接电路,通过编程器将HEX格式文件下载到AT89C51中,通电看实际效果。
Thank you!
$$