接口实验报告二,键盘中断实验
实验二 按键中断实验

实验二按键中断实验一、实验目的了解中断的含义二、实验内容板子加电后,按动板子上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. 嵌入式开发板2. 按键模块3. 电源适配器实验步骤:1. 将按键模块连接到嵌入式开发板的GPIO引脚上,确保连接正确。
2. 打开开发板的开关,给开发板供电。
3. 在开发板上配置GPIO引脚作为中断输入,并使能中断。
4. 编写中断服务程序来处理按键输入。
当按键被按下时,中断服务程序将被调用,并执行相应的操作。
5. 在主程序中初始化中断服务程序,并进入一个无限循环。
在该循环中,可以进行其他的操作,并等待按键中断的发生。
实验结果:在实验中,我们成功地配置并使用了中断来处理按键输入。
当按键被按下时,中断服务程序被调用,并执行了相应的操作。
讨论与分析:通过该实验,我们学习到了中断的基本原理和使用方法。
中断是一种非常重要的机制,可以使嵌入式系统更高效地响应外部事件。
在实际的嵌入式应用中,按键输入是非常常见的操作,使用中断可以很好地处理按键输入,提高系统的响应速度和可靠性。
然而,中断也存在一些问题。
首先,中断处理需要一定的时间,在高速的系统中,中断的处理时间可能会影响到系统的性能。
另外,当系统存在多个中断源时,中断处理的优先级和调度也需要仔细设计,以确保系统的正常运行。
总结:通过本实验,我们成功地学习了嵌入式系统中使用中断处理按键输入的方法。
中断是一种重要的机制,可以使系统更高效地响应外部事件。
通过合理地设计和使用中断,可以提高系统的性能和可靠性。
在实际的嵌入式应用中,我们应该根据具体的需求和系统条件来选择最合适的中断处理方法,并进行适当的优化和调试。
中断应用实验报告

中断应用实验报告中断应用实验报告引言:中断是计算机系统中一种重要的机制,用于处理硬件事件和异常情况。
通过中断,计算机可以及时响应外部设备的请求,并进行相应的处理。
在本次实验中,我们将探索中断应用的原理和实践,以增进对计算机系统的理解和掌握。
一、实验目的本次实验的目的是通过编写中断应用程序,了解中断的工作原理以及如何在程序中使用中断。
通过实践,我们将深入理解中断的概念和作用,并能够灵活运用中断来处理各种硬件事件和异常情况。
二、实验环境本次实验使用的是一台基于x86架构的计算机。
我们将使用汇编语言编写中断应用程序,并在实验环境中进行调试和运行。
三、实验步骤1. 确定中断向量中断向量是中断服务例程的入口地址。
在实验中,我们需要先确定所需处理的中断类型,并为其分配一个合适的中断向量。
这样,当中断事件发生时,计算机可以通过中断向量找到相应的中断服务例程。
2. 编写中断服务例程中断服务例程是中断处理的核心代码。
在实验中,我们需要编写中断服务例程来处理特定的中断事件。
例如,我们可以编写一个中断服务例程来处理键盘输入中断,以实现对键盘事件的响应和处理。
3. 注册中断服务例程在实验中,我们需要将编写好的中断服务例程注册到系统中,以便在中断事件发生时能够正确地调用。
通过注册,我们可以将中断服务例程与相应的中断向量关联起来,使其能够被系统正确地调用和执行。
4. 测试中断应用程序在完成以上步骤后,我们可以开始测试中断应用程序的功能和效果。
通过模拟中断事件,我们可以验证中断服务例程的正确性和稳定性。
同时,我们还可以观察中断应用程序对系统性能的影响,并进行相应的优化和改进。
四、实验结果与分析通过本次实验,我们成功编写了中断应用程序,并在实验环境中进行了测试和调试。
实验结果表明,中断应用程序能够及时响应外部设备的请求,并进行相应的处理。
通过中断,我们可以实现对键盘、鼠标等外部设备的控制和交互,提高了计算机系统的可用性和灵活性。
键盘中断微机实验报告

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

