实验二 按键中断实验
实验二 按键中断实验

实验二按键中断实验一、实验目的了解中断的含义二、实验内容板子加电后,按动板子上K1-K3按键,可控制对应的LED1-LED3的亮灭,该实验学习了外部中断(EXTI)程序的编制及控制流程。
三、实验仪器、设备计算机、开发板、keil软件四、硬件设计在开发板上V6、V7、V8分别与MCU的PB5、PD6、PD3相连,如下图所示键盘部分如下图所示:例程所用到的列扫描线:PC5,PC2,PC3。
例程所用到的行扫描线(EXTI中断线):PE2。
五、实验要求和步骤开发板上有3个蓝色状态指示灯V6(LED1),V7(LED2),V8(LED3),通过对应的按键K1-K3,控制LED的亮灭,将PE2引脚配置为外部中断,当其上出现下降沿时产生一个中断,根据扫描PC5,PC2,PC3来判别是哪个按键按下。
首先我们了解一下什么是外部中断/事件控制器(EXTI)。
外部中断/事件控制器由19个产生事件/中断要求的边沿检测器组成。
每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。
每个输入线都可以被独立的屏蔽。
挂起寄存器保持着状态线的中断要求。
EXTI控制器的主要特性如下:每个中断/事件都有独立的触发和屏蔽每个中断线都有专用的状态位支持多达19 个中断/事件请求检测脉冲宽度低于APB2 时种宽度的外部信号如要产生中断,中断线必须事先配置好并被激活。
这是根据需要的边沿检测通过设置2个触发寄存器,和在中断屏蔽寄存器的相应位写“1”到来允许中断请求。
当需要的边沿在外部中断线上发生时,将产生一个中断请求,对应的挂起位也随之被置1。
通过写“1”到挂起寄存器,可以清除该中断请求。
为产生事件触发,事件连接线必须事先配置好并被激活。
这是根据需要的边沿检测通过设置2个触发寄存器,和在事件屏蔽寄存器的相应位写“1”到来允许事件请求。
当需要的边沿在事件连线上发生时,将产生一个事件请求脉冲,对应的挂起位不被置1。
单片机实验报告(1)

实验二、中断实验――中断优先级控制及中断保护一、实验目的1、掌握单片机中断机制。
2、熟悉中断的应用和编程。
二、实验设备1、 仿真器;2、 单片机最小系统;3、 发光二极管阵列显示模块;4、 独立式键盘模块。
三、实验要求连接单片机最小系统和发光二极管阵列的电路并编写程序,学习单片机中断机制,及中断优先级和中断保护的方法:使用独立式按键1连接0INT (P3.2),按键2连接1INT (P3.3),在平时状态下,发光二极管行以200ms 的时间间隔,依次点亮。
1键按下时0INT 中断处理程序点亮P0.0对应的发光管2秒钟,其他发光管熄灭;2键按下时P0.1对应发光管点亮2秒,其他发光管熄灭。
四、实验原理通常一个微处理器读取外围设备(如键盘等)的输入信息的方法有轮询(Polling)及中断(Interrupt)两种。
轮询的方法是CPU 依照某种既定法则,依序询问每一外围设备I /O 是否需要服务,此种方法CPU 需花费一些时间来做询问服务,当I /O 设备增加时,询问服务时间也相对增加,势必浪费许多CPU 时间,降低整体运行的效率。
使用中断是一个较好的解决方法。
使用中断使系统对外部设备的请求响应更加灵敏,并且不需要占用CPU 的时间进行轮询。
但是,当使用中断,特别是有多个中断嵌套时要特别注意内存单元的保护。
1 80C51中断结构当中断发生后,程序将跳至对应中断入口地址去执行中断子程序,或称中断服务程序(Interrupt Service Routine),这些特殊的地址称为中断向量,例如当80C51外部中断INTl 发生时,会暂停主程序的执行,跳至地址0013H 去执行中断服务程序,直到RETI 指令后,才返回主程序继续执行。
MCS-51系列的程序内存中有7个矢量地址,叙述如下:(1)00H 复位当第9脚RESET 为高电平,CPU 会跳至地址00H 处开始执行程序,亦即程序一定要从地址00H开始写起。
实验二中断实验

