实验三:外部中断实验
外部中断计数实验报告

一、实验目的1. 理解单片机外部中断的工作原理和触发条件。
2. 掌握如何通过外部中断实现计数功能。
3. 学习中断服务程序的设计方法。
4. 提高单片机编程和调试能力。
二、实验环境1. 单片机:80C512. 开发工具:Keil uVision3. 实验电路:按键、LED灯、单片机及其相关外围电路三、实验原理外部中断是指单片机通过外部引脚接收到的中断信号,使得CPU暂停当前程序,转而执行中断服务程序。
本实验通过外部中断实现计数功能,具体原理如下:1. 将单片机的某个外部引脚(如P3.2)设置为外部中断0(INT0)的触发引脚。
2. 在外部中断0的中断服务程序中,设置一个计数变量,每次中断发生时,计数变量加1。
3. 将计数变量的值通过LED灯显示出来,以观察计数过程。
四、实验步骤1. 创建Keil uVision项目,并添加80C51固件库。
2. 编写C语言程序,实现以下功能:- 初始化外部中断0,设置中断触发方式为下降沿触发。
- 初始化定时器,用于产生中断。
- 编写外部中断0的中断服务程序,实现计数功能。
- 编写主函数,用于设置单片机的工作状态和显示计数结果。
3. 编译并下载程序到单片机。
4. 连接实验电路,包括按键、LED灯和单片机及其相关外围电路。
5. 观察实验现象,验证计数功能是否实现。
五、实验结果与分析1. 实验现象:按下按键,LED灯显示的计数值加1。
2. 分析:- 外部中断0的中断服务程序被正确调用。
- 计数变量在每次中断发生时加1。
- LED灯能够正确显示计数结果。
六、实验总结1. 本实验成功实现了通过外部中断实现计数功能,验证了单片机外部中断的工作原理。
2. 通过编写中断服务程序,掌握了中断编程方法。
3. 实验过程中,遇到了一些问题,如中断服务程序编写错误、程序编译错误等,通过查阅资料和调试,最终解决了问题。
4. 通过本次实验,提高了单片机编程和调试能力,加深了对单片机外部中断的理解。
外部中断实验原理

外部中断实验原理一、实验原理外部中断是计算机科学中的一个重要概念,它允许程序在特定的事件发生时被唤醒或中断。
外部中断对于实现实时计算、多任务处理、异常处理等重要功能具有关键作用。
本实验旨在深入理解外部中断的工作原理,并通过实例分析来揭示其实际应用中的关键点。
二、详细内容分析1. 中断触发机制外部中断是由特定事件触发的,例如输入输出操作完成、定时器溢出、硬件错误等。
当中断触发条件满足时,硬件会保存当前程序的状态,并将控制权转移到指定的中断处理程序。
2. 中断优先级当多个中断同时发生时,系统需要根据一定的优先级规则来确定执行哪个中断处理程序。
中断优先级的高低取决于具体应用的需求,通常可以根据重要性和实时性要求来设定。
3. 中断处理程序中断处理程序(Interrupt Service Routine, ISR)是一段特定的代码,用于在发生中断时处理事件并做出响应。
ISR通常包括保存寄存器状态、处理中断事件、恢复寄存器状态以及执行相应的操作等步骤。
4. 中断嵌套与处理器状态在多任务操作系统中,可能存在多个中断同时发生的情况。
此时,系统需要根据优先级逐一处理中断,并保存每个中断处理前的处理器状态,以便在处理完中断后恢复到原来的状态。
5. 中断屏蔽与唤醒某些情况下,系统可能需要暂时屏蔽某些中断,以避免干扰关键任务的执行。
同时,某些中断可能需要唤醒睡眠状态的进程或线程。
这些操作需要通过特定的指令或机制来实现。
三、实例分析以一个简单的例子来说明外部中断的工作流程:假设我们有一个基于Linux 系统的嵌入式系统,当某个硬件设备完成一项任务(如数据传输)时,会触发一个外部中断。
系统会保存当前的任务状态,并执行相应的中断处理程序(ISR)。
ISR会读取硬件设备的数据,并执行相应的操作(如数据处理、任务调度等)。
在ISR执行完毕后,系统会恢复之前保存的任务状态,并继续执行之前的任务。
这个例子中,我们看到了外部中断如何被用于实时处理任务、唤醒睡眠状态的进程以及调度任务等操作。
第三章 stm32 cubemx 外部中断实验以及proteus仿真