接口pc中断实验报告1. 实验目的本次实验旨在了解接口PC中断的概念、原理以及操作方法,并通过实际操作和观察,掌握接口PC中断的使用技巧。
2. 实验要求- 了解接口PC中断的基本概念和原理- 学会使用接口PC中断的操作方法- 掌握调试接口PC中断程序的技巧- 熟悉接口PC中断在应用领域中的实际应用3. 实验器材与环境- 操作系统:Windows 10- 开发工具:Visual Studio Code- 实验设备:个人电脑(PC)4. 实验步骤4.1 实验准备在实验开始前,需确保操作系统和开发工具已正确安装并正常运行。
4.2 实验内容1. 在开发工具中创建一个新的代码文件,并命名为interrupt.c。
2. 在代码文件中引入必要的库文件,例如stdio.h和conio.h。
3. 编写主函数,在其中编写接口PC中断的处理函数。
4. 在主函数中设置接口PC中断的触发条件,例如按下特定的键盘按键时触发中断。
5. 在接口PC中断的处理函数中,编写中断处理的相关代码,例如显示“接口PC中断已触发!”的提示信息。
6. 编译并运行代码,在合适的时机按下触发条件的按键,触发接口PC中断。
7. 观察程序的运行结果,确认接口PC中断的功能是否正常。
4.3 实验总结通过以上的实验步骤,我们成功地实现了接口PC中断,并观察到中断的正常运行。
在实验过程中,我们了解了接口PC中断的概念和原理,并掌握了其操作方法和调试技巧。
同时,我们还对接口PC中断在实际应用领域中的作用有了初步的了解。
接口PC中断广泛应用于各种设备和系统之间的通信和控制中,能够提高系统的响应速度和稳定性。
因此,学习和掌握接口PC中断的使用方法对于电子信息类专业的学生来说具有重要的意义。
5. 实验心得通过本次实验,我深入了解了接口PC中断的原理和使用方法,并亲自操作和调试了接口PC中断的程序。
在实验过程中,我遇到了一些困难和问题,但通过查阅资料和与同学的讨论,最终都得到了解决。
最新微机接口实验报告

最新微机接口实验报告实验目的:1. 熟悉微机接口的基本原理和功能。
2. 掌握微机接口的编程和操作技巧。
3. 通过实验加深对微机接口技术的理解。
实验环境:- 微机接口实验箱- 个人电脑- 相关软件和驱动程序实验内容:1. 实验一:了解微机接口的基本结构和工作原理。
- 学习微机接口的基本概念,包括数据总线、地址总线、控制总线等。
- 观察实验箱中的微机接口模块,识别各部分的功能。
2. 实验二:编写简单的输入输出程序。
- 使用汇编语言或C语言编写程序,实现对微机接口的控制。
- 通过程序实现LED灯的点亮和熄灭,以及按键的读取。
3. 实验三:中断和DMA操作。
- 学习中断的基本概念和处理流程。
- 实现一个基于中断的键盘输入程序。
- 了解DMA的工作原理,并编写相应的数据传输程序。
实验步骤:1. 准备实验环境,确保所有设备和软件均已正确安装和配置。
2. 按照实验指导书的要求,逐步完成各个实验项目。
3. 在实验过程中记录关键步骤和结果,以便撰写实验报告。
4. 对遇到的问题进行分析和解决,记录解决方案。
实验结果:1. 成功理解微机接口的基本结构和功能。
2. 编写的输入输出程序能够正确控制LED灯和读取按键状态。
3. 中断和DMA操作实验顺利完成,实现了预期的功能。
实验结论:通过本次实验,加深了对微机接口技术的理解,掌握了基本的编程和操作技能。
实验中遇到的问题和挑战也有助于提高解决问题的能力。
通过实践,更加明确了理论知识与实际应用之间的联系。
建议和反思:- 在实验过程中,应更加注重对理论知识的应用,以提高实验效率。
- 对于复杂的问题,应采取分步解决的策略,避免在实验中出现混乱。
- 未来应加强实验前的准备工作,确保实验能够顺利进行。
中断调用程序实验报告

一、实验目的1. 理解中断调用的基本概念和原理。
2. 掌握中断调用的编程方法。
3. 能够通过中断调用实现特定功能。
二、实验环境1. 操作系统:Windows 102. 编程语言:C/C++3. 开发环境:Visual Studio 2019三、实验内容1. 实现一个简单的中断调用程序。
2. 通过中断调用实现按键输入的实时处理。
3. 实现按键输入的防抖处理。
四、实验步骤1. 创建一个新的C/C++项目,命名为“中断调用程序”。
2. 在项目中添加一个新的源文件,命名为“main.c”。
3. 在“main.c”文件中编写以下代码:```c#include <stdio.h>#include <windows.h>// 全局变量,用于存储按键输入char keyInput = 0;// 中断处理函数void interruptHandler(int nIrq, char pParam){switch (nIrq){case 1: // 按键按下keyInput = pParam[0];break;case 2: // 按键释放keyInput = 0;break;}}// 中断调用函数void interruptCall(char pParam){// 设置中断处理函数SetInterruptHandler(0x21, interruptHandler, pParam); // 激活中断EnableInterrupts();// 循环等待按键输入while (keyInput == 0){Sleep(100);}// 关闭中断DisableInterrupts();}int main(){// 初始化按键输入char pParam = malloc(1);pParam[0] = 0;// 执行中断调用interruptCall(pParam);// 输出按键输入printf("Key input: %c\n", keyInput);// 释放内存free(pParam);return 0;}```4. 在“main.c”文件中,定义了一个全局变量`keyInput`用于存储按键输入,以及一个中断处理函数`interruptHandler`用于处理按键按下和释放的事件。
实验6:键盘接口系统实验