实验二中断实验一、实验目的1、掌握数码管的静态和动态扫描显示法。
2、掌握单片机系统中断的原理及使用方法。
3、理解键盘去抖动的原理。
二、实验原理1. 发光二极管的工作原理发光二极管简称为LED(Light Emiting Diode)。
通常所说的LED显示器由7个发光二极管组成,因此也称之为七段LED显示器,其排列形状如图8.15(a)所示。
此外,显示器中还有一个小圆点型发光二极管(在图中以dp表示),用于显示小数点。
通过七段发光二极管亮暗的不同组合,可以显示多种数字、字母以及其它符合。
LED显示器中的发光二极管共有两种连接方法,一种是共阴极连接,另一种共阳极连接。
其连接图如图8.15(b)所示。
图七段LED显示器使用LED显示器时,要注意区分这两种不同的接法。
为了显示数字或字符,必须对数字或字符进行编码。
七段数码管加上一个小数点,共计8段。
因此为LED显示器提供的编码正好是一个字节。
用LED显示器显示16进制数的编码已列在表7-4所示。
表LED显示器16进制数编码通常使用的LED显示器都是多位的。
对多位LED显示器,通常采用动态扫描的方法进行显示,即逐个循环点亮各位显示器。
为了实现LED显示器的动态扫描除了要给显示器提供段码(字形编码)的输入之外,还要对显示器加位的控制(控制LED显示器亮灭),这就是通常所说的位控和段控。
2 、中断知识在计算机系统中,中断可以由各种硬件设备产生,以便请求服务或报告故障等。
此外,中断也可由处理器自身产生,例如,程序错误或对操作系统的请求做出响应等。
89C51 的中断系统具有5 个中断源,即2 个外部中断、2 个定时器中断和1 个串行中断。
(三)、按键抖动抖动的原因:目前大部分按键或键盘都是利用机械触电的合、断作用。
机械触点在闭合及断开瞬间由于弹性作用的影响,在闭合及断开瞬间均有抖动过程,从而使电压信号也出现抖动,抖动时间的长短与开关的机械特性有关,一般为5~10ms。
键盘中断微机实验报告

键盘中断微机实验报告1. 引言键盘中断是计算机硬件系统中常见的一种输入设备中断方式,其功能是在用户通过键盘输入时,中断处理器正常运行的流程,将键盘输入的数据传递给操作系统供其处理。
本次实验旨在通过搭建一个简单的键盘中断实验系统,加深对键盘中断原理及操作的理解。
2. 实验原理2.1 键盘中断键盘中断是一种异步的硬件中断方式,即键盘通过给中断控制设备发送中断请求信号,从而将中断信息传递给CPU。
一旦发生键盘中断,CPU将停止当前执行的任务,跳转到事先设置好的中断处理程序,处理键盘中断事件。
2.2 实验系统本次实验使用Intel 8086微处理器、键盘控制器8042和键盘作为实验系统的主要硬件设备。
系统的基本结构如下图所示:与中断控制器连接。
- 打开中断屏蔽位,以允许中断请求通过。
3.4 运行实验程序完成前述步骤后,我们可以运行实验程序,测试键盘中断的正常工作。
当用户按下键盘时,键盘中断会触发,并将键盘输入的数据传递给中断处理程序进行处理。
4. 实验结果与分析经过测试,我们发现实验系统能够正确地接收和处理键盘输入的数据。
实验二