第三章stm32 cubemx 外部中断实验以及proteus仿真文章目录前言一、中断二、配置步骤1.基础配置2.配置引脚,生成工程3.开启中断,设置中断优先级三.找到主函数,加入代码,编译。
四.寻找中断回调函数五.利用中断回调函数六.Proteus仿真或者烧录可直接看到效果。
总结前言这一章,将向大家介绍如何使用STM32F103 的外部中断。
前面的两章掌握了STM32F103 的IO 口最基本的操作。
本章将介绍如何将STM32F103 的外部中断,STM32的每个IO都可以作为外部中断输入,每个外部中断可以配置单独的触发方式(上升沿,下降沿或者双边沿触发)。
本章以中断的方式,实现在上一章中所实现的效果。
一、中断所谓中断,是指CPU在正常运行程序时,由于内部/外部事件或由程序预先安排的事件,引起CPU中断正在运行的程序,而转到为内部/外部事件或为预先安排的事件服务的程序中去,服务完毕,再返回去执行波暂时中断的程序。
stm32的中断简言之就是,出现某次事件产生中断,暂停正在执行的主程序,去执行目标程序,执行完毕后返回主程序,继续执行。
中断又分为外部中断,串口中断,定时器中断等等二、配置步骤1.基础配置步骤详情参考:第一章stm32 cubemx基础配置实验以及proteus 8的使用1)sys中,选好调试方式,DEBUG中选中Serial Wire,实际上板子测试时会占用PA13和PA14两个I/O口,用作下载或者调试。
2)RCC时钟,晶振选择,选择HSE(外部高速时钟)为Crystal/Ceramic Resonator,外部低速时钟(LSE)可有可无。
3)时钟配置,记录系统时钟频率,这里是72M用作仿真时选择芯片的晶振频率。
4)其他配置此工程不用,暂不配置。
2.配置引脚,生成工程点击想要用到的引脚,鼠标左击选择GPIO_EXTI,GPIO_OUTPUT,我用到了PA1、PA4、PA5(自选)三个引脚,PA1作为外部中断的引脚,PA4、PA5两个引脚作为两个LED灯引脚,其他配置为cubemx默认状态即可。
实验3 EXIT按键实验

实验三EXIT按键实验一.实验简介STM32的GPIO作为EXTI(外部中断)输入功能实现按键所对应的灯亮起。
二.实验目的1、掌握STM32的GPIO作为EXTI(外部中断)输入功能的使用方法2、了解STM32的GPIO作为外部中断使用的具体工作过程三.实验内容利用STM32读取外部按键状态,按键按下一次产生一次外部中断,在中断处理函数中使按键所对应的灯亮起。
四.实验设备硬件部分:PC计算机(宿主机)、STM32实验板、JLINK。
软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。
五.实验步骤1. 关掉实验箱电源。
将CPU板插接在JK1,JK2上,注意CPU板的插接方向。
按照前面连接关系表将硬件连接好。
2. 将J-Link下载线插头插入到CPU板的JTAG下载插座,依次打开实验箱的电源、主板电源、CPU板电源。
3. 打开工程目录下的——实验4:按键中断实验—>MDK_ARM—> Project.uvproj4. 将编译生成的按键中断.hex 文件下载到CPU板,并观察实验现象。
5. 通过J-Link进行硬件仿真,对照实验现象,逐步分析外部中断工作过程。
六.实验结果及测试实验结果仿真:main.c部分代码如下图:Stm32f10x_it.c部分代码如下图:bsp_exti.c部分代码如下图:bsp_exti.h部分代码如下:七.实验总结实验表明,利用软件仿真结果可以发现,再按下按键后电位并未发生变化,再按一次(相当于松开按键)由高电平变为低电平,也就是灯变亮,再次按下后松开,灯灭,由此可以说明利用STM32读取外部按键状态,按键按下一次产生一次外部中断,在中断处理函数中使按键所对应的灯亮起。
采用外部中断的方式控制彩灯的各种变化运行

单片机实验报告21、实验目的:学会中断的使用方法采用外部中断的方式控制彩灯的各种变化运行2、实验工具单片机最小应用系统、THKL-C51仿真器、3、实验步骤1.首先分析题目的要求2.根据要求画出流程图3.确定主程序的内容(根据本题要求,主程序中主要写的LED灯向左移的程序,然后写向右移的程序,接下来是LED随机亮的程序(主要是通过查表法来实现),然后调用外部中断程序(主要是标志量flag 的自增程序),然后将整个程序编写完整)4.打开Keil uV ision 4软件,建立新的工程和文件,将主程序写入文件中,并且调试至无错误。
连接好外部的硬件系统,开始调试并运行,查看效果,并且记录结果。
4、实验主要程序#include <reg51.h>#include<stdio.h>#include<intrins.h>#define uchar unsigned charuchar flag=0; //定义变量void delayms() //定义延迟函数(250*250*2=0.125秒){unsigned char m,n;for(m=0;m<250;m++)for(n=0;n<250;n++);}void main(){uchar inum,i; //定义变量uchar dispalycode[8]={0x7e,0xbd,0x6a,0x5e,0x15,0x36,0x9b,0xaa}; //定义数组uchar LED=0xfe;P0=LED; // 亮一盏LED灯EA=1; //开启中断总控制位IT0=1; //外部0中断,下降沿触发EX0=1; //允许外部中断0中断while(1) //进入循环{if(flag==0) //判断标志位{delayms(); //延迟LED=_crol_(LED,1); //一盏LED灯循环左移P0=LED;}if(flag==1) //判断标志位{delayms(); //延迟LED=_cror_(LED,1); //一盏LED灯循环右移P0=LED;}if(flag==2) //判断标志位{inum=0;for(i=0;i<8;i++){inum++;delayms();P0=dispalycode[inum];} //查表法LED灯随机闪}}}void intersvr0(void) interrupt 0 using 1 //INT0中断服务程序{flag++;//标志位自增if(flag>2) flag=0; //判断标志位,大于2则置0}5、实验结果按键后给单片机下降沿脉冲,按下第一次键后LED灯依次向左移,再按下第二次键后LED灯依次向右移,再按下第三次键后LED灯随意亮,记下来按键后就重复前三次的情况,与题目的要求相符合。
单片机外部中断实验报告

