实验二 按键中断实验

合集下载

实验二 按键中断实验

实验二  按键中断实验

实验二按键中断实验一、实验目的了解中断的含义二、实验内容板子加电后,按动板子上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)

实验二、中断实验――中断优先级控制及中断保护一、实验目的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和键盘作为实验系统的主要硬件设备。

系统的基本结构如下图所示:![实验系统结构图](- 键盘:作为输入设备,接收用户的键盘输入。

- 键盘控制器8042:负责控制键盘与计算机之间的数据传输。

- CPU:处理器负责执行键盘中断的相关指令。

3. 实验步骤3.1 搭建实验系统首先,需要将键盘控制器8042插入到计算机的适当位置,并将键盘连接到控制器上。

确保硬件的连接正确无误。

3.2 编写中断处理程序在编程方面,我们使用汇编语言编写键盘中断的处理程序。

具体而言,我们需要完成以下任务:- 将中断向量表中对应键盘中断的入口地址设置为我们编写的处理程序的入口地址。

- 编写处理键盘中断的程序代码,实现对键盘输入数据的接收和处理。

3.3 设置中断控制器在实验中,要进行正确的中断处理,还需要设置中断控制器8042。

具体而言,我们需要完成以下任务:- 将中断请求线IRQ1(对应键盘中断)与中断控制器连接。

- 打开中断屏蔽位,以允许中断请求通过。

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口中断实验
5边沿捕获寄存器只要在输人口上检测到边沿事件时边沿捕获寄存器edgecapture中对应位n置1avalon主控制器可读边沿捕获寄存器来确定边沿在哪一个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. 学习通过编程设置中断源、中断优先级和中断服务程序。

二、实验原理单片机的中断系统允许CPU在执行程序的过程中,暂停当前程序的执行,转而处理由外部事件引起的中断请求。

在本实验中,我们使用外部中断0(INT0)来实现单个按键的控制。

当按键按下时,通过外部中断0引脚(P3.2)向CPU发送中断请求。

CPU响应中断后,暂停当前程序的执行,转而执行外部中断0的中断服务程序(ISR)。

在中断服务程序中,我们可以根据按键的状态来执行相应的操作,例如点亮或熄灭LED灯。

三、实验设备1. 单片机开发板(如STC89C52)2. 按键3. LED灯4. 连接线5. 仿真软件(如Keil uVision)四、实验步骤1. 硬件连接:- 将按键的一个引脚连接到单片机的P3.2引脚(外部中断0)。

- 将按键的另一个引脚连接到地(GND)。

- 将LED灯的正极连接到单片机的P1.0引脚,负极连接到地(GND)。

2. 编写程序:- 使用Keil uVision软件编写程序。

- 初始化外部中断0,设置中断优先级和中断服务程序。

- 编写中断服务程序,根据按键状态控制LED灯的亮灭。

3. 编译程序:- 使用Keil uVision软件编译程序,生成可执行文件。

4. 下载程序:- 将编译好的程序下载到单片机开发板上。

5. 运行程序:- 观察按键按下时LED灯的亮灭状态,验证中断功能是否正常。

五、实验代码```c#include <reg52.h>#define LED P1_0#define BUTTON P3_2void main(void) {EA = 1; // 开启总中断EX0 = 1; // 开启外部中断0IT0 = 1; // 设置外部中断0为下降沿触发while (1) {// 主循环,等待中断}}void ext0_isr(void) interrupt 0 {LED = !LED; // 切换LED灯状态}```六、实验结果与分析1. 实验结果:- 按键按下时,LED灯亮;按键释放时,LED灯灭。

实验二 中断实验

实验二 中断实验

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

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

急救车通过后,交通灯恢复原状态(中断前的状态)实验说明:交通灯的亮灭规律同实验一;执行中断程序时,应注意保护现场(保护中断前的状态),使中断程序执行完毕后交通灯能返回中断前的状态。

所谓保护现场,即保护有关的寄存器;主程序的延时程序和中断处理程序所使用的寄存器不应该混用;主程序中,每次经74LS273端口输出数据时,要先将输出数据保存、再输出,否则显示容易出错,而无法返回中断前状态。

例如:MOV A, #0F0H (0)MOVX R1,A (1)MOV SR1,A (2)假设程序执行(1)时发生中断,而中断结束返回主程序前执行了一条MOV A, SR1 的指令,则由于主程序没有执行(2),故SR1的内容应该是上次操作存入的数据,而不是(0)指令中的0F0H,容易出错。

(1)、(2)条指令的顺序可以颠倒。

三、实验参考电路图(如下)图1:实验接线图实验程序框图开始初始化定时器、送计时初值东西南北红灯亮、绿灯黄灯灭、延时南北红灯亮、绿灯黄灯灭,东西绿灯亮、红灯黄灯灭、开定时器中断,开定时器计时NY南北红灯亮、黄灯灭,东西绿灯红灯灭、黄灯闪烁计时NY东西红灯亮、黄灯绿灯灭,南北绿灯亮、绿灯黄灯灭 N计时Y东西红灯亮、黄灯绿灯灭,南北绿灯灭、黄灯闪烁计时NY图2:主函数流程图关中断保护现场开中断中断处理关中断现场恢复开中断中断返回图3:中断服务程序流程图实验步骤1、根据实验要求进行硬件电路的设计和搭建;2、在Keil软件下进行程序设计,并调试;3、检查硬件电路是否安全正确,硬件无误时接通电源和下载线;4、利用MEFlash烧写软件把程序烧写进单片机中;5、进行软硬件整体调试,直到符合实验要求为止;6、断开电源,收拾实验仪器,关掉电脑,书写实验报告;六、程序清单ORG 0000HLJMP MAINORG 0013HLJMP INT_EX0ORG 0050HMAIN: MOV SP,#60HSETB EASETB IT1SETB EX1MOV A,#7BHMOV P0,AMOV P2,ALCALL DELAY2A1: MOV A,#0DEHMOV P0,AMOV A,#7BHMOV P2,ALCALL DELAY2LCALL SHAN1MOV A,#7BHMOV P0,AMOV A,#0DEHMOV P2,ALCALL DELAY2LCALL SHAN2LJMP A1DELAY1: MOV R7,#250 L11: MOV R6,#250L12: DJNZ R6,L12DJNZ R7,L11RETDELAY2: MOV R1,#10 L21: MOV R2,#250L22: MOV R3,#250L23: DJNZ R3,L23DJNZ R2,L22DJNZ R1,L21RETSHAN1: MOV R4,#5S1: MOV A,#0BDH MOV P0,ALCALL DELAY1MOV A,#0FFHMOV P0,ALCALL DELAY1DJNZ R4,S1RETSHAN2: MOV R5,#5S2: MOV A,#0FFHMOV P2,ALCALL DELAY1MOV A,#0BDHMOV P2,ALCALL DELAY1DJNZ R5,S2RETINT_EX0:PUSH ACCPUSH PSWMOV A,#7BHMOV P0,AMOV P2,AMOV 20H,#10EX001: LCALL DELAY2DJNZ 20H,EX001POP PSWPOP ACCRETIEND实验分析1、电路接通电源时,一定要再次检查电路,特别是确定单片机是否放置正确,位置是否放反,以免烧毁单片机或者调试不出结果。

实验2 按键输入与中断

实验2 按键输入与中断

实验2 按键输入与中断实验目的:学习MSP430的中断系统,及其编程方法。

重点难点:中断REG的使用方法。

实验内容按下DY-FFTB6638实验箱的KEY1,产生一个中断请求,在中断服务程序中,点亮对应的LED。

实验原理DY-FFTB6638实验箱的KEY硬件电路如下:设计参考代码//******************************************************************************// MSP430F6638 Demo - Software Toggle P4//// Description: Toggle P4 by xor'ing P4 inside of a software loop.// ACLK = 32.768kHz, MCLK = SMCLK = default DCO~1MHz//// MSP430F6638// -----------------// /|\| |// | | |// --|RST P4.4|-->LED_RED// KEY1-->|P4.2 P4.5|-->LED_GREEN// | P4.6|-->LED_YELLOW////******************************************************************************#include"msp430f6638.h"unsigned char flag;void main(void){WDTCTL = WDTPW+WDTHOLD; // Stop WDTP4DIR &=~(BIT2);P4DIR |= BIT4+BIT5+BIT6; // P4.4,P4.5,P4.6 set as outputP4OUT &=~(BIT4+BIT5+BIT6); // set led offP2IE |= BIT6; // enable P2.6 interruptP2IFG &= ~(BIT6); // clean interrupt flag__enable_interrupt(); // enable interruptwhile(1){if((P4IN & 0x04)==0) // P4.2--KEY1{P2IFG |= BIT6;}else{P2IFG &=~BIT6;}}}// PORT2 interrupt service routine#pragma vector=PORT2_VECTOR__interrupt void port_2(void){P4OUT ^=(BIT4+BIT5+BIT6); // set led onP2IFG &=~BIT6; // clean interrupt flag}总结MSP430单片机仅P1和P2端口具有中断功能,程序中开启了P2.6的中断功能,而按键信号却是从P4.2输入的,如何解释?。

实验二 51单片机外部中断实验报告

实验二 51单片机外部中断实验报告

实验二外部中断实验实验报告
一、实验内容
单片机外部中断0(P3.2)已与独立式键盘中KEY0连接,外部中断1(P3.3)已与KEY1连接,要求在无外部中断时最上面一位发光二极管(LED10)点亮。

请编程实现:当KEY0按下,外部中断0请求中断,控制发光二极管从上到下循环点亮3圈;当KEY1按下,外部中断1请求中断,控制发光二极管闪烁3次。

(要求外部中断1优先级高于外部中断0,即KEY1按下后能够打断流水灯的动作,当外中断1处理完后,恢复外中断0的处理,并且能从上次打断的那个LED开始循环)。

单片机与发光二极管的连接如图2-1所示,独立式键盘原理图如图2-2所示。

图2-1 单片机与发光二极管的连接原理图
2-2 独立式键盘原理图
三、硬件电路分析
1、阅读电路2-1简要分析如何使发光二极管点亮?
当LEDS0 为高电平时,三极管Q6导通,发光二极管的阳极为高电平,此时,当给发光二极管的阴极为低电平时,发光二极管两端存在电位差,发光二极管导通,则发光二极管点亮。

2、简要画出独立式按键电路(一个键),并分析其如何工作?
如图所示,当按键按下时,单片机IO处会由高电平变为低电平,单片机IO口在经过消抖处理之后仍然检测为低电平,则表明按键被按下。

四、程序设计
画出主程序流程图:
画出外部中断0流程图;
五、思考题
六、收获和体会。

实验二 外部中断实验

实验二 外部中断实验

实验二外部中断实验一、实验目的1.学会使用Keil μVision3和Proteus软件进行单片机汇编语言和C语言程序设计与开发。

了解和掌握MCS-51单片机的中断组成、中断控制工作原理、中断处理过程、外部中断的中断触发方式, 掌握中断功能的编程方法。

二、实验内容1.单片机的P1.0引脚连接LED指示灯D0。

单片机的P3.2引脚(INT0)连接按键开关K, 作为中断源, 每次按键都会触发INT0中断。

在INT0中断服务程序中将P1.0端口的信号取反, 使LED指示灯D0在点亮和熄灭两种状态间切换, 产生LED指示灯由按键开关K控制的效果。

三、实验程序ORG 0000H ;MCS-51复位入口AJMP MAIN ;转入主程序ORG 0003H ;INTO中断入口AJMP EX_INTO ;转入中断服务程序ORG 0100H ;主程序入口MAIN: MOV SP,#40H ;中断初始化设置堆栈SETB IT0 ;中断请求信号设置为边沿触发方式 SETB EA ;开放总中断SETB EX0 ;允许INTO中断HERE: SJMP HERE ;原地踏步(处理其他事务)等待中断到来ORG 0200H ;中断服务程序EX_INTO:CPL P1.0 ;改变指示灯状态RETI ;中断返回END四、实验原理图五、实验仿真及结果当开关断开时,LED指示灯D1熄灭,如图1所示:图1当按键开关接通时, LED指示灯D1点亮, 如图2所示:图2六、实验总结通过本次实验, 进一步熟悉了对Keil μVision3软件的操作, 另外还接触到了Proteus软件。

掌握了中断功能的编程方法, 加上两个上述软件, 使得单片机汇编语言得以仿真。

进一步深化了解和掌握MCS-51单片机的中断的相关知识, 包括中断的组成、工作原理、处理过程以及外部中断的中断触发方式。

微机原理中断实验报告(3篇)

微机原理中断实验报告(3篇)

第1篇一、实验目的1. 理解中断的概念和作用;2. 掌握中断系统的组成和基本工作原理;3. 熟悉中断向量表、中断服务程序和中断处理过程;4. 通过实验验证中断系统的正确性和可靠性。

二、实验原理1. 中断的概念:中断是CPU在执行程序过程中,由于某些事件的发生,暂时停止当前程序的执行,转而执行相应的事件处理程序的过程。

2. 中断系统的组成:中断系统主要由中断控制器、中断源、中断向量表、中断服务程序和CPU等组成。

3. 中断向量表:中断向量表是存储中断服务程序入口地址的表格,其中每个中断向量对应一个中断服务程序。

4. 中断服务程序:中断服务程序是处理中断事件的核心程序,用于完成中断事件的处理任务。

5. 中断处理过程:当中断事件发生时,CPU会根据中断向量表找到对应的中断服务程序入口地址,并跳转到该地址执行中断服务程序。

三、实验仪器与设备1. 实验台:微机原理实验台2. 电脑:一台3. 软件环境:Keil uVision、emu8086等四、实验步骤1. 启动实验台,打开微机原理实验台软件。

2. 在软件中设置实验参数,如中断源、中断向量等。

3. 编写中断服务程序,实现中断事件的处理任务。

4. 编写主程序,调用中断服务程序。

5. 运行实验程序,观察中断系统的运行情况。

五、实验内容1. 实验一:单级中断系统(1)设置一个外部中断源,如按键中断。

(2)编写中断服务程序,实现按键按下时的处理任务。

(3)在主程序中调用中断服务程序。

2. 实验二:多级中断系统(1)设置两个外部中断源,如按键中断和定时器中断。

(2)编写中断服务程序,实现按键中断和定时器中断的处理任务。

(3)设置中断优先级,实现多级中断。

(4)在主程序中调用中断服务程序。

3. 实验三:中断嵌套(1)设置两个外部中断源,如按键中断和定时器中断。

(2)编写中断服务程序,实现按键中断和定时器中断的处理任务。

(3)实现中断嵌套,即在定时器中断服务程序中再次触发按键中断。

实验二独立按键试验实验报告

实验二独立按键试验实验报告

实验二独立按键试验实验报告
一、实验目的
独立按键试验是为了验证按键与单片机的连接是否正常,并测试按键
功能是否正常,通过实验掌握按键接口的使用和按键的原理。

二、实验原理
在实际应用中,常常需要使用按键来实现硬件的控制。

按键的原理是:当按键关闭时,两个按键引脚之间短接,按键关闭。

当按键打开时,两个
按键引脚之间断开,按键打开。

三、实验仪器
1.单片机开发板
2.按键
3.面包板和杜邦线
4.电源线
四、实验步骤
1.将按键连接到单片机开发板上的按键接口,并接通电源。

2.编写程序,监测按键是否被按下,并通过串口输出按键的状态。

3.烧录程序到单片机,运行程序。

4.进行按键试验。

五、实验结果与分析
按下按键后,通过监测按键引脚的电平变化,可以判断按键是否被按下。

根据不同的按键连接方式,可能需要使用上拉电阻或下拉电阻来连接按键。

六、实验结论
通过独立按键试验,我们验证了按键与单片机的连接是否正确,并测试了按键的功能。

在实际应用中,可以根据需要使用按键来实现硬件的控制。

七、实验心得
通过本次实验,我掌握了按键接口的使用方法和按键的原理。

在实际应用中,按键是一个常用的控制元件,有了这次实验的经验,以后在使用按键时会更加得心应手。

无线传感器网络实验教程二---中断实验

无线传感器网络实验教程二---中断实验

读/写 读/写
3
P0IENL
0
读/写
P0(0-3)中断使能位:0 关中断,1 开中断
2
P2ICON
0
读/写
P2 (0-4)中断配置 0 上升沿触发,1 下降沿触发 P1 (0-7)中断配置 0 上升沿触发,1 下降沿触发 P0 (0-7)中断配置 0 上升沿触发,1 下降沿触发
1
P1ICON
0
读/写
Copyright:柯宗武
CC2530中断系统介绍


CPU具有18个中断源,每个源在中断标志SFR 寄存器中具有自己的请求标志位。每个中断源 可以独立地使能和禁止,中断具有不同的优先 级。 每个中断源可以通过中断使能寄存器IEN0, IEN1和IEN2分别进行使能和禁止。
Copyright:柯宗武
P0口中断被挂起,则该 位置1
Copyright:柯宗武
例:P0_6作为外部中断的配置

设置寄存器IEN0中的全局中断使能位EA

EA=1
Copyright:柯宗武
Copyright:柯宗武
例:P0_6作为外部中断的配置

5.在相应中断的中断矢量中开始中断服务程序

#pragma vector = P1INT_VECTOR __interrupt void P1_ISR(void) {......}
Copyright:柯宗武
预处理指令#pragma



#Pragma 的作用是设定编译器的状态或者是 指示编译器完成一些特定的动作。常用来发出 明确的指令来生成和优化编译。 #pragma指令对每个编译器给出了一个方法, 在保持与C和C++语言完全兼容的情况下,给 出主机或操作系统专有的特征。 依据定义,编译指示是机器或操作系统专有的 ,且对于每个编译器都是不同的。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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亮灭。

相关文档
最新文档