外部中断、定时(计数器)实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程:微处理器原理与应用
课时:4学时
教学环境:单片机实验室
教学方法:讲解相关内容,指导学生实验
实验二外部中断、定时/计数器实验
一、目的、任务和要求
1.1 实验目的
1. 掌握单片机中断系统的结构及工作原理。
2.掌握外部中断功能程序的一般结构和编程方法。
3.掌握单片机的定时/计数器的结构及工作原理。
4.掌握定时中断应用程序、计数器应用程序的典型结构和编程方法。
1.2 实验任务
1.对8051单片机的外部中断功能和I/O口功能,搭建一个外部中断控制输出的硬件电路,设计和调试通过相应的外部中断功能软件。
2.对8051单片机的定时/计数器功能和I/O口功能,搭建一个(种)或几个(种)应用定时/计数器的硬件电路,设计并调试通过相应的软件。
1.3实验要求
通过完成外部中断功能实验项目,掌握中断初始化的内容和中断子程序的结构,熟悉中断响应的过程和现场保护的意义,会正确运用堆栈指令作现场保护和现场恢复。
通过完成定时/计数器实验项目,掌握正确选择定时/计数器的工作方式和计数模式的方法,掌握定时/计数器的初值计算方法,会编写中断控制寄存器和定时器中断入口地址的初始化程序。
二、设备和器件
2.1实验设备
(1)微型计算机(PC机)(装配相关软件),(2)单片机实验箱或开发板。
2.2电路元器件
本实验采用Protues仿真软件搭建一个简单的单片机系统电路,进行电路仿真分析,不需要实际的元器件。若实验采用万能板(或面包板)搭建电路,则需要如下元器件:
LED发光二极管,510Ω限流电阻,小按键、软导线等。
学生可自己在课后搭建电路进行实验,并与仿真实验比较。
三、实验内容及步骤
3.1外部中断控制流水灯的实验内容及步骤
(1)根据实验任务作电路原理图设计、作电路布局设计、通过Protues仿真软件来完成单片机硬件系统的搭建。电路图如3.1所示。
(2) 通过“μVision4”软件编辑外部中断控制流水灯的程序,并将编写好的程序代码进行编译和仿真调试,然后输出*.hex文件。
(3)通过实验板专用的接口将*.hex文件写入到单片机芯片的程序存储器中,然后试运行,察看现象并分析结果。若不成功,则要分析原因,重复有关步骤直至成功。
3.2 定时中断控制流水灯电路的实验内容及步骤
(1) 根据上面已搭建好的外部中断控制流水灯电路完成本任务。
(2) 通过“μVision4”软件编辑定时中断控制流水灯程序,并将编写好的程序代码进行编译和仿真调试,然后输出*.hex文件。
(3)通过实验板专用的接口将*.hex文件写入到单片机芯片的程序存储器中,然后试运行,察看现象并分析结果。若不成功,则要分析原因,重复有关步骤直至成功。
3.3外部脉冲个数计数显示的实验内容及步骤
(1)根据实验任务作电路原理图设计、作电路布局设计、通过Protues仿真软件来完成单片机硬件系统的搭建。电路图如3.2所示。
(2) 通过“μVision4”软件编辑外部中断控制流水灯的程序,并将编写好的程序代码进行编译和仿真调试,然后输出*.hex文件。
(3)通过实验板专用的接口将*.hex文件写入到单片机芯片的程序存储器中,然后试运行,察看现象并分析结果。若不成功,则要分析原因,重复有关步骤直至成功。
说明:单片机实验板使用STC89C51RC-RD+系列单片机,利用RS232串口和STC-ISP V33.exe通信软件(或开发板自带下载软件)来下载*.hex机器程序代码。
3.4 参考电路与程序代码
1参考电路
(1)外部中断控制输出的流水灯电路简图
该电路图是在最小系统的基础上,将P1口接LED发光管电路,INT0脚连接外部中断触发开关,如图3.1所示。
图3.1 外部中断控制流水灯电路简图
(2)定时中断控制流水灯的电路简图
可根据外部中断控制流水灯电路图完成任务。如图3.1所示。实验时将K断开,只使用内部定时器功能。
(3)外部脉冲个数计数显示的电路简图
该电路图是在最小系统的基础上,将P1口接LED发光管电路,T0脚连接脉冲按键开关,通过开关K的通/断产生脉冲来进行计数。如图3.2所示。
图3.2 外部中断控制流水灯电路简图
2 参考程序代码
(1)外部中断控制的流水灯
1)外部中断控制流水灯参考程序结构
2)外部中断控制的流水灯参考程序代码
ORG 0000H
LJMP START
ORG 0003H ;INT0中断源入口
LJMP I001 ;I001是中断子程序的起始地址标号
ORG 0100H ;主程序入口
START: SETB IT0 ;采用下降沿触发方式
SETB EX0 ;允许INT0中断
SETB EA ;打开中断总允许开关
CLR A ;A存放计数值,初值=0
ST0: CPL A ;A内容取反,0和1电平反转
MOV P1, A ;P1口低电平时LED灯亮,即A取反前为1时LED亮
CPL A ;A内容取反,A仍为计数值
LCALL DL0 ;DL0是延时子程序的标号
ADD A,#1 ;加法运算,0~255循环,可用INC A指令
AJMP ST0 ;无条件循环计数
I001: PUSH ACC ;先保护断点现场A
PUSH PSW ;后保护断点现场PSW
SETB RS1 ;修改工作寄存器区,保护断点现场Rn
MOV A,#0FEH ;流水灯初值