二、中断实验1.实验目的(1)熟悉单片机中断的概念;(2)学习外部中断的设置和使用;(3)编写程序,使用按键中断的方法来控制LED灯的亮、灭状态;(4)通过模块化编程,养成良好的编程习惯。
2.实验设备(1) CC2530核心板一块;(2)传感器底板一个;(3)仿真器一个;(4)方口USB线一根;3.实验原理3.1硬件设计原理本实验硬件设计原理图如图2-1。
按键S101接在了CC2530的P1.5管脚上,当按下按键S101时,P1.5管脚变为低电平;松开按键,P1.5管脚变为高电平。
我们可以设置单片机检测P1.5管脚上升沿或者是下降沿来触发中断。
图2-1按键原理图中断是单片机实时地处理内部或外部事件的一种内部机制。
当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。
单片机的中断过程如图2-2所示。
图2-2单片机中断过程CC2530的中断系统是为了让CPU对内部或外部的突发事件及时地作出响应,并执行相应的中断程序。
中断由中断源引起,中断源由相应的寄存器来控制。
当需要使用中断时,需配置相应的寄存器来开启中断,当中断发生时,将跳入中断服务函数中执行此中断所需要处理的事件。
本实验将介绍CC2530中断的使用,包括中断源、中断向量、中断优先级以及中断编程。
3.2中断源与中断向量CC2530有18个中断源,每个中断源都可以产生中断请求,中断请求可以通过设置中断使能SFR寄存器的中断使能位IEN0、IEN1或IEN2使能或禁止中断。
CC2530的中断源如表2-1所示。
当相应的中断源使能并发生时,中断标志为将自动置1,然后程序跳往中断服务程序的入口地址执行中断服务程序。
待中断服务程序处理完毕后,清除中断标志位。
中断服务程序的入口地址即中断向量,CC2530的18个中断源对应了18个中断向量,中断向量定义在头文件“ioCC2530.h”中,其定义如下。
实验二

实验项目已写好,不用大家再更改啦!)
1.熟悉单片机外部中断的原理及使用方法;
2.熟悉数码管的工作原理和驱动方法;
3.程序设计中数组的使用。
二、实验内容
以按键作为脉冲触发输入端,连接单片机最小系统与脉冲开关及数码管模块,构成模拟计数器电路。编程检测外部脉冲的输入,并通过数码管来指示脉冲输入的个数。实验电路图如下:(附上自己设计的电路图)
3、程序及其运行结果(程序可用流程图代替,运行结果应插入截图并用语言描述说明之)
四、实验总结(主要写体会、心得、实验过程中遇到的问题是如何解决的等等)
在本次实验过程中,我往往会产生毫无头绪、焦急的情况,询问老师,老师会耐心地指导我,让我稳重求精,更加充分了解计数器的功能及其实现方法。是我受益无穷。
按键以及PIO口中断实验

按键以及 PIO 口中断实验
1、PIO 内核简介 1)、PIO 寄存器描述
偏移量 0 寄存器名称 数据寄 存器 读 写 R/W R W R/W R/W R/W (n-1) ….. …. 2 1 0
3)、Simulation 仿真 如果需要仿真则需要进行设置。 3、软件编程举例
/* altera_avalon_pio_regs.h 中提供了对硬件进行寄存器级访问的宏定义*/ #include "altera_avalon_pio_regs.h" //#include "altera_avalon_pio.h" #include "system.h" #include "alt_types.h" #include "sys/alt_irq.h" #include <stdio.h> #define key IORD_ALTERA_AVALON_PIO_DATA(PIO_KEY_BASE)&0xf void butto_ISR (); //按键中断服务程序 int main(void) { /*注册按键中断*/ alt_irq_register(PIO_KEY_IRQ,0,butto_ISR); /*清pio边沿捕获寄存器*/
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY_BASE, 0x0); /*设置pio口为输入*/ IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_KEY_BASE,0x00); /*中断使能,即把与按键对应的pio口位置1*/ IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY_BASE,0xf); while(1)//等待中断 { ; } } void butto_ISR (void * context,alt_u32 id)//按键中断服务程序 { alt_u8 keytemp; IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_KEY_BASE,0x00); int si=IORD_ALTERA_AVALON_PIO_DATA(PIO_KEY_BASE)&0xf; if(si!=0xf) keytemp=si; data++; IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY_BASE,0x0); switch(si) { case 0x07 :{ printf("This is key1 IRQ\n"); } break; case 0x0b:{ printf("This is key2 IRQ\n"); }break; case 0x0d:{ printf("This is key3 IRQ\n"); }break; case 0x0e:{ printf("This is key4 IRQ\n"); } } IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY_BASE, 0); IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY_BASE,0xf); }
《键盘中断实验》课件