单片机外部中断实验报告实验三外部中断实验报告班级:学号:姓名:教师:一、实验LI的1、掌握单片机外部中断的原理及过程。
2、掌握单片机外部中断程序的设计方法。
3、掌握单片机外部中断时中断方式的选择方法。
二、实验内容如下图所示,P3.2设为输入,P2设为输出位,连有8个发光二极管DPD8O每当发生外部中断时,发光二极管以向下流水灯的方式点亮。
分别选择边沿触发外部中断放是和电平触发外部中断方式两种。
三、编程提示1、P3 口是8位准双向口,具有双重功能:第一功能和P1 口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下:P3. 0RXD串行输入口P3. 1TXD串行输出口P3. 2INTO外部中断0请求输入线P3. 3INT1外部中断1请求输入线P3.4TO定时器/计数器TO外部计数器脉冲输入线P3. 5T1定时器/计数器T1外部计数器脉冲输入线P3. 6WR外部数据存贮器写脉冲输出线P3. 7RD外部数据存贮器读脉冲输出线2、各中断服务程序入口地址:外部中断003H定时器/计数器T1溢出中断OBH外部中断113H定时器/计数器1BH串行口中断23H3、外部中断的产生条件中断允许寄存器IE:EAESET1EX1ET0EX0(1)外部中断源允许中断(中断0: EX0=l;中断1: EXl=l)o(2)CPU 开中断(EA二1)。
(3)外部中断方式CPU发出中断申请。
4、外部中断方式的选择控制TCOX:TF1TR1TF0TR0IE1IT1IE0IT0IT0是选择文字则外部中断0请求(INTO)边沿触发方式或电平触发方式的控制位。
前一方式IT0二1,后一方式IT0二0。
IT1是选择外部中断1请求(INT1)为边沿触发方式或电平触发方式的控制位。
前一方式IT1=1,后一方式ITl=0o当8031复位后,TCON被清0。
5、外部中断电路负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。
单片机中断实验实训报告

一、实验背景随着电子技术的飞速发展,单片机因其体积小、成本低、功能强大等优点,在各个领域得到了广泛应用。
中断技术是单片机设计中非常重要的一部分,它允许单片机在执行程序的过程中,能够及时响应外部事件,从而提高系统的实时性和效率。
本实训旨在通过实验,加深对单片机中断系统的理解,掌握中断系统的使用方法,并学会在实际应用中灵活运用中断技术。
二、实验目的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. 编译程序,下载到单片机实验板上。
井冈山大学 单片机实验(3个)

