外部中断、定时(计数器)实验
- 格式:doc
- 大小:84.00 KB
- 文档页数:8
课程:微处理器原理与应用课时: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 0000HLJMP STARTORG 0003H ;INT0中断源入口LJMP I001 ;I001是中断子程序的起始地址标号ORG 0100H ;主程序入口START: SETB IT0 ;采用下降沿触发方式SETB EX0 ;允许INT0中断SETB EA ;打开中断总允许开关CLR A ;A存放计数值,初值=0ST0: 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 ;先保护断点现场APUSH PSW ;后保护断点现场PSWSETB RS1 ;修改工作寄存器区,保护断点现场RnMOV A,#0FEH ;流水灯初值MOV R3,#16 ;循环变量初值LOOP: MOV P1,A ;流水灯控制输出RL A ;移位运算LCALL DL0 ;调用延时子程序DJNZ R3,LOOP ;流水灯移位共16次CLR RS1 ;恢复现场POP PSW ;恢复现场按照堆栈操作“先进后出”原则编程POP ACC ;不可以先POP ACC再POP PSW。
RETI ;中断返回,返回到主程序断点处DL0: MOV R0,#255DL1: MOV R1,#255DL2: DJNZ R1,DL2DJNZ R0,DL1RETEND3)深入实验问题(要求学生完成)(1)只去掉PUSH ACC和POP ACC指令,再仔细查看并解释运行现象。
(3)将SETB IT0改成CLR IT0,较长时间按下按键,查看并解释运行现象。
(4)只改RETI为RET,仔细查看并解释运行现象。
(5)设置INT0、INT1两个外部中断,分别为高级和低级中断。
试编程;分别在两个中断同时请求、低级中断先请求和高级中断先请求这三种情况下观察并解释运行现象。
(2)定时中断控制的流水灯1)定时中断控制的流水灯参考程序结构2)定时中断控制的流水灯参考程序代码ORG 0000HLJMP MAINORG 0BH ;中断源T0的入口地址LJMP CIT0ORG 0100HMAIN: MOV TMOD,#01H ;设置内部定时16位计数方式MOV TH0,#3CH ;6M晶振100ms/2µ=C350H,初值=3CB0HMOV TL0,#0B0H ;计数器初值低8位SETB ET0 ;中断初始化SETB EASETB TR0 ;启动TO开始计数MOV A,#0FEH ;LED灯初值是最低位灯亮SJMP $ ;自循环,等待中断CIT0: MOV TH0,#3CH ;重装计数器初值MOV TL0,#0B0HRL A ;每中断一次移位一次MOV P1, A ;在中断响应子程序中输出RETI ;中断返回,返回到断点END3)深入实验问题(要求学生完成)(1)对于定时中断控制的流水灯程序,将TH0,TL0初值设为00H,查看并解释运行现象。
(2)对于定时中断控制的流水灯程序,试修改流水灯速度,使其1秒才移动1位?(3)对于定时中断控制的流水灯程序,试修改程序使之作“每秒加1”计数?(4)对于定时中断控制的流水灯程序,试修改问题3程序,使得子程序的主要任务(即移位和输出指令的功能)放在主程序中执行而运行现象完全不变?(思路提示:利用标志位和位控制转移指令的功能,在主程序上加入一个分支结构程序段)(3)脉冲个数计数显示1)脉冲个数计数显示的参考程序结构2)脉冲个数计数显示的参考程序代码ORG 0000HLJMP MAINORG 100HMAIN: MOV TMOD,#06H ;设置外部时钟,8位重装计数方式MOV TL0,#00H ;计数器初值=00HMOV TH0,#00H ;溢出重装数值=00HSETB TR0 ;启动T0计数LOOP:MOV A,TL0 ;读TL0计数值CPL A ;或XRL A,#0FFH,使“1”表示灯亮MOV P1,A ;P1口LED灯显示TL0的数值SJMP LOOP ;读TL0送显示循环END3)深入实验问题(要求学生完成)(1)若利用定时器T0来产生一个周期为10ms的方波,在P1.0脚输出,如何编写程序?(要求:先画出程序流程图或画出程序结构图)(2)若对周期为10ms的一个方波,用定时器T1来测量其正脉冲宽度,如何进行电路连接和编写程序?(要求:先画出程序流程图或画出程序结构图)(3)试编程使P1.0引脚上的LED显示灯每秒闪烁1次,即1秒内LED灯亮300ms、灭700ms (提示:可以使用两个定时器)。
四、实验报告要求与考核标准1、实验报告要求(1)给出运行成功的单片机系统电路图、程序流程图、操作步骤和运行结果,并编写深入实验的程序代码。
电路图和流程图要尽量详尽,程序代码要书写规范,操作步骤和运行结果要具体求实。
(2)写成深入实验问题的内容。
(3)分析实验过程中的现象,得出结论。
2、实验考核标准实验考核标准如下表:。