单片机实验四报告_外中断实验
外中断实验报告
一、实验目的1. 理解外中断的概念和作用。
2. 掌握外中断的触发方式和处理流程。
3. 通过实验验证外中断在嵌入式系统中的应用。
二、实验环境1. 实验平台:STM32开发板2. 开发环境:Keil uVision53. 代码编写语言:C语言三、实验原理外中断是指当外部信号发生时,CPU暂停当前程序执行,转而执行外中断服务程序。
外中断通常用于处理实时事件,如按键、传感器数据采集等。
外中断分为两个部分:中断触发和中断处理。
1. 中断触发:当外部信号满足一定条件时,触发外中断。
2. 中断处理:CPU响应中断请求,执行中断服务程序,完成相关处理。
四、实验步骤1. 初始化外中断(1)配置GPIO引脚为输入模式,用于接收外部信号。
(2)设置中断触发方式(上升沿、下降沿或双边沿触发)。
(3)使能中断和中断优先级。
2. 编写中断服务程序(1)编写中断服务程序,完成外部事件的处理。
(2)在中断服务程序中,设置标志位或调用其他函数处理事件。
3. 编写主程序(1)初始化硬件设备。
(2)启动外中断。
(3)执行主程序,监控中断事件。
4. 编译、下载程序到开发板(1)使用Keil uVision5编译代码。
(2)使用ST-Link下载程序到开发板。
5. 实验验证(1)通过按键或其他外部信号触发外中断。
(2)观察中断服务程序是否被正确执行,事件是否得到处理。
五、实验结果与分析1. 实验结果在实验过程中,当按下按键时,外中断被触发,中断服务程序被正确执行,事件得到处理。
2. 分析(1)外中断的触发方式设置正确,中断能够及时响应。
(2)中断服务程序编写合理,能够完成事件处理。
(3)主程序能够正常执行,监控中断事件。
六、实验总结1. 通过本次实验,掌握了外中断的概念、触发方式和处理流程。
2. 熟悉了STM32开发板外中断的使用方法。
3. 增强了在实际项目中应用外中断的能力。
七、实验心得1. 外中断在嵌入式系统中具有重要作用,能够提高系统的实时性和可靠性。
单片机外部中断实验(附C语言程序)
单片机外部中断实验(附c程序)一、实验目的掌握外部中断的C语言和汇编语言编程方法,会用外部中断解决实际应用问题。
二、实验内容8051C51单片机P2.0接一个发光二极管LED1、P2.1接一个发光二极管LED2,P3.2接一个开关、P3.3接一个开关要求实现以下功能:(1)合上、P3.3断开时LED1闪烁(2)P3.2断开、P3.3合上时LED2闪烁(3)P3.2合上后(不断开)再合上P3.3,LED1闪烁LED2不闪烁(4)P3.3合上后(不断开)再合上P3.2,LED2不闪烁LED1闪烁试编写C语言和汇编语言程序使用自然优先级就可以也可 XO 高级X1低级PX0=1 PX1=0四、实验电路五、参考程序(自己完成)C程序:Include<reg52.h>Sbit P2_0=P2^0;Sbit P2_1=P2^1;Sbit P3_2=P3^2;Sbit P3_3=P3^3;void delay02s(void) //延时0.2秒子程序{unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}Void main{EA=1;EX0=1;EX1=1;ITO=1;IT1=1;PX0=1;PX1=0;While(1);}Void int0(void) interrupt 0 { if(!P3_2){While(1){P2_0=1;delay02s();P2_0=0;delay02s();}}}Void int1(void) interrupt 2 { if(!P3_3){While(1){P2_1=1;delay02s();P2_1=0;delay02s();}}}。
单片机外部中断实验报告
实验三外部中断实验报告班级:学号:姓名:教师:一、实验目的1、掌握单片机外部中断的原理及过程。
2、掌握单片机外部中断程序的设计方法。
3、掌握单片机外部中断时中断方式的选择方法。
二、实验内容如下图所示,P3.2设为输入,P2设为输出位,连有8个发光二极管D1~D8。
每当发生外部中断时,发光二极管以向下流水灯的方式点亮。
分别选择边沿触发外部中断放是和电平触发外部中断方式两种。
三、编程提示1、P3口是8位准双向口,具有双重功能:第一功能和P1口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下:P3.0 RXD 串行输入口P3.1 TXD 串行输出口P3.2 INT0 外部中断0请求输入线P3.3 INT1 外部中断1请求输入线P3.4 T0定时器/计数器T0外部计数器脉冲输入线P3.5 T1定时器/计数器T1外部计数器脉冲输入线P3.6 WR外部数据存贮器写脉冲输出线P3.7 RD外部数据存贮器读脉冲输出线2、各中断服务程序入口地址:外部中断0 03H定时器/计数器T1溢出中断0BH外部中断1 13H定时器/计数器1BH串行口中断23H3、外部中断的产生条件中断允许寄存器IE:EA ES ET1 EX1 ET0 EX0(1)外部中断源允许中断(中断0:EX0=1;中断1:EX1=1)。
(2)CPU开中断(EA=1)。
(3)外部中断方式CPU发出中断申请。
4、外部中断方式的选择控制TCON:TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0IT0是选择文字则外部中断0请求(INT0)边沿触发方式或电平触发方式的控制位。
前一方式IT0=1,后一方式IT0=0。
IT1是选择外部中断1请求(INT1)为边沿触发方式或电平触发方式的控制位。
前一方式IT1=1,后一方式IT1=0。
当8031复位后,TCON被清0。
5、外部中断电路负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。
外部中断的实验报告
一、实验目的1. 理解外部中断的概念和作用。
2. 掌握外部中断的编程方法。
3. 熟悉中断处理程序的设计和调试。
二、实验原理外部中断是指由外部设备或信号产生的中断,用于处理与CPU无关的事件。
在微机系统中,外部中断通常用于处理输入/输出设备的中断请求。
外部中断分为可屏蔽中断和不可屏蔽中断两种类型。
三、实验环境1. 开发平台:Keil uVision 52. 微控制器:STM32F103C8T63. 外部设备:按钮、LED灯4. 连接方式:通过GPIO引脚连接四、实验步骤1. 设计外部中断电路(1)将按钮连接到STM32F103C8T6的GPIO引脚,例如PA0引脚。
(2)将LED灯连接到STM32F103C8T6的另一个GPIO引脚,例如PB0引脚。
2. 编写外部中断初始化程序(1)在Keil uVision 5中创建一个新项目,并添加STM32F103C8T6的起始代码。
(2)在主函数中编写初始化程序,包括以下步骤:a. 配置PA0引脚为输入模式,设置为浮空输入。
b. 配置PB0引脚为输出模式,用于控制LED灯。
c. 使能中断,设置中断优先级。
d. 配置NVIC(嵌套向量中断控制器)以允许外部中断。
3. 编写外部中断处理程序(1)在项目中添加一个新的C文件,用于编写外部中断处理程序。
(2)编写外部中断处理函数,当按钮按下时,触发中断,控制LED灯闪烁。
a. 初始化外部中断处理函数,设置中断优先级和中断触发方式。
b. 在外部中断处理函数中,编写LED灯控制代码,实现LED灯闪烁。
4. 编译并下载程序(1)编译项目,生成.hex文件。
(2)将.hex文件下载到STM32F103C8T6开发板上。
5. 测试实验结果(1)将按钮按下,观察LED灯是否闪烁。
(2)松开按钮,LED灯停止闪烁。
五、实验结果与分析1. 实验结果实验过程中,当按钮按下时,LED灯闪烁;松开按钮后,LED灯停止闪烁。
实验结果表明,外部中断能够正确地处理外部设备的中断请求,并控制LED灯的亮灭。
单片机中断实验实训报告
一、实验背景随着电子技术的飞速发展,单片机因其体积小、成本低、功能强大等优点,在各个领域得到了广泛应用。
中断技术是单片机设计中非常重要的一部分,它允许单片机在执行程序的过程中,能够及时响应外部事件,从而提高系统的实时性和效率。
本实训旨在通过实验,加深对单片机中断系统的理解,掌握中断系统的使用方法,并学会在实际应用中灵活运用中断技术。
二、实验目的1. 熟悉单片机中断系统的基本概念和原理。
2. 掌握中断源、中断优先级、中断服务程序等基本概念。
3. 学会使用单片机的中断系统实现实时响应外部事件。
4. 培养动手实践能力和问题解决能力。
三、实验器材1. 单片机实验板2. 示波器3. 电源4. 连接线5. 逻辑分析仪(可选)四、实验内容1. 实验一:外部中断实验(1)实验目的:验证外部中断功能,实现按键控制LED灯的点亮和熄灭。
(2)实验步骤:a. 将外部中断0(INT0)引脚连接到按键,按键按下时产生低电平信号。
b. 编写中断服务程序,实现按键按下时点亮LED灯,按键释放时熄灭LED灯。
c. 编译程序,下载到单片机实验板上。
d. 测试实验效果,观察LED灯的点亮和熄灭情况。
2. 实验二:定时器中断实验(1)实验目的:验证定时器中断功能,实现LED灯的定时闪烁。
(2)实验步骤:a. 配置定时器T0为模式1,设置定时器初值,使定时器溢出时间为1秒。
b. 开启定时器中断,编写定时器中断服务程序,实现LED灯的定时闪烁。
c. 编译程序,下载到单片机实验板上。
d. 测试实验效果,观察LED灯的闪烁情况。
3. 实验三:中断嵌套实验(1)实验目的:验证中断嵌套功能,实现定时器中断和外部中断的嵌套。
(2)实验步骤:a. 配置定时器T0为模式1,设置定时器初值,使定时器溢出时间为1秒。
b. 开启定时器中断和外部中断,设置中断优先级。
c. 编写定时器中断服务程序和外部中断服务程序,实现中断嵌套。
d. 编译程序,下载到单片机实验板上。
汇编外部中断及NE555计数实验实验报告
外部中断及NE555计数实验11103070315 李青【实验内容】1、利用外部按键中断计数并用数码管显示计数值2、用51单片机T0、T1定时计数器对NE555产生的脉冲信号进行频率计数,频率送LCD显示(或数码管显示)【需要了解的知识】1、GPIO设定2、LCD显示原理,输入与输出及其原理3、定时计数器工作原理及频率测量4、NE555工作原理【实验预习】预读实验指导电子文档的实验十六、七及其前面的实验流程【实验设备】Keil C51软件、ICE52 仿真驱动、MEFlash编程软件、USB驱动程序【实验过程】实验一外部中断实验任务:利用单片机的外部中断功能进行计数,然后将计数值输出到数码管上显示。
K5键—计数值加1(外部中断0)K6键—计数值加1(外部中断1)3位数码管显示,最大计数值255实验步骤:1)首先在硬盘上建立一个文件夹;2)启动Keil C51软件;3)执行Keil C51软件的菜单“Project|New Project……”,弹出一个名为“Create New Project”的对话框。
输入工程文件名,选择保存路径uv2后缀,点击“保存”按钮;4)紧接着弹出“Options for Target‘Target 1’”,为刚才的项目选择ATMEL 的AT89S52的CPU。
选择之后,点击“确定”按钮;5)接下来弹出一个对话框提示你是否要把标准8051的启动代码添加项目中去,此时,点击“否”按钮;6)执行菜单“File|New……”,出现一个名为“Text1”的文档。
接着执行菜单“File|Save”弹出一个名为“Save As”的对话框,将文件名改为“.asm”后缀,然后保存;7)添加源程序文件到工程中,一个空的源程序文件建成。
单击Keil C51软件左边项目工作窗口“Target1”上的“+”,将其展开。
然后右击“Source Group1”文件夹弹出下拉菜单,单击其中的“Add Files to Group‘Source Group1’”项;8)在弹出的对话框中先选择文件类型为“Asm Source file (*.s*;*.src;*.a*)”,这时对话框内创建的空的源程序文件已经出现在项目工作窗口的“Source Group1”文件夹中;输入源程序代码;9)点击工具栏“Options for target”按钮,弹出一个对话框,定义“Xtal”为11.0592.下面依序是存储模式、程序空间大小等设置,均用默认值即可。
stm32外部中断实验报告-STM32实例外部中断实验
stm32外部中断实验报告_STM32实例外部中断实验上⼀篇⽂章我们介绍了 STM32F10x 的中断,这次我们就来学习下外部中断。
本⽂中要实现的功能与按键实验⼀样,即通过按键控制LED,只不过这⾥采⽤外部中断⽅式进⾏控制。
学习时可以参考《STM32F10x 中⽂参考⼿册》-9 中断和事件章节。
外部中断介绍EXTI 简介STM32F10x 外部中断/事件控制器(EXTI)包含多达 20 个⽤于产⽣事件/中断请求的边沿检测器。
EXTI 的每根输⼊线都可单独进⾏配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发),还可独⽴地被屏蔽。
EXTI 结构框图EXTI 框图包含了 EXTI 最核⼼内容,掌握了此框图,对 EXTI 就有⼀个全局的把握,在编程的时候思路就⾮常清晰。
从图中可以看到,有很多信号线上都有标号 9 样的“20”字样,这个表⽰在控制器内部类似的信号线路有 20 个,这与 STM32F10x 的 EXTI 总共有20 个中断/事件线是吻合的。
因此我们只需要理解其中⼀个的原理,其他的 19个线路原理都是⼀样的。
EXTI 分为两⼤部分功能,⼀个产⽣中断,另⼀个产⽣事件,这两个功能从硬件上就有所差别,这个在框图中也有体现。
从图中标号 3 的位置处就分出了两条线路,⼀条是 3-4-5 ⽤于产⽣中断,另⼀条是 3-6-7-8⽤于产⽣事件。
下⾯我们就来介绍下这两条线路:(1)⾸先看下产⽣中断的这条线路(1-2-3-4-5)1.标号 1 为输⼊线,EXTI 控制器有 20 个中断/事件输⼊线,这些输⼊线可以通过寄存器设置为任意⼀个 GPIO,也可以是⼀些外设的事件,这部分内容我们会在后⾯专门讲解。
输⼊线⼀般是存在电平变化的信号。
2.边沿检测电路,EXTI 可以对触发⽅式进⾏选择,通过上升沿触发选择寄存器和下降沿触发选择寄存器对应位的设置来控制信号触发。
边沿检测电路以输⼊线作为信号输⼊端,如果检测到有边沿跳变就输出有效信号 1 给红⾊框 3 电路,否则输出⽆效信号 0。
(单片机原理与应用实验)实验4外中断实验
可通过硬件电路和程序操作实现中断的暂停、延迟和关闭。
单片机中断的限制与局限性
一次中断只能处理单 一任务
每次中断响应只能处理一个事 件,无法同时执行多个中断任 务。
对中断处理的时间和 精度要求较高
中断程序需要快速响应和实现, 并保持高精度和低误差。
中断任务的开销和存 储空间较大
智能门锁
中断用于执行网络任务并接收无 线信号,保证网络的稳定和性能。
中断用于检测密码和指纹等,实 现智能门禁功能和安全保障。
交通信号灯
中断用于控制信号变化和流量监 测,实现交通安全和效率。
中断优先级的控制与调度
提高任务的优先级
终止当前执行的任务,并开始响应更高优先级的中断任务。
屏蔽低优先级的中断
阻止低优先级的中断过程,优先完成高优先级的中断任务并避免误操作。
采用合适的中断驱 动模式
不同的中断驱动模式有着不 同的优点和局限性,需要根 据实际情况及时调整。
对中断控制和优先 级进行优化
中断控制和优先级的设置能 够直接影响到中断系统的性 能和效率,应进行优化和梳 理。
定期检测和维护中 断系统
中断系统的稳定性和可靠性 需要定期检查和维护,及时 修复故障和调整优化。
可能是中断控制端口连接错误或电路设计有误,需要检查原理图和程序,并进行调试和 重组。
2 问题2:中断运行速度太慢。
可能是程序优化不当或中断优先级设置有误,需要进行程序的升级和重新排列优先级。
实验效果的总结与评估
实验优点
本次实验通过对中断控制的学习和探究,深入理解 了单片机系统设计的基本原理和应用方法。
常见中断相关问题与FAQ
1 中断和定时器有什么 2 什么情况下需要进行 3 如何调整中断控制的
单片机实验报告四 外部中断实验
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019. 4.30 实验成绩:实验四外部中断实验(一)实验目的1.掌握单片机外部中断原理;2.掌握数码管动态显示原理。
(二)设计要求1.使用外部中断0和外部中断1;2.在动态数码管上显示中断0次数,中断1用作次数清0,数码管采用74HC595驱动。
(三)实验原理1.中断:计算机执行主程序过程中,由于临时重要事件,需要暂停当前程序的运行,转到中断服务程序去处理临时事件,处理完后又返回原程序的断点处继续运行。
图1STC15单片机的中断系统包含21个中断源,2个中断优先级,二级中断服务嵌套,中断允许寄存器IE、IE2和INT_CLKO控制中断允许。
中断优先级寄存器IP、IP2管理中断优先级。
同优先级中断同时提出中断请求时,由内部的查询逻辑确定响应次序。
中断请求源中的外部中断0(INT0)和外部中断1(INT1)详述如下:1)外部中断0(INT0):中断信号由P3.2引脚输入。
通过IT0来设置中断请求的触发方式。
当IT0为“1”时,外部中断0为下降沿触发;当IT0为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。
2)外部中断1(INT1):中断信号由P3.3引脚输入。
通过IT1来设置中断请求的触发方式。
当IT1为“1”时,外部中断0为下降沿触发;当IT1为“0”时,无论是上升沿还是下降沿,都会引发外部中断0.一旦输入信号有效,则置位IE0标志,向CPU申请终端。
2.LED数码管是显示数字和字母的常见显示器件,由8个发光二极管构成,结构如图2:图2段码:a、b、c、d、e、f、g、dp段的二进制代码(a为最低位),控制显示字型。
位选:公共端com,控制数码管是否显示。
3.数码管动态显示原理:任何时刻只有一个数码管处于显示状态,单片机采用“扫描”方式控制各个数码管轮流显示,通常将所有数码管段码线的相应段并联在一起,由一个8位I/O 端口控制。
实验四-MCS-51单片机外部中断实验
实验四-MCS-51单片机外部中断实验实验目的:1. 学习MCS-51单片机的外部中断原理和使用方法;2. 掌握如何通过硬件中断和软件中断实现MCS-51单片机的响应机制;3. 了解MCS-51单片机外部中断的实际应用。
实验器材:MCS-51单片机开发板、按键开关、调试器。
实验原理:MCS-51单片机通过INT0和INT1两个硬件中断引脚实现外部中断。
当INT0外部中断线检测到低电平信号时,中断向量为0x0003;当INT1外部中断线检测到低电平信号时,中断向量为0x0013。
通过配置中断控制寄存器IE和TCON,可以实现对外部中断的使能、触发方式和优先级等的控制。
MCS-51单片机还可以通过软件方式实现外部中断,即通过软件方式扫描外部信号,并在检测到信号发生变化时触发相应的中断处理程序。
实现软件中断的方法是使用定时器功能,通过定时器中断触发中断服务程序,该程序扫描外部信号,并根据需要触发软件中断。
实验步骤:1. 将开发板上的按键开关连接到开发板的P3.2引脚。
按键开关按下时,P3.2引脚被拉低,可以触发外部中断。
2. 打开Keil μVision5软件,新建工程,选择芯片型号为STC89C52,保存并命名为“Exp4”。
3. 在主函数中声明中断函数,并在中断函数中打印提示信息。
4. 在主函数中初始化中断控制寄存器IE和TCON,开启INT0外部中断,并将中断优先级设置为最高。
5. 在主函数中使用无限循环,来保持程序一直运行,并定时打印提示信息,以验证程序是否正常运行。
6. 烧录程序到开发板上,先在开发板上不按下按键,观察是否正常打印提示信息。
然后按下按键,观察是否触发外部中断,进入中断函数并打印提示信息。
实验代码:#include<STC89C52.h>#include<stdio.h>// 定义外部中断0的中断服务函数void Interrupt0() interrupt 0{printf("External interrupt 0 has occured!\n");}// 打印提示信息printf("Program is running...\n");while(1){// 定时打印提示信息printf("Hello!\n");delay_ms(1000);}}注意事项:1. 写中断程序时,一定要注意将中断函数的声明放在程序开头,否则可能会出现中断无法触发的情况;2. 在使用中断相关功能的时候,务必仔细阅读数据手册中的相关章节,以确保正确使用并且避免出现不必要的错误;3. 在进行外部中断实验的时候,可以使用按键开关、光敏电阻等外部器件来模拟外部信号的变化,以测试程序的正确性。
中断及定时器实验报告
一、实验目的1. 理解中断和定时器的基本概念及工作原理。
2. 掌握51单片机中断系统和定时器的配置方法。
3. 学会使用中断和定时器实现特定功能,如延时、计数等。
4. 培养动手实践能力和问题解决能力。
二、实验原理中断是计算机系统中的一种机制,允许CPU在执行程序过程中,暂停当前程序,转去执行另一个具有更高优先级的程序。
51单片机具有5个中断源,包括两个外部中断(INT0、INT1)、两个定时器中断(定时器0、定时器1)和一个串行口中断。
定时器是51单片机内部的一种计数器,可以用于产生定时中断或实现定时功能。
51单片机有两个定时器,即定时器0和定时器1。
定时器可以工作在模式0、模式1、模式2和模式3。
三、实验内容及步骤1. 实验内容一:外部中断实验(1)实验目的:掌握外部中断的使用方法,实现按键控制LED灯的亮灭。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置外部中断,实现按键控制LED灯的亮灭。
2. 实验内容二:定时器中断实验(1)实验目的:掌握定时器中断的使用方法,实现LED灯闪烁。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置定时器中断,实现LED灯闪烁。
3. 实验内容三:定时器与外部中断结合实验(1)实验目的:掌握定时器与外部中断结合使用的方法,实现按键控制LED灯闪烁频率。
(2)实验步骤:- 使用Keil for 8051编译器创建项目。
- 根据电路原理图连接电路。
- 编写程序,配置定时器中断和外部中断,实现按键控制LED灯闪烁频率。
四、实验结果与分析1. 外部中断实验:成功实现了按键控制LED灯的亮灭。
当按下按键时,LED灯亮;松开按键时,LED灯灭。
2. 定时器中断实验:成功实现了LED灯闪烁。
LED灯每隔一定时间闪烁一次,闪烁频率可调。
3. 定时器与外部中断结合实验:成功实现了按键控制LED灯闪烁频率。
实验04:外部中断INT0、INT1控制流水灯左移、右移
实验四:外部中断系统实验一、实验目的1.结合理论教学,进一步熟悉外部中断INT0和INT1的基本概念和原理;2.理解掌握定时器控制寄存器TCON、中断允许控制寄存器IE、中断优先级别控制寄存器IP的功能和设置方法;3.了解并熟悉MCS-51单片机外部中断INT0和INT1的电路设计特点和应用特点;4.能够针对MCS-51单片机,进行外部中断INT0和INT1的初始化设置,能够完成简单中断服务程序的功能应用设计。
5.进一步熟悉、掌握MCS-51单片机指令系统和应用软件的编程方法和技巧。
二、实验设备、材料1.微型计算机(PⅣ以上);2.编程、汇编与模拟平台软件Keil uVision4;3.电子技术专业仿真软件protues运行平台;4.单片机实训开发电路板。
三、实验内容和实验步骤1.系统仿真电路参考原理图12.系统参考源程序1(用INT0控制流水灯左移1位,用INT1控制流水灯右移1位)已在实验板上演示ORG 0000HAJMP MAINORG 0003H ;INT0中断入口地址LJMP IN0ORG 0013H ;INT1中断入口地址LJMP IN1ORG 0020HMAIN:MOV TCON,#05HMOV IE,#85HMOV P2,#0FEHMOV A,#0FEHSJMP $IN0:CLR EARL A //左移MOV P2,ASETB EARETIIN1:CLR EARR A //右移MOV P2,ASETB EARETIEND3.系统参考源程序1(用8位发光二极管代表8位二进制数,用INT0控制加1递增,用INT1控制减1递减)已在实验板上演示ORG 0000HAJMP MAINORG 0003H ;INT0中断入口地址LJMP IN0ORG 0013H ;INT1中断入口地址LJMP IN1ORG 0020HMAIN:MOV TCON,#05HMOV IE,#85HMOV R0,#00HMOV A,#00HMOV P2,ASJMP $ IN0:INC R0MOV A,R0CPL AMOV P2,ARETIIN1:INC R0MOV A,R0CPL AMOV P2,ARETIEND4.系统参考源程序2(用INT0控制流水灯左移1位,用INT1控制流水灯右移1位)已在实验板上演示ORG 0000HAJMP MAINORG 0003H ;INT0中断入口地址CLR F0RETIORG 0013H ;INT1中断入口地址SETB F0RETIORG 0030HMAIN:MOV P2,#0FFHMOV TCON,#05HMOV IE,#85HMOV A,#7FHRRR:JNB F0,LLLRR A //右移MOV P2,AACALL DELAYSJMP RRRLLL:JB F0,RRRRL A //左移MOV P2,AACALL DELAYSJMP LLLDELAY:MOV R7,#8FH ;延时程序DELAY1:MOV R6,#0FFHDELAY2:MOV R5,#02HDELAY3:DJNZ R5,DELAY3DJNZ R6,DELAY2DJNZ R7,DELAY1RETEND。
单片机中断实验报告
通过单片机的下载接口,将可执行的二进制文件 下载到单片机中。
实验测试
通过按键触发外部中断,观察LED灯的状态变化, 验证程序的正确性。
04
实验结果与分析
中断响应时间测试
总结词
响应时间快
详细描述
在测试中,我们发现单片机的中断响应时间非常快,能够在极短的时间内对外 部事件做出响应。这主要得益于单片机的硬件架构和中断处理机制,使得单片 机能够迅速识别并处理外部事件。
提高编程能力
通过本次实验,我们认识到自己的编程能力还有很大的提升空间。在未来的学习中,我们将注重提高自 己的编程能力,包括代码的优化、调试技巧等方面。
THANKS
感谢观看
实验中的问题与解决方案
在实验过程中,我们遇到了一些问题,如中断触发条件不 稳定等,通过调整相关参数和优化代码,最终解决了这些 问题。
对实验的反思与建议
01
实验操作流程的不足
在实验过程中,我们发现操作流程仍存在一些不足之处,如某些步骤的
描述不够清晰,导致实验过程中出现了一些不必要的困惑。建议在后续
的实验指导书中对操作流程进行更加详细的描述。
深入学习单片机中断机制
通过本次实验,我们对单片机的中断机制有了初步的了解。在未来的学习中,我们计划深入学习单片机的中断机制, 了解更多关于中断的细节和应用技巧。
探索更多中断应用场景
除了本次实验中实现的按键中断和定时器中断外,我们还计划探索更多的中断应用场景,如串口中断、ADC中断等 ,以拓宽我们的知识面和应用能力。
05
结论与建议
实验结论
实验目标达成情况
实验目标是通过单片机实现外部中断和定时器中断,实验 过程中成功实现了外部按键中断和定时器中断,验证了单 片机的中断处理机制。
实验报告四中断系统实验
实验报告四中断系统实验实验报告四:中断系统实验一、实验目的本次中断系统实验的主要目的是深入理解计算机中断系统的工作原理和机制,掌握中断的处理过程,以及学会如何在实际编程中有效地运用中断来提高系统的性能和响应能力。
二、实验原理中断是指计算机在执行程序的过程中,当出现某种随机事件或异常情况时,暂停现行程序的执行,转而执行相应的中断处理程序,处理完后再返回原程序继续执行的过程。
中断系统主要由中断源、中断控制器和中断处理程序组成。
中断源可以是外部设备(如键盘、鼠标、打印机等)发送的信号,也可以是内部事件(如定时器溢出、算术运算错误等)产生的条件。
中断控制器负责对多个中断源进行优先级管理和分配,确定哪个中断请求能够被响应。
中断处理程序则是用于处理具体中断事件的一段代码。
在中断处理过程中,计算机需要保存当前程序的上下文(包括程序计数器、寄存器等),以便在中断处理完成后能够正确地恢复原程序的执行。
同时,中断处理程序需要尽快完成处理任务,以减少对系统性能的影响。
三、实验设备与环境本次实验使用的设备包括一台计算机、开发板以及相应的编程软件。
开发板上集成了中断控制器和相关的外部设备接口,以便进行中断实验的操作和观察。
编程软件采用了常见的集成开发环境(IDE),如 Keil、IAR 等,用于编写和调试中断处理程序。
四、实验步骤1、硬件连接首先,将开发板与计算机通过数据线连接,并确保连接稳定。
然后,根据实验要求,将外部设备(如按键、传感器等)正确连接到开发板的相应接口上。
2、软件开发(1)在编程软件中创建一个新的项目,并选择适合开发板的芯片型号。
(2)配置中断控制器的相关参数,如中断优先级、触发方式等。
(3)编写中断处理程序,在程序中实现对中断事件的具体处理逻辑。
例如,当按键被按下时,控制 LED 灯的亮灭;当传感器检测到特定值时,进行数据采集和处理。
(4)编写主程序,在主程序中初始化系统,并开启中断功能。
3、编译与下载完成程序编写后,对代码进行编译,确保没有语法错误和逻辑错误。
实验四中断系统实验报告格式(PDF)
实验四中断系统一、实验目的1.掌握单片机中断系统的结构;2.掌握单片机的5个中断源、中断过程及中断源编号;3.掌握C51中断服务函数的编写。
二、实验设备PC机(含Proteus和Keil软件)三、实验原理中断是一个过程,当CPU在处理某件事情时,外部又发生了另一紧急事件,请求CPU 暂停当前的工作而去迅速处理该紧急事件。
处理结束后,再回到原来被中断的地方,继续原来的工作。
引起中断的原因或发出中断请求的来源,称为中断源。
MCS-51单片机有5个中断源,分为2个中断优先级,每个中断源的优先级都可以由软件来设定,可实现两级中断嵌套。
5个中断源分别是:1.外部中断请求源:即外部中断0和1,由外部引脚INT0(P3.2)/INT1(P3.3)引入。
2.内部中断请求源TF0/TF1:定时/计数器T0/T1的溢出中断标志。
3.内部中断请求源TI、RI:串行口发送、接收中断标志。
MCS-51单片机有4个与中断有关的特殊功能寄存器:中断允许寄存器IE、中断优先级寄存器IP、TCON、SCON(TCON、SCON的相关位作中断源的标志位)。
在TCON中有四位是与外部中断有关的。
IT0/IT1:INT0/INT1触发方式控制位,可由软件进和置位和复位,IT0/IT1,INT0/INT1为低电平触发方式,IT0/IT1,INT0/INT1为负跳变触发方式。
IE0/IE1:INT0/INT1中断请求标志位。
当有外部的中断请求时,该就会置1(由硬件来完成),在CPU 响应中断后,由硬件将IE0/IE1清0。
四、实验内容1.编程实现:8个LED一直熄灭,每按一次按键,LED闪烁6次。
2.编程实现:8个LED一直闪烁,每按一次按键,8个LED流水一次。
3.编程实现:按一次单脉冲,8个LED闪烁;再按一次按键,8个LED流水;以此循环往复。
硬件连接:外设单片机引脚8个LED P1按键外部0中断P3.2五、实验结果1.画出单片机与8个LED、按键的连接电路原理图。
单片机外部中断实验
单片机外部中断实验 Document number【980KGB-6898YT-769T8CB-246UT-18GG08】实验6 外部中断实验(仿真部分)一、实验目的1. 学习外部中断技术的基本使用方法。
2. 学习中断处理程序的编程方法。
二、实验内容在INT0和INT1上分别接了两个可回复式按钮,其中INT0上的按钮每按下一次则计数加一,其中INT1上的按钮每按下一次则计数减一。
P1.0~ P1.3接LED 灯,以显示计数信号。
三、实验说明编写中断处理程序需要注意的问题是:1.保护进入中断时的状态,并在退出中断之前恢复进入时的状态。
2.必须在中断处理程序中设定是否允许中断重入,即设置EX0位。
3.INT0和INT1分别接单次脉冲发生器。
P1.0~ P1.3接LED灯,以查看计数信号.四、硬件设计利用以下元件:AT89C51、BOTTON、CAP、CAP-POL、CRYSTAL、RES、NOT、LED-Yellow。
设计出如下的硬件电路。
晶振频率为12MHz。
五、参考程序框图1.实验目的学会asm和C512.实验原理【硬件接法】控制LED,低电平点亮INT1接按键,按下时产生低电平【运行效果】程序工作于中断方式,按下按键K2后,LED点亮,秒后自动熄灭。
8051单片机有/INT0和/INT1两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断源以低电平或下降沿触发方式来输入中断请求信号。
/INT0和/INT1中断的入口地址分别是0003H和0013H。
TCON寄存器(SFR地址:88H)中的IT0和IT1位分别决定/INT0和/INT1的触发方式,置位时为下降沿触发,清零时为低电平触发。
实际应用时,如果外部的中断请求信号在产生后能够在较短时间内自动撤销,则可以选择低电平触发。
在中断服务程序里要等待其变高后才能返回主程序,否则会再次触发中断,产生不必要的麻烦。
如果外部的中断请求信号产生后可能长时间后才能撤销,则为了避免在中断服务程序里长时间无谓等待,可以选择下降沿触发。
外中断实验实验报告
一、实验目的1. 理解中断的概念和作用。
2. 掌握中断的实现方法。
3. 学习中断优先级的设置。
4. 掌握中断服务程序的设计。
二、实验环境1. 实验平台:计算机实验室2. 实验设备:计算机、实验箱、示波器、万用表等3. 实验软件:C语言编程软件三、实验原理1. 中断:中断是指计算机在执行程序的过程中,由于某个事件的发生而暂时停止当前程序的执行,转而执行处理该事件的程序。
中断事件可以是硬件设备请求服务,也可以是软件程序请求处理。
2. 中断优先级:中断优先级是指多个中断同时发生时,系统优先处理哪个中断。
中断优先级设置合理可以保证系统稳定运行。
3. 中断服务程序:中断服务程序是指处理中断事件的程序,它通常由中断向量表中的中断处理函数组成。
四、实验步骤1. 设计实验程序,实现外中断功能。
2. 编写中断服务程序,处理中断事件。
3. 设置中断优先级。
4. 编译、下载程序到实验设备。
5. 进行实验,观察实验现象。
五、实验内容1. 实现外中断功能(1)编写中断初始化程序,配置中断控制器,设置中断向量表。
(2)编写中断服务程序,处理中断事件。
(3)编写主程序,触发中断事件。
2. 设置中断优先级(1)根据实验需求,设置中断优先级。
(2)编写中断优先级控制程序,实现中断优先级设置。
3. 编译、下载程序(1)使用C语言编程软件编译实验程序。
(2)将编译后的程序下载到实验设备。
4. 进行实验(1)打开实验设备,启动实验程序。
(2)观察实验现象,验证中断功能、中断优先级设置等。
六、实验结果与分析1. 实验结果实验成功实现了外中断功能,中断服务程序能够正确处理中断事件。
中断优先级设置合理,系统运行稳定。
2. 实验分析(1)中断初始化程序正确配置了中断控制器,设置了中断向量表,为中断服务程序的执行提供了基础。
(2)中断服务程序能够正确处理中断事件,保证了系统的正常运行。
(3)中断优先级设置合理,确保了关键中断事件能够优先得到处理。
外部中断实验报告
一、实验目的1. 理解单片机外部中断的概念和工作原理。
2. 掌握MCS-51单片机外部中断的编程方法。
3. 通过实验验证外部中断在实际应用中的效果。
二、实验环境1. 实验设备:MCS-51单片机实验板、按键、LED灯、面包板、连接线等。
2. 开发环境:Keil uVision5软件。
三、实验原理外部中断是单片机的一个重要功能,用于响应外部事件。
当外部事件发生时,CPU可以暂停当前程序,转而执行中断服务程序,处理外部事件。
MCS-51单片机有两个外部中断源,即INT0和INT1。
四、实验内容1. 硬件连接将按键连接到单片机的INT0或INT1引脚,LED灯连接到单片机的某个I/O口。
具体连接方式如下:- 将按键的一端连接到单片机的INT0或INT1引脚,另一端连接到地。
- 将LED灯的正极连接到单片机的某个I/O口,负极连接到地。
2. 程序设计(1)初始化单片机```cvoid main() {EA = 1; // 开启总中断EX0 = 1; // 开启INT0中断IT0 = 1; // 设置INT0为下降沿触发P1 = 0xFF; // 初始化P1口为高电平,关闭LED灯 while(1) {// 主循环}}```(2)编写中断服务程序```cvoid ext0_isr() interrupt 0 {P1 = 0x00; // 点亮LED灯delay(500); // 延时0.5秒P1 = 0xFF; // 熄灭LED灯}```(3)编写延时函数```cvoid delay(unsigned int ms) {unsigned int i, j;for(i = 0; i < ms; i++)for(j = 0; j < 123; j++);}```3. 实验步骤1. 编写程序,并使用Keil uVision5软件进行编译和烧录。
2. 将程序烧录到单片机中,并连接好硬件电路。
3. 按下按键,观察LED灯是否闪烁。
单片机原理 中断实验-单片机原理-实验报告
宁德师范学院计算机系实验报告(2014—2015学年第2学期)课程名称单片机原理实验名称中断实验专业计算机科学与技术(非师)年级12级学号B********** 姓名王秋指导教师杨烈君实验日期2015.5.21实验步骤、实验结果及分析:1、使用Proteus ISIS 7 Professional应用程序,建立一个.DSN文件2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51、LED-YELLOW、BUTTON、7SEG-MPX8-CA-BLUE、RESPACK-8。
3、构建仿真电路4、创建一个Keil应用程序:新建工程项目文件;为工程选择目标器件(AT89C52);为工程项目创建源程序文件并输入程序代码;保存创建的源程序项目文件;把源程序文件添加到项目中。
5、把程序经过编译后生成的HEX文件添加到仿真电路中的处理器中(编辑元件→文件路径)程序代码:1.实现单按键控制Led灯闪烁#include"reg51.h"#define uchar unsigned charsbit Led1=P1^0; uchar Mode=0;void delay(int x) //定义时间间隔{while(x--);}void button_Cotrol() //根据按键模式执行相应的代码{if(Mode==0)Led1=0;if(Mode==1){Led1=~Led1;delay(1000);}}void int0() interrupt 0 //外中断0的中断编号为0{Mode=(Mode+1)%2; //更改按键模式}void main(){Led1=0; //置初值EA=1; //开放总中断EX0=1; //允许使用外中断0IT0=1; //选择负跳变来触发外中断while(1)button_Cotrol();}图1 单按键控制Led灯闪烁while(1)button_Cotrol();}图2 单按键多功能识别,控制4路Led灯闪烁3.实现0-99的计数器效果,按一下数值加1#include"reg51.h"#define uchar unsigned char#define disp_null 10sbit key=P3^2;uchar code tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //共阳数码管显示0~9的段码表uchar DispBuf[8];uchar sec=0;void delay(int x) //定义时间间隔{while(x--);}void PutTime(){DispBuf[7]=sec%10;while(1){P1=0x00;display();}}图3 0-99的计数器效果,按一下数值加1注:1、报告内的项目或设置,可根据实际情况加以补充和调整2、教师批改学生实验报告应在学生提交实验报告10日内。
实验外部中断实验报告
实验三定时中断实验一、实验目得1、掌握51单片机外部中断得应用。
2、掌握中断函数得写法。
3、掌握定时器得定时方法。
4、掌握LED数码管得显示。
二、实验内容1、用外部中断0测量负跳变信号得累计数,同时在LED数码管上显示出来。
2、用外部中断改变流水灯得方式。
3、用定时器T1得方式2控制两个LED以不同周期闪烁。
使用定时器T1得方式2来控制P0、0、P0、1引脚得两个LED分别以1s与2s得周期闪烁。
三、实验仿真硬件图在Proteus软件中建立如下图所示仿真模型并保存。
}同级自然优先级:外部中断0→定时器T0中断→外部中断1→定时器T1中断→串行口中断。
中断优先级别得设定:实验二要求:初始状态为P0、0~P0、7得8个LED显示灯依次循环点亮;外部中断0服务程序为8个LED灯,左4个,右4个闪烁8次,外部中断1服务程序8个LED灯,间隔闪烁8次。
⑴设定外部中断0为高优先级,先执行外部1中断,过程中用外部0中断来将其中断,反之不行。
注意保护现场。
⑵设定外部中断1为高优先级,先执行外部0中断,过程中用外部1中断来将其中断,反之不行。
注意保护现场。
实验三(调试下列程序,在错误行后面注明错误及改正方法):#include <reg51、h>#define ucharunsigned char;sbit D0=P1^0;sbitD1=P1^1;uchar a,b;void main(){EA=1;ET1=1;TMOD=0x20;ﻩTL1=6;ﻩTR0=1;a=0;ﻩb=0;ﻩwhile(1);}void t1()interrupt 1{ﻩa++;ﻩb++;if(a=1000){D0=~D0ﻩa=0;}if(b=4000)ﻩ{ﻩD1=~D1;ﻩﻩb=0;}写出源程序,并注释实验报告格式实验三定时中断实验学院: 专业:年级: 实验时间: 姓名: 学号: 指导教师:一、实验目得1、掌握51单片机外部中断得应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合■设计⃞创新实验日期:2018.05.29 实验成绩:实验四外中断实验(一)实验目的1.掌握单片机外部中断原理;2.掌握数码管动态显示原理。
(二)设计要求1.使用外部中断0和外部中断1;2.在动态数码管上显示中断0次数,中断1用作次数清0,数码管采用74HC595驱动。
(三)实验原理1.中断所谓中断是指程序执行过程中,允许外部或内部时间通过硬件打断程序的执行,使其转向为处理外部或内部事件的中断服务程序中去,完成中断服务程序后,CPU返回继续执行被打断的程序。
如下图所示,一个完整的中断过程包括四个步骤:中断请求、中断响应、中断服务与中断返回。
当中断请求源发出中断请求时,如果中断请求被允许的话,单片机暂时中止当前正在执行的主程序,转到中断处理程序处理中断服务请求。
中断服务请求处理完后,再回到原来被中止的程序之处(断电),继续执行被中断的主程序。
如果单片机没有终端系统,单片机的大量时间可能会浪费在是否有服务请求发生的查询操作上,即不论是否有服务请求发生,都必须去查询。
因此,采用中断技术大大地提高了单片机的工作效率和2.IAP15W4K58S4单片机的中断请求IAP15W4K58S4单片机的中断系统有21个中断请求源,2个优先级,可实现二级中断服务嵌套。
由IE、IE2、INT_CLKO等特殊功能寄存器控制CPU是否相应中断请求;由中断优先级高存器IP、IP2安排各中断源的优先级;同优先级内2个以中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。
中断请求源中的外部中断0(INT0)和外部中断1(INT1)详述如下:(1)外部中断0(INT0):中断请求信号由P3.2引脚输入。
通过IT0来设置中断请求的触发方式。
当IT0为“1”时,外部中断0为下降沿触发;当IT0为“0”时,无论是上升沿还是下降沿,都会引发外部中断0。
一旦输入信号有效,则置位IE0标志,向CPU申请中断。
(2)外部中断1(INT1):中断请求信号由P3.3引脚输入。
通过IT1来设置中断请求的触发方式。
当IT1为“1”时,外部中断1为下降沿触发;当IT1为“0”时,无论是上升沿还是下降沿,都会引发外部中断1。
一旦输入信号有效,则置位E1标志,向CPU申请中断。
中断源是否有中断请求,是由中断请求标志来表示的。
在IAP15W4K58S4单片机中,外部中断0、外部中断1等请求源的中断请求标志分别由特殊功能寄存器TCON和SCON控制,格式如下:(1)TCON寄存器中的中断请求标志。
TCON为定时器T0与T1的控制寄存器,同时也锁存T0和T1的溢出中断请求标志及外部中断0和外部中断1的中断请求标志等。
格式如下图所示:D7D6D5D4D3D2D1D088H与中断有关的各标志位功能如下:①TF1:T1的溢出中断请求标志。
T1被启动计数后,从初值做加1计数,计满溢出后由硬件置位TFI,同时向CPU发出中断请求,此标志一直保持到CPU 响应中断后才由硬件自动清0。
也可由软件查询该标志,并由软件清0。
②TF0:T0的溢出中断请求标志。
T0被启动计数后,从初值做加1计数,计满溢出后由硬件置位TF0,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清0。
也可由软件查询该标志,并由软件清0。
③IE1:外部中断1的中断请求标志。
当INT1(P3.3)引脚的输入信号满足中断触发要求时,置位IE1,外部中断1向CPU申请中断。
中断响应后中断请求标志自动清0。
④IT1:外部中断1(INT1)中断触发方式控制位。
当(IT1)=1时,外部中断1为下降沿触发方式。
在这种方式下,若CPU检测到INT1出现下降沿信号,则认为有中断申请,随即使IE1标志置位。
中断响应后中断请求标志会自动清0,无须做其他处理。
当(T1)=0时,外部中断1为沿信号还是上升沿信号,都认为有中断申请,随即使IE1标志置位。
中断响应后中断请求标志会自动清0,无须做其他处理。
⑤IE0:外部中断0的中断请求标志。
当INT0(P3.2)引脚的输入信号满足中断触发要求时,置位IE0,外部中断0向CPU申请中断。
中断响应后中断请求标志自动清0。
⑥IT0:外部中断0的中断触发方式控制位。
当(IT0)=1时,外部中断1为下降沿触发方式。
在这种方式下,若CPU检测到INT0(P3.2)出现下降沿信号,则认为有中断申请,随即使IE0标志置位。
中断响应后中断请求标志会自动清0,无须做其他处理。
当(IT0)=0时,外部中断0为上升沿触发和下降沿触发触发方式。
在这种方式下,无论CPU检测到INT0(P3.2)引脚出现下降沿信号还是上升沿信号,都认为有中断申请,随即使IE0标志置位。
中断响应后中断请求标志会自动清0,无须做其他处理。
(2)SCON寄存器中的中断请求标志。
SCON是串行口控制寄存器,其低2位TI和RI锁存串行口1的发送中断请求标志和接收中断请求标志格式如下:D7D6D5D4D3D2D1D098H中断请求标志和接收中断请求标志的功能如下:①TI:串行口1发送中断请求标志。
CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧,硬件将使TI置位。
但CPU响应中断时并不清除TI,必须由软件清除。
②RI:串行口1接收中断请求标志。
在串行口1允许接收时,每接收完一个串行帧,硬件将使RI置位。
同样,CPU在响应中断时不会清除RI,必须由软件清除。
中断请求源中的外部中断0(INT0)和外部中断1(INT1)等都是可屏蔽中断,由片内的中断允许寄存器IE控制,,可对中断的开放和关闭实现两级控制。
所谓两级控制,就是有一个总的开关中断控制位EA(IE.7位),当EA=0时,所有的中断请求被屏蔽,CPU对任何中断请求都不接受,因此称EA为系统中断允许总开关控制位;当EA=1时,CPU开放中断,但5个中断源的中断请求是否允许,还要由其对应的中断请求允许控制位状态决定。
格式如下:D7D6D5D4D3D2D1D0A8H 其中EX1是外部中断1中断允许位,EX1=0,禁止外部中断1中断;EX1=1,允许外部中断1中另外,单片机中的中断请求源还具有两个中断优先级,存放在特殊功能寄存器IP中,只要利用程序改变其内容就可以对各个中断源的中断优先级进行控制,其格式如下:D7D6D5D4D3D2D1D0B8H其中PX1是外部中断1的中断优先级控制位,PX1=1,外部中断1为高优先级;PX1=0,外部中断1为低优先级。
PX0是外部中断0的中断优先级控制位,PX0=1,外部中断0为高优先级;PX0=1,外部中断0为低优先级。
根据上述原理分析,单片机要相应中断请求,首先要使IE寄存器中的中断总允许位EA=1,再使外部中断0和1所对应的中断请求标志为1和中断允许位为1即可。
本实验要求对中断0计数再利用中断1清0,只需要在中断0的中断服务子程序加上一个计数器,在中断1的中断服务子程序对该计数器清0,最后利用数码管显示该计数器的值便可实现。
(四)实验设备硬件:PC机、USB数据传输线、STC单片机综合实验箱软件:兼容51单片机的Keil uvision5集成开发环境、STC-ISP单片机烧录软件(五)实验结果实验源代码如(七)所示。
对代码进行编译,提示0错误0警告,生成hex文件。
将单片机试验箱和电脑通过USB数据线连接,打开STC-ISP检测串口点击点开程序文件,选择刚才生成的hex文件,点击下载程序,烧录成功(六)结果讨论与心得体会结果分析讨论:将程序烧录至单片机后,可观察到数码管的高三位显示000,其他位消隐。
按下SW17(外部中断0),数码管对此计数,当按下SW18(外部中断1),数码管显示000,即定时器清零,与预期效果一致,完成实验。
心得体会:通过本次实验,我掌握了外部中断的原理,学会了利用按键来产生中断,还了解了如何使用数码管显示,希望通过自己多次尝试能在今后实验中熟练使用外部中断并将其运用到其他方面。
(七)附录:实验源代码P4DATA 0C0H;P5DATA0C8H;P4M1DATA0xB3;P4M0DATA0xB4;P5M1DATA0xC9;P5M0DATA0xCA;;******************************************************/P_HC595_SER BIT P4.0;P_HC595_RCLK BIT P5.4;P_HC595_SRCLK BIT P4.3;;******************************************************/ LED8DATA30H;display_index DATA38H;INT0_cnt DATA39H;;******************************************************/ ORG0000H;LJMP F_Main;ORG0003H;LJMP F_INT0_Interrupt;ORG0013H;LJMP F_INT1_Interrupt;;******************************************************/ ORG0100H;F_Main:CLR A;MOV P4M1,A;MOV P4M0,A;MOV P5M1,A;MOV P5M0,A;MOV display_index,#0;MOV R0,#LED8;MOV R2,#8;CLR IE1;CLR IE0;SETB EX1;SETB EX0;SETB IT0;SETB IT1;SETB EA;MOV INT0_cnt, #0;L_MainLoop:LCALL F_delay_ms;LCALL F_DisplayScan;LJMP L_MainLoop;F_delay_ms:MOV R2,#20;D1:MOV R3,#20;D2:DJNZ R3, D2;DJNZ R2, D1;RETT_Display:;DB03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH,077H,07CH,039H,05EH,079H,071H; DB000HT_COM:DB020H,040H,080H;F_Send_595:PUSH02H;MOV R2, #8;L_Send_595_Loop:RLC A;MOV P_HC595_SER,C;SETB P_HC595_SRCLK;CLR P_HC595_SRCLK;DJNZ R2,L_Send_595_Loop;POP02H;RETF_DisplayScan:PUSH DPH;PUSH DPL;PUSH00H;MOV A,INT0_cnt;MOV B,#100;DIV ABMOV LED8+0,A;MOV A, #10;XCH A, B;DIV AB;MOV LED8+1,A;MOV LED8+2, B;MOV DPTR,#T_COM;MOV A,display_index;MOVC A,@A+DPTR;CPL A ;LCALL F_Send_595;MOV DPTR, #T_Display;MOV A, display_index;ADD A, #LED8;MOV R0, A;MOV A, @R0;MOVC A, @A+DPTR;LCALL F_Send_595;CLR P_HC595_RCLK;SETB P_HC595_RCLK;INC display_index;MOV A, display_index;CJNE A,#3,L_QuitDisplayScan;L_QuitDisplayScan:POP00H;POP DPL;POP DPH; RETF_INT0_Interrupt:INC INT0_cnt;RETIF_INT1_Interrupt:MOV INT0_cnt , #00H ; RETIEND。