实验六:键盘接口系统实验一、实训目的1.熟悉中断键盘、非编码键盘、矩阵键盘的电路结构特点;2.实现中断键盘、非编码键盘、矩阵键盘的软件编程;二、实验仪器、材料1.微型计算机(PⅣ以上)2.编程、汇编与模拟平台软件Keil uVision33.电子技术专业仿真软件protues运行平台4.单片机实训开发电路板三、实验内容和步骤1.INT01)ORG 0000HSJMP STARTORG 0003HLOOP:JNB P3.2,LOOPLCALL DISPLYRETIORG 0030HST ART:MOV P0,#0C0HMOV R0,#00HMOV P2,#0FHMOV TCON,#00HMOV IE,#81HSJMP $DISPLY: INC R0CJNE R0,#10H,DISPLY1MOV R0,#00HDISPLY1: MOV A,R0ADD A,#03H ;对A进行地址修正MOVC A,@A+PC ;查字形码表MOV P0,A ;2RET ;1DTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共阳极字型码DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH// DT AB:DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH ;共阴极字型码// DB 77H,7cH,39H,5eH,79H,71H,00H,0f3H,76H,80H,40HEND2.非编码P2.7按键+共阳极4位数码管静态显示(递加)1)系统电路原理图如上2)参考源程序设计如下:ORG 0000HST ART: MOV P0,#0C0HMOV R0,#00HMOV P2,#0FHLOOP: JB P2.7,LOOPLCALL DISPLYSJMP LOOPDISPLY: JNB P2.7,DISPLYINC R0CJNE R0,#10H,DISPLY1MOV R0,#00HDISPLY1: MOV A,R0ADD A,#03H ;对A进行地址修正MOVC A,@A+PC ;查字形码表MOV P0,A ;2RET ;1DT AB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共阳极字型码DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH // DT AB: DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH ;共阴极字型码// DB 77H,7cH,39H,5eH,79H,71H,00H,0f3H,76H,80H,40HEND3.矩阵4*4键盘+共阳极4位数码管并行显示(递加)2)参考源程序设计如下:KEY_DAT A DATA 30HORG 0000HAJMP MAINORG 0030HMAIN: MOV SP,#60HLOOP: LCALL SCANMOV A,KEY_DAT AMOV DPTR,#T ABMOVC A,@A+DPTRMOV P0,ALCALL DELAJMP LOOPSCAN: PUSH ACCPUSH PSWMOV A,#0FH ;列输出低电平MOV P1,AMOV A,P1 ;读行状态ANL A,#0FH ;屏蔽高4位的列值CJNE A,#0FH,KEYSCAN ;若有键按下,则KEYSCANSJMP EXITKEYSCAN:LCALL DEL ;去抖MOV R2,#7FH ;列值扫描初值MOV R3,#4 ;列数MOV R0,#00H ;列值计数器KEYSM1:MOV A,R2MOV P1,ARR A ;列扫描右移MOV R2,AMOV A,P1ANL A,#0FHCJNE A,#0FH,JSADDINC R0DJNZ R3,KEYSM1 ;未扫描完一遍,则循环EXIT: MOV A,#0FFHSJMP DONEJSADD:JB ACC.0,JSADD1MOV A,#0 ;行值送AAJMP JSADD4JSADD1:JB ACC.1,JSADD2MOV A,#4 ;行值送AAJMP JSADD4JSADD2:JB ACC.2,JSADD3MOV A,#8 ;行值送AAJMP JSADD4JSADD3:JB ACC.3,JSADD4MOV A,#12 ;行值送AJSADD4:ADD A,R0 ;行值+列值送入A,得到键值MOV KEY_DATA,ADONE: POP PSWPOP ACCRETDEL: MOV R6,#50DEL1: MOV R5,#200DJNZ R5,$DJNZ R6,DEL1RETKEY_TAB:DB 00H,01H,02H,03H,04H,05H,06H,07H ;0--8DB 08H,09H,0AH,0BH,0CH,0DH,0EH,0FH ;9--16// T AB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;0--9// DB 77H,7CH,39H,5EH,79H,71H ;A--FT AB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共阳极字型码DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,7FH,0BFH四、实训总结与分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二微机键盘、8259与8255综合实验
一、实验目的
1、理解键盘的基本工作原理和过程。
2、掌握8259中断控制器的工作原理、编程方法。
3、掌握中断服务程序的设计方法。
4、熟悉8255作为数据接口和控制端信号引脚的作用。
二、实验内容
1、编写一键盘中断处理程序:计算键盘中断次数,并用该程序替换系统键盘
中断处理程序,使当按键8次(键盘中断产生16次)后,显示中断次数并结束应用。
2、置换系统的09H型中断服务程序,完成对键盘中断次数的统计。
在该中断
服务程序中,必须对键盘控制器(口地址61H)复位。
复位键盘控制器只需读出端口61H的内容,并将最高位置1,再写入该端口。
此外,按键按下和抬起均会引起中断,所以实际中断次数等于按键次数乘2。
3 、将按键的扫描码输出到屏幕上,并统计中断次数。
三、实验步骤
1、打开“Masm For Windows集成实验环境”,新建一个asm文件。
2、将发声程序代码复制粘贴到新建的asm文件中并保存
3、编译成目标文件
4、生成可执行文件
5、运行
四、实验结果
当按下基本键区的“1234568”时出现的结果如下图:
当按下副键盘区的“1234”再按基本键区的“5678”时,出现的结果:
当按下光标移动键或者专用键时只要两次就会出现下面结果:
五、实验总结分析
通过这次实验我基本理解了键盘的基本工作原理和过程;掌握了8259中断控制器的工作原理、编程方法;掌握了中断服务程序的设计方法;熟悉了8255作为数据接口和控制端信号引脚的作用。
六、附录程序代码
DATA SEGMENT
OLD_OFF DW?
OLD_SEG DW?
MKBAK DB?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
MOV AX,DATA
MOV DS,AX
IN AL,21H ;保留8259初始屏蔽字的状态
MOV MKBAK,AL
CLI ;关中断
AND AL,11111101B ;打开键盘屏蔽
OUT 21h,AL
;中断向量修改程序
MOV AH,35H ;取原中断向量
MOV AL,9H ;9为键盘的中断类型号
INT 21H
MOV OLD_OFF,BX ;保存原中断向量到字变量中MOV BX,ES
MOV OLD_SEG,BX
MOV AH,25H ;设置新的中断向量
MOV AL,9H
MOV DX,SEG MYINT
MOV DS,DX
MOV DX,OFFSET MYINT
INT 21H
XOR DX,DX ;清计数器
A1: STI ;开中断
CMP DX,10H ;是否按了8次键
JZ A2 ;是则结束程序运行
JMP A1 ;否则继续等待键盘中断A2: PUSH DX ;保存计数值
CLI ;关中断
;恢复原中断向量MOV AH,25H
MOV AL,9H
MOV DX,OLD_SEG
MOV DS,DX
MOV DX,OLD_OFF
INT 21H
MOV AL,MKBAK ;恢复系统8259屏蔽字
STI ;开中断
POP DX ;显示计数值
CALL SHWORD
MOV AX,4C00H
INT 21H
RET
START ENDP
MYINT PROC FAR ;自定义键盘中断处理程序STI ;开中断
INC DX ;计数加一
IN AL,60H ;读入扫描码(用户可对此键值进行处理)PUSH DX
MOV DL,AL
CALL SHWORD
POP DX
IN AL,61H ;读入控制字节
MOV AH,AL
OR AL,80H
OUT 61H,AL ;复位键盘
CLI ;关中断
MOV AL,61H ;中断结束命令送中断控制器
IRET ;中断返回
MYINT ENDP
SHWORD PROC NEAR ;2→16进制显示MOV CL,4
AGA: ROL DX,CL
MOV AL,DL
AND AL,0FH
CMP AL,10
JC NEXT2
ADD AL,7
NEXT2:ADD AL,30H
MOV AH,0EH
INT 10H
LOOP AGA
MOV DL,0AH
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
RET
SHWORD ENDP CODE ENDS END START。