1、 弄清中断的概念、基本原理,掌握中断技术的应用
2、 了解中断初始化的方法,中断向量安装和中断服务子程序的设计方法。 3、 了解定时/计数器的工作原理及MCS51单片机的定时器内部结构 4、 掌握时间常数计算方法
5、 掌握定时器初始化方法和定时中断程序设计方法 二、 实验要求
利用单片机中断系统设计一个四人抢答器。要求主持人按下启动键后,抢答指示灯亮,开始计时,10秒钟内,任何一个人第一时间抢答成功,相应指示灯点亮,其它人的抢答则被屏蔽,如果超过10秒没有人抢答,则此题作废,指示灯灭,准备进行下一题。 三、 实验原理
可使P2.0~P2.3脚分别接选手的按钮,并通过与门与外部中断0引脚(P3.2)相连, P3.3接扬声器,P1.0~P1.3接指示灯。当S1~S4中有一个按钮按下时,都能产生中断,而其它人按下属于同级中断,CPU不再响应。CPU响应中断时,点亮相应指示灯。
当CPU正在处理某件事情时,外部发生了另一件事情(如定时器/计数器溢出或产生其他中断请求),要求CPU处理,于是它暂时终止当前的工作,转去处理正发生的事件,处理完成后,再回到被中断的地方,继续做原来的工作,这一过程称为中断。 在中断系统中,引起中断的原因或产生中断申请的来源称为中断源;由中断源向CPU发出的请求中断信号称为中断请求信号;CPU接受中断源的中断请求,暂停当前程序的执行,转而处理请求事物的过程称为中断响应。 中断响应后所执行的处理程序称为中断服务子程序,原来正常执行的程序则称为主程序,主程序被断开的位置(或地址)称为“断点”。调用中断服务程序的过程类似于调用子程序,其区别在于调用子程序是事先安排好的,知道何时调用;而何时调用中断服务子程序却是事先无法确定的,因为中断的发生是由外部因素决定的,有时是突发的。程序中无法事先安排调用指令,因此,中断服务子程序的调用过程是由硬件自动完成的。MCS-51单片机有5个中断源,设置两个中断优先级。中断的控制与管理由4个特殊功能寄存器完成。 (1) TCON:定时器/计数器控制寄存器。某些位用于锁存中断源的中断标志。 (2) SCON:串行口控制寄存器。低两位锁存串行口中断标志。 (3) IE:中断允许寄存器。用于控制中断的禁止与允许。 (4) IP:中断优先级寄存器。设定中断源的中断优先级。
在MCS-51中断系统结构图中,设置5个中断源。 (1) 外部中断0(INT0)。
(2) 外部中断1(INT1):掉电故障、I/O中断请求信号等异常事件的中断请求信号都可作为外部中断连接到INT0或INT1上。 (3) 定时器T0中断:T0计满溢出后可向CPU申请中断。 (4) 定时器T1中断:T1计满溢出后可向CPU申请中断。
(5) 串行口中断:包括发送中断和接收中断。串行口完成一个字符的发送或接收后可向CPU发出中断申请。
外部中断是指从单片机外部引脚 INT0 、 INT1 输入中断请求信号的中断,即外部中断源有两个。外部中断请求有两种触发方式:电平触发及跳变(边沿)触发。这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。
51单片机内部有两个16位的可编程定时器/计数器,称为定时器0(T0)和定时器1(T1),可编程选择其作为定时器用或作为计数器用。8051定时器/计数
器由定时器T0、定时器T1、定时器方式寄存器TMOD和定时器控制寄存器TCON组成。TMOD、TCON与T0、T1间通过内部总线及逻辑电路连接,TMOD用于设置定时器的工作方式,TCON用于控制定时器的启动与停止。
预置定时器初值X,将初值写入TH1、TL1中。 初值X=最大计数值-计数次数
定时10秒钟可以使T0工作在方式1下,定时50ms并循环200次。在方式1中,定时器T1的最大计数值为65536,而定时50ms需要完成50000次计数。由此可计算出计数器的初始值。
初值X=65536-50000=15536D=3CB0H
∴在子程序DELAY中确定计数器初值的指令位: MOV TH1,#3CH MOV TL1,#0B0H 四、 实验电路
1. 新建设计文件、设置图纸尺寸、设置网格、保存设计文件。
2. 选取元器件。从Proteus元器件库中选取元器件:AT89C51(单片机)、Button(按键)、74LS04、74LS30、RES(电阻)、LED-RED(红色发光二极管)、LED-BLue(蓝色发光二极管)。 3. 放置元器件、编辑元器件、放置终端、连线。按图3-3所示放置元器件并连线。 4. 属性设置。编辑各元器件属性,填写相应的元件值。 5. 电气规则检测。单击“工具”→“电气规则检查”,弹出检查结果窗口,完成电气检测。若检测出错,根据提示修改电路图并保存,直至检测成功。电气规则检查窗口如图3-4所示。
五、实验程序:
ORG 0000H LJMP MAIN
ORG 0003H LJMP PINT0 ORG 000BH LJMP T0INT ORG 0040H
;INT0 入口地址
;T0 入口地址
COUNT EQU 30H MAIN:MOV SP,#40H SETB EA
SETB IT0
AGAIN: MOV P1,#0FFH CLR IE0
CLR P3.6 CLR F0
JB P3.0,$
SETB EX0 SETB P3.6 MOV COUNT,#00H MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 SETB ET0
WAIT: JB F0,AGAIN MOV A,COUNT
CLR C SUBB A,#200 JC WAIT CLR TR0
; 定时器中断程序 T0INT: MOV TH0,#3CH
MOV TL0,#0B0H
INC COUNT RETI
;外部中断程序:有人抢答 PINT0: CLR EX0 CLR P3.6
SETB F0 MOV P1,P2
LCALL DELAY
RETI
DELAY: MOV R5,#20 D1: MOV R6,#200 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END
五、 实验内容:
1、 阅读程序,回答:为什么当一个人抢答成功后,其它人不能
再抢答?试结合中断控制说明原因。
2、 修改电路和程序,将四路抢答器扩展为8路抢答器。 3、 用(1)改变定时器初值(2)改变循环次数两种不同的方法
将抢答时间由原来的10s改为12s
实验4 数码管仿真实验
1. 实验内容
(1)完成数码管的静态显示,P2口连接共阴极数码管,P3口连接共阳极数码管,编程