实验二--外部中断实验报告

合集下载

外部中断计数实验报告

外部中断计数实验报告

一、实验目的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 学习外部中断处理程序的编程方法。

二、实验内容1在实验一内容的基础上增加允许急救车优先通过的要求;2 急救车到达时(产生外部中断),交通信号为全红,以便让急救车通过3 急救车通过路口时间为10秒(四个红灯亮10秒)。

急救车通过后,交通灯恢复原状态(中断前的状态);4 中断申请信号为单脉冲“”。

三、实验原理图四、实验程序框五、实验步骤1、检查试验仪,确认相应单片机放置位置,确认无误后将试验仪的USB 数据线连接电脑;2、打开单片机电源开关,运行MEFlash 软件,确认电脑与试验仪连接成功;3、将A T89S52的P0和P2口用短接线LED 灯的端口相连;4、运行KC 编辑软件,调整好程序,并生成相应的.HEX 文件;5、使用MEFlash 软件,将生成的.HEX 文件烧录到单片机中,运行成功;6、测试中断是否运行正常,进行调试,确保程序正常运行。

六、实验程序清单#include<reg51.h>//*******延时1ms 秒********void delay(unsigned int i){unsigned int j;while(i--)交通灯程序的流程图{//对于11.0592M晶振延时越是1msfor(j=0;j<125;j++){{;}}}}//*****延时结束*******// k 代表黄灯闪烁的次数void blink(unsigned int k){for(;k>0;k--) //黄灯闪烁5次{P2=0xF0;delay(300);P2=0xFF;delay(300);}}//******主函数******//******主函数******void main(){P0=0x0F; //初始状态东西南北红灯全亮P2=0xFF;delay(2000) ;EA=1; //开启中断IT0=0 ;EX0=1;//D27到D24分别代表东西南北绿灯//D07到D04分别代表东西南北红灯// D23到D20四灯代表黄灯while(1){P0=0xCF; //南北红灯亮P2=0x3F; //东西绿灯亮delay(2000) ;P2=0xFF; //东西绿灯灭,黄灯闪烁5次blink(5);P0=0x3F; //东西红灯亮P2=0xCF; //南北绿灯亮delay(2000) ;P0=0x3F; //东西红灯亮,黄灯闪烁5次blink(5);}}void int0(void)interrupt 0{unsigned int Temp0;unsigned int Temp2;EA=0;Temp0=P0; //储存初始端口状态Temp2=P2;P0=0x0F; //东西红灯亮P2=0xFF; //南北绿灯亮delay(2000) ;P0=Temp0; //返回中断前端口状态P2=Temp2;EA=1;}七、实验分析该实验主要是检查外部中断的用法及其注意的事项(比如中断时要保护现场和恢复现场)。

外部中断计数实验报告

外部中断计数实验报告

外部中断计数实验报告实验名称:外部中断计数实验报告一、实验目的通过实验了解外部中断的工作原理和应用,掌握基于外部中断进行计数的方法,并能够编写相应的程序实现计数功能。

二、实验内容1. 搭建实验电路:将一个外部脉冲信号作为中断源,与单片机相应的中断输入引脚连接。

2. 编写相应的程序:设置单片机的中断向量表,配置中断引脚为外部中断,编写中断服务函数和主函数,实现外部中断计数功能。

3. 下载程序到单片机并运行:将编写好的程序下载到单片机,通过外部脉冲信号触发中断,验证计数功能的正确性。

三、实验原理外部中断是指外部事件触发单片机中断请求的一种中断方式。

其工作原理是:当外部事件发生时,通过引脚输入信号到中断输入引脚,引起中断请求,最终触发中断服务程序的执行。

在本次实验中,我们通过将外部脉冲信号连接到单片机的中断输入引脚,每次外部脉冲信号到达时触发一次中断,并在中断服务程序中进行计数操作。

四、实验步骤1. 搭建实验电路:将外部脉冲信号连接到单片机的中断输入引脚,同时连接电源和调试工具。

2. 编写程序:使用适当的开发工具编写程序,包括设置中断向量表、配置中断引脚和编写中断服务函数。

3. 下载程序:将编写好的程序下载到单片机。

4. 运行程序:通过触发外部脉冲信号,验证计数功能的正确性。