实验一外部中断实验(急救车与交通灯)一、实验目的1、学习外部中断技术的基本使用方法。
2、学习中断处理程序的编程方法。
二、实验要求有急救车到达时,两向交通信号灯为红,以便让急救车通过路口的时间为5秒,急救车通过后交通信号灯恢复中断状态。
本实验以按键为中断申请,表示有急救车通过。
三、实验器材单片机开发板、万利仿真机、稳压电源、计算机三、实验原理1、工作原理:本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。
要保护的地方,除了累加器ACC、标志寄存器PSW外,还要注意。
一是主程序中的延时程序和中断处理程序中的延时程序不能混用,本实验中,主程序延时用的寄存器和中断延时用的寄存器应不相同。
2、工作框图四、实验电路与连线五、实验源代码;FOR EAT598CS273 EQU 0F200HORG 0000HLJMP STARTORG 0003H ;INT 0 中断入口地址LJMP INT0ORG 0040HSTART:MOV SP,#60HSETB EX0 ;INT 0 中断有效SETB IT0SETB EALCALL STATUS0 ;初始状态(都是红灯) CIRCLE: LCALL STATUS1 ;南北绿灯,东西红灯LCALL STATUS2 ;南北绿灯闪转黄灯,东西红灯LCALL STATUS3 ;南北红灯,东西绿灯LCALL STATUS4 ;南北红灯,东西绿灯闪转黄灯LJMP CIRCLEINT0:PUSH PSW ;保护现场PUSH 2PUSH ACCMOV DPTR,#CS273MOV A,#0FH ;南北,东西都亮红灯MOVX @DPTR,AMOV R2,#50 ;延时8秒LCALL DELAYPOP ACC ;恢复现场MOVX @DPTR,APOP 2POP PSWRETISTATUS0: ;南北红灯,东西红灯MOV DPTR,#CS273MOV A,#0FHMOVX @DPTR,AMOV R2,#10 ;延时2秒LCALL DELAYRETSTATUS1: ;南北绿灯,东西红灯MOV DPTR,#CS273MOV A,#96H ;南北绿灯,东西红灯MOVX @DPTR,AMOV R2,#50 ;延时5秒LCALL DELAYRETSTATUS2: ;南北绿灯闪转黄灯,东西红灯MOV DPTR,#CS273MOV R3,#03H ;绿灯闪3次FLASH: MOV A,#9FHMOVX @DPTR,AMOV R2,#03HLCALL DELAYMOV A,#96HMOVX @DPTR,AMOV R2,#03HLCALL DELAYDJNZ R3,FLASHMOV A,#06H ;南北黄灯,东西红灯MOVX @DPTR,AMOV R2,#10 ;延时1秒LCALL DELAYRETSTATUS3: ;南北红灯,东西绿灯MOV DPTR,#CS273MOV A,#69HMOVX @DPTR,AMOV R2,#50 ;延时5秒LCALL DELAYRETSTATUS4: ;南北红灯,东西绿灯闪转黄灯MOV DPTR,#CS273MOV R3,#03H ;绿灯闪3次FLASH1: MOV A,#6FHMOVX @DPTR,AMOV R2,#03HLCALL DELAYMOV A,#69HMOVX @DPTR,AMOV R2,#03HLCALL DELAYDJNZ R3,FLASH1MOV A,#09H ;南北红灯,东西黄灯MOVX @DPTR,AMOV R2,#10 ;延时1秒LCALL DELAYNOPRETDELAY: ;延时子程序PUSH 2PUSH 1PUSH 0DELAY1: MOV 1,#00HDELAY2: MOV 0,#0B2HDJNZ 0,$DJNZ 1,DELAY2 ;延时100 mSDJNZ 2,DELAY1POP 0POP 1POP 2RETEND实验二单片机内部定时器应用一、实验目的1、理解单片机内部定时器的工作原理及使用方法2、了解单片机定时中断程序的编写和调试方法3、掌握定时器的基本使用方法二、实验要求由8031内部定时器1,按连接方式1工作,即作为16位定时器的使用每0.05秒钟T1溢出中断一次。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
;
()
{
;
;
;
( ) {
;*清除中断标志*
}
;*通知中断处理结束*
}
()
{
设定相应的引脚,为输出;设置为功能
;
;
;
设置外部中断触发方式
;初始化为下降沿中断
;
0F;清除所有外部中断标志
设置,将外部中断分配到向量
;将所有的中断源都分配给
( );
( );使能给外部中断
<<外部中断的通道号是
实验三:外部中断实验
【实验目的】
掌握系列处理器的中断处理工作原理
掌握外部中断的寄存器设置
掌握中断服务程序的在下的编程方法
【实验内容】
借助于外部中断,将按键动作进行累加计数,用个指示当前按键的次数。
【实验原理】
系列可以管理最多个外部中断,并将这些中断源最终通过或者提交给核进行处理。外部中断也在管理之中,通过设置相应的外部中断寄存器,可以对外部按键的输入进行中断处理。
.若要使用向量来完成此功能,如何修改代码?
.若要在设置中,将的是能寄存器中的使能位(即:的位)清,此中断服务程序还会执行吗?怎么样才会执行?写出让出现上述程序相同的现象的程序。
的中断处理通道和相应的寄存器管理如下图
具体的寄存器功能请参照教材,一章节。
外部中断寄存器见下图
根据需要可以设置外部中断的方式和极性,寄存器中断实验的电路。按键要接到的任一引脚上。下图以为例:
用建立一个工程,命名为,并添加一个文件到项目中。具体步骤参照实验一和实验二。
();让程序停在这里,等待中断
;
}
仔细分析上述代码,用编译后在中运行,记录运行结果。
【思考与分析】
.分析此中断服务处理程序,还缺少哪些部分?试着补全并验证(可以试着去除等待按键那条语句“( ) {”和对应的“}”)。
.若在硬件电路设计时候将按键变成按下产生高电平,抬起为低电平。试着用上升沿产生中断,重试此程序。