中断控制器
控制计算机系统中断的硬 件设备,负责处理外部设 备的中断请求。
实验原理说明
键盘中断
当用户按下键盘上的键时,键盘会产 生一个中断信号,发送给中断控制器 。
中断返回
中断处理程序执行完毕后,中断控制 器恢复被中断的程序执行,继续执行 后续指令。
中断处理
中断控制器接收到键盘中断信号后, 会暂停当前执行的程序,保存程序执 行现场,转而执行相应的中断处理程 序。
异常(Exception):由处理器内部产生的异常事件,例如除以零或访问无效内存地 址。
02
键盘中断实验原理
BIG DATA EMPOWERS TO CREATE A NEW
ERA
实验设备介绍
01
02
03
实验设备
计算机、键盘、中断控制 器
键盘
用于输入字符和命令的外 部设备,通过电缆连接到 计算机。
实验步骤概述
准备实验设备
连接好键盘与计算机,开 启计算机。
观察现象
在程序运行过程中按下键 盘上的键,观察计算机的 反应。
分析结果
根据实验现象,分析键盘 中断的产生和处理过程。
03
实验操作过程
BIG DATA EMPOWERS TO CREATE A NEW
ERA
实验环境搭建
准备实验设备
计算机、键盘、数据采 集卡、信号放大器等。
代码优化
根据测试结果,对代码进行优化和 改进,提高其稳定性和效率。
实验结果分析
数据整理
对采集到的实验数据进行整理和 分析,提取出有用的信息。
结果对比
将实验结果与理论值进行对比, 分析误差产生的原因。
结果讨论
根据实验结果,讨论键盘中断对 计算机性能的影响,并提出改进
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二按键中断实验一、实验目的了解中断的含义二、实验内容板子加电后,按动板子上K1-K3按键,可控制对应的LED1-LED3的亮灭,该实验学习了外部中断(EXTI)程序的编制及控制流程。
三、实验仪器、设备计算机、开发板、keil软件四、硬件设计在开发板上V6、V7、V8分别与MCU的PB5、PD6、PD3相连,如下图所示键盘部分如下图所示:例程所用到的列扫描线:PC5,PC2,PC3。
例程所用到的行扫描线(EXTI中断线):PE2。
五、实验要求和步骤开发板上有3个蓝色状态指示灯V6(LED1),V7(LED2),V8(LED3),通过对应的按键K1-K3,控制LED的亮灭,将PE2引脚配置为外部中断,当其上出现下降沿时产生一个中断,根据扫描PC5,PC2,PC3来判别是哪个按键按下。
首先我们了解一下什么是外部中断/事件控制器(EXTI)。
外部中断/事件控制器由19个产生事件/中断要求的边沿检测器组成。
每个输入线可以独立地配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。
每个输入线都可以被独立的屏蔽。
挂起寄存器保持着状态线的中断要求。
EXTI控制器的主要特性如下:每个中断/事件都有独立的触发和屏蔽每个中断线都有专用的状态位支持多达19 个中断/事件请求检测脉冲宽度低于APB2 时种宽度的外部信号如要产生中断,中断线必须事先配置好并被激活。
这是根据需要的边沿检测通过设置2个触发寄存器,和在中断屏蔽寄存器的相应位写“1”到来允许中断请求。
当需要的边沿在外部中断线上发生时,将产生一个中断请求,对应的挂起位也随之被置1。
通过写“1”到挂起寄存器,可以清除该中断请求。
为产生事件触发,事件连接线必须事先配置好并被激活。
这是根据需要的边沿检测通过设置2个触发寄存器,和在事件屏蔽寄存器的相应位写“1”到来允许事件请求。
当需要的边沿在事件连线上发生时,将产生一个事件请求脉冲,对应的挂起位不被置1。
通过在软件中断/事件寄存器写“1”,一个中断/事件请求也可以通过软件来产生。
本次实验需要组件的工程文件文档如下:USER--stm32f10x_it.c 为中断服务程序主程序,我们对主程序进行一次详细的注释。
//______________________主程序____________________________________________________________________int main(void){unsigned char a=0,b=0,c=0;/*完成对系统时钟的设置,例程中通过系统时钟设置函数,外接晶振采用8Mhz,经过片内频率合成,9倍频,设置为72MHz的时钟。
*/RCC_Configuration();/*嵌套向量中断控制器说明了EXTI2 抢占优先级级别0(最多1位),和子优先级级别0(最多7位) */NVIC_Configuration();/*对控制3个LED指示灯的IO口进行了初始化,将3个端口配置为推挽上拉输出,口线速度为50Mhz。
将中断线PE2配置为输入模式。
将键盘扫描列线PC5,PC2,PC3设置为推挽上拉输出。
在配置某个口线时,首先应对它所在的端口的时钟进行使能。
否则无法配置成功,由于用到了端口B和端口D,C,D,因此要对这4个端口的时钟进行使能,同时由于用到复用IO口功能用于配置外部中断。
因此还要使能AFIO(复用功能IO)时钟。
*/GPIO_Configuration();//用于配置AFIO外部中断配置寄存器AFIO_EXTICR1,用于选择EXTI2外部中断的输入源是PE2。
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource2);EXTI_InitStructure.EXTI_Line = EXTI_Line2; //PE2 作为键盘的行线。
检测状态EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中断模式EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);/* 置3根键盘列扫描线为0,以便在按键按下时产生中断GPIO_ResetBits(GPIOC, GPIO_Pin_2);GPIO_ResetBits(GPIOC, GPIO_Pin_3);GPIO_ResetBits(GPIOC, GPIO_Pin_5);while (1){GPIO_ResetBits(GPIOC, GPIO_Pin_2);GPIO_ResetBits(GPIOC, GPIO_Pin_3);GPIO_ResetBits(GPIOC, GPIO_Pin_5);numm(); //键盘扫描程序判断是哪个键按下if(num==1&&a==0){GPIO_ResetBits(GPIOB, GPIO_Pin_5);a=1;} //K1 按下作处理else if(num==1&&a==1){GPIO_SetBits(GPIOB, GPIO_Pin_5);a=0;}if(num==2&&b==0){GPIO_ResetBits(GPIOD, GPIO_Pin_6);b=1;} //K2 按下作处理else if(num==2&&b==1){GPIO_SetBits(GPIOD, GPIO_Pin_6);b=0;}if(num==3&&c==0){GPIO_ResetBits(GPIOD, GPIO_Pin_3);c=1;} //K3 按下作处理else if(num==3&&c==1){GPIO_SetBits(GPIOD, GPIO_Pin_3);c=0;}}//_____________________键盘扫描程序_____________________________________________________________________void numm(void){num=0;if(_it0==1){ //按键按下标志GPIO_ResetBits(GPIOC, GPIO_Pin_5); //置PC5为0。
GPIO_SetBits(GPIOC, GPIO_Pin_2);GPIO_SetBits(GPIOC, GPIO_Pin_3);if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0){ //K1Delay(0xff);if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0){ //按键消抖动while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0); //是否松开按键num=1; //键值1 为K1按下goto n_exit;}}GPIO_SetBits(GPIOC, GPIO_Pin_5);GPIO_ResetBits(GPIOC, GPIO_Pin_2); //置PC2为0GPIO_SetBits(GPIOC, GPIO_Pin_3);Delay(0xff);if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0){ //K2Delay(0xff);if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0){ //按键消抖动while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0); //是否松开按键num=2; //键值2 为K2按下goto n_exit;}}GPIO_SetBits(GPIOC, GPIO_Pin_5);GPIO_SetBits(GPIOC, GPIO_Pin_2);GPIO_ResetBits(GPIOC, GPIO_Pin_3); //置PC3为0Delay(0xff);if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0){ //K3Delay(0xff);if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0){ //按键消抖动while(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0); //是否松开按键num=3; //键值3 为K3按下goto n_exit;}}n_exit:;_it0=0;}}//_______________________键盘中断服务程序___________________________________________________________________/*键盘中断(EXTI2)服务程序*/void EXTI2_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line2) != RESET) //判别是否有键按下{_it0=1; //按键中断标志EXTI_ClearITPendingBit(EXTI_Line2); //清除中断请求标志}}将工程文件建立和调试后下载到开发板,板子上电复位后,按动K1-K3可分别控制相应的LED1-LED3亮灭。