五、实验结果与分析根据实验的步骤和要求,我们成功搭建了实验电路,并编写了相应的程序。

通过触发外部脉冲信号,实验结果显示单片机成功进行了计数操作,即正确触发了中断服务函数。

六、实验总结通过本次实验,我们了解了外部中断的工作原理和应用,并掌握了基于外部中断进行计数的方法。

同时,通过编写程序,我们成功搭建了实验电路,实现了外部中断计数功能。

实验结果表明,外部中断计数功能正常运行。

七、存在问题及改进方向在实验过程中,我们发现实时性较高的外部脉冲信号可能会引起计数不准确的问题。

这是因为我们的程序没有对外部脉冲信号进行滤波处理,导致了计数的不稳定性。

外部中断源实验报告(3篇)

外部中断源实验报告(3篇)

第1篇一、实验目的1. 理解外部中断的概念和工作原理。

2. 掌握STM32微控制器外部中断的配置和使用方法。

3. 通过实验验证外部中断在嵌入式系统中的应用。

二、实验环境1. 开发板:STM32F103C8T62. 编程软件:Keil uVision3. 仿真软件:Proteus4. 实验设备:按键、LED灯三、实验原理外部中断是指当微控制器外部电路发生特定事件时,可以引起微控制器中断,从而暂停当前程序的执行,转而执行中断服务程序(ISR)。

STM32微控制器的外部中断通常由GPIO引脚的电平变化触发。

四、实验步骤1. 硬件连接- 将按键的一端连接到STM32的GPIO引脚(如PA0),另一端连接到地(GND)。

- 将LED灯的一端连接到STM32的另一个GPIO引脚(如PC13),另一端连接到VCC。

2. 软件设计- 使用Keil uVision编写程序,配置外部中断。

- 配置GPIO引脚为输入模式,并设置中断触发方式为上升沿触发。

- 配置NVIC(嵌套向量中断控制器)中断优先级。

- 编写中断服务程序(ISR),实现LED灯的闪烁。

3. 程序代码```cinclude "stm32f10x.h"void EXTI0_IRQHandler(void) {if (EXTI_GetITStatus(EXTI_Line0) != RESET) {// 清除中断标志位EXTI_ClearITPendingBit(EXTI_Line0);// 切换LED灯状态GPIO_ToggleBits(GPIOC, GPIO_Pin_13);}}int main(void) {// 初始化系统时钟SystemClock_Config();// 配置GPIOGPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);// 配置外部中断EXTI_InitTypeDef EXTI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);// 配置NVICNVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);// 主循环while (1) {// 等待外部中断发生}}```4. 仿真验证- 使用Proteus仿真软件搭建电路,并加载上述程序。

外部中断实验报告

外部中断实验报告

外部中断实验报告外部中断实验报告引言:外部中断是计算机系统中的一种重要机制,它可以响应外部事件并中断正在执行的程序。

本实验旨在通过设计和实现一个外部中断的示例,加深对外部中断的理解和应用。

实验目的:1. 理解外部中断的概念和原理;2. 掌握外部中断的编程方法;3. 设计和实现一个基于外部中断的应用。

实验设备和材料:1. 一台支持外部中断的计算机;2. 开发板或模块,用于外部中断的触发。

实验过程:1. 硬件连接:将开发板或模块与计算机连接,并确保连接正确和稳定。

2. 编写中断处理函数:在编程环境中,编写一个中断处理函数,用于处理外部中断触发时的操作。

可以根据实际需求,设计适当的处理逻辑。

3. 配置中断触发条件:根据实验要求,配置外部中断触发的条件。

可以通过设置开关、按键或其他外部信号来触发中断。

4. 编写主程序:编写一个主程序,用于初始化外部中断和执行其他操作。

在主程序中,需要配置外部中断的相关寄存器和中断向量表。

5. 运行实验:将程序下载到计算机中,并运行实验。

通过触发外部中断条件,观察中断处理函数的执行情况。

实验结果与分析:在实验中,我们成功实现了一个基于外部中断的应用。

当外部中断触发条件满足时,中断处理函数被调用,并执行相应的操作。

通过实验观察和分析,我们可以得出以下结论:1. 外部中断可以在计算机系统中实现对外部事件的及时响应,提高系统的实时性和可靠性。

2. 外部中断的触发条件可以灵活配置,可以通过外部设备或信号的变化来触发中断。

3. 中断处理函数的执行时间相对较短,可以在不影响主程序正常运行的情况下完成相应的操作。

4. 外部中断的应用范围广泛,可以用于实现各种实时控制、通信和交互功能。

实验总结:通过本次实验,我们深入了解了外部中断的原理和应用,并成功设计和实现了一个基于外部中断的应用。

外部中断作为计算机系统中的重要机制,具有重要的意义和应用价值。

在今后的学习和实践中,我们应进一步探索和应用外部中断,为计算机系统的性能和功能提供更多的可能性。

外部中断的实验报告

外部中断的实验报告

一、实验目的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灯的亮灭。

中断原理实验报告总结(3篇)

中断原理实验报告总结(3篇)

第1篇一、实验目的本次实验旨在通过实际操作,加深对中断原理的理解,掌握单片机中断系统的工作机制,学会外部中断和定时/计数器的使用,以及串口数据发送和接收的方法。

二、实验内容1. 外部中断原理及使用(1)实验原理:通过实验,了解外部中断的工作原理,掌握外部中断的使用方法,包括中断源的设置、中断服务程序的编写和中断请求的处理。

(2)实验步骤:设置外部中断源,编写中断服务程序,实现按键控制LED灯亮灭。

2. 定时/计数器的使用(1)实验原理:通过实验,了解定时/计数器的工作原理,掌握定时/计数器的使用方法,包括定时/计数器的初始化、定时/计数器的启动和停止、定时/计数器的中断处理。

(2)实验步骤:设置定时/计数器,实现LED灯的闪烁。

3. 串口数据发送和接收(1)实验原理:通过实验,了解串口通信的工作原理,掌握串口数据发送和接收的方法,包括串口初始化、发送和接收数据的流程。

(2)实验步骤:实现单片机与计算机之间的串口通信,发送和接收数据。

三、实验结果及分析1. 外部中断实验结果及分析实验中,通过按键控制LED灯亮灭,实现了外部中断的基本功能。

实验结果表明,当按键被按下时,外部中断请求信号被触发,中断服务程序被执行,LED灯状态发生改变。

2. 定时/计数器实验结果及分析实验中,通过定时/计数器实现LED灯的闪烁,实现了定时功能。

实验结果表明,定时/计数器能够按照设定的周期产生中断,中断服务程序能够按照要求执行。

3. 串口数据发送和接收实验结果及分析实验中,通过串口通信实现单片机与计算机之间的数据传输。

实验结果表明,单片机能够按照设定的波特率发送和接收数据,计算机端能够正确接收并显示数据。

四、实验总结1. 通过本次实验,加深了对中断原理的理解,掌握了单片机中断系统的工作机制。

2. 掌握了外部中断、定时/计数器和串口通信的使用方法,为后续学习和实践打下了基础。

3. 在实验过程中,培养了动手实践能力,提高了解决问题的能力。

单片机外部中断实训报告

单片机外部中断实训报告

一、实训目的1. 理解单片机外部中断的概念和作用。

2. 掌握单片机外部中断的配置方法。

3. 学会编写外部中断服务程序。

4. 通过实际操作,提高单片机编程和调试能力。

二、实训内容1. 单片机外部中断原理2. 单片机外部中断配置3. 外部中断服务程序编写4. 实验验证与调试三、实训环境1. 单片机开发板:选用STC89C52单片机。

2. 仿真软件:Proteus。

3. 实验工具:示波器、电源、连接线等。

四、实训步骤1. 理解单片机外部中断原理外部中断是单片机中断系统中的一种,用于响应外部事件。

当外部事件发生时,单片机会暂停当前程序,转去执行外部中断服务程序。

外部中断有多个中断源,如INT0、INT1等。

2. 单片机外部中断配置(1)设置外部中断触发方式:根据需要选择上升沿触发、下降沿触发或双边沿触发。

(2)设置外部中断优先级:根据实际需求设置中断优先级。

(3)设置外部中断使能:通过设置IE寄存器使能外部中断。

3. 外部中断服务程序编写编写外部中断服务程序,用于处理外部中断事件。

在服务程序中,完成相关处理逻辑,如记录外部事件发生次数、控制LED灯闪烁等。

4. 实验验证与调试(1)搭建实验电路:将单片机开发板与外部设备(如按钮)连接,设置好外部中断配置。

(2)在Proteus中搭建仿真电路,编写代码。

(3)下载代码到单片机开发板,观察实验现象。

(4)根据实验现象,调试程序,确保外部中断功能正常。

五、实验结果与分析1. 实验现象:按下外部按钮,单片机进入外部中断服务程序,控制LED灯闪烁。

2. 分析:通过设置外部中断触发方式、优先级和使能,成功实现外部中断功能。

在服务程序中,完成相关处理逻辑,达到预期效果。

六、实训总结1. 通过本次实训,掌握了单片机外部中断的配置方法,学会了编写外部中断服务程序。

2. 熟悉了外部中断在实际应用中的重要作用,提高了单片机编程和调试能力。

3. 在实训过程中,遇到了一些问题,如外部中断响应不及时、LED灯闪烁不稳定等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

桂林电子科技大学
一、实验目的
1 学习外部中断指令的基本使用方法;
2 学习外部中断处理程序的编程方法。

二、实验内容
1在实验一内容的基础上增加允许急救车优先通过的要求;
2 急救车到达时(产生外部中断),交通信号为全红,以便让急救车通过
3 急救车通过路口时间为10秒(四个红灯亮10秒)。

急救车通过后,交通灯恢复原状态(中断前的状态);
4 中断申请信号为单脉冲“”。

三、实验原理图
四、实验程序框
五、实验步骤
1、检查试验仪,确认相应单片机放置位置,确认无误后将试验仪的USB 数据线连接电脑;
2、打开单片机电源开关,运行MEFlash 软件,确认电脑与试验仪连接成功;
3、将A T89S52的P0和P2口用短接线LED 灯的端口相连;
4、运行KC 编辑软件,调整好程序,并生成相应的.HEX 文件;
5、使用MEFlash 软件,将生成的.HEX 文件烧录到单片机中,运行成功;
6、测试中断是否运行正常,进行调试,确保程序正常运行。

六、实验程序清单
#include<reg51.h>
//*******延时1ms 秒********
void delay(unsigned int i)
{
unsigned int j;
while(i--)
交通灯程序的流程图
{
//对于11.0592M晶振延时越是1ms
for(j=0;j<125;j++)
{
{;}
}
}
}
//*****延时结束*******
// k 代表黄灯闪烁的次数
void blink(unsigned int k)
{
for(;k>0;k--) //黄灯闪烁5次
{
P2=0xF0;
delay(300);
P2=0xFF;
delay(300);
}
}
//******主函数******
//******主函数******
void main()
{
P0=0x0F; //初始状态东西南北红灯全亮
P2=0xFF;
delay(2000) ;
EA=1; //开启中断
IT0=0 ;
EX0=1;
//D27到D24分别代表东西南北绿灯
//D07到D04分别代表东西南北红灯
// D23到D20四灯代表黄灯
while(1)
{
P0=0xCF; //南北红灯亮
P2=0x3F; //东西绿灯亮
delay(2000) ;
P2=0xFF; //东西绿灯灭,黄灯闪烁5次
blink(5);
P0=0x3F; //东西红灯亮
P2=0xCF; //南北绿灯亮
delay(2000) ;
P0=0x3F; //东西红灯亮,黄灯闪烁5次
blink(5);
}
}
void int0(void)interrupt 0
{
unsigned int Temp0;
unsigned int Temp2;
EA=0;
Temp0=P0; //储存初始端口状态
Temp2=P2;
P0=0x0F; //东西红灯亮
P2=0xFF; //南北绿灯亮
delay(2000) ;
P0=Temp0; //返回中断前端口状态
P2=Temp2;
EA=1;
}
七、实验分析
该实验主要是检查外部中断的用法及其注意的事项(比如中断时要保护现场和恢复现场)。

观察中断是其地址所发生的变化。

在调试过程中,主要调试中断程序的运行,首先需要关闭外部中断,然后储存当前前的状态,即将P0和P2口的值分别赋给Temp0和Temp2两个局部变量;中断程序结束时,重新将Temp0和Temp2分别赋给P0和P2,并将中断打开。

此实验实现了实验要求。

相关文档
最新文档