实验5 ARM中断编程

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

实验五 ARM中断编程

一、实验目的

1.学习键盘驱动原理。

2.掌握中断的使用方法。

二、实验内容

通过ARM的外部中断进行键盘的扫描,利用中断服务程序编写键盘的驱动,在超级终端上显示相应的键值。UART接收中断,以中断方式(而不是查询方式)实现串口数据的接收

三、预备知识

1.掌握在ADS1.2集成开发环境中编写和调试程序的基本过程。

2.会使用UltraEdit编辑C语言源程序。

3.了解ARM中断服务程序的框架结构。

4.了解编译后的映象文件的下载方法。

四、键盘驱动程序的原理

1.简单键盘扫描

通常在一个键盘中使用了一个瞬时接触开关,并且用如图1所示的简单电路,微处理器可以容易地检测到闭合。当开关打开时,通过处理器的I/O口的一个上拉电阻提供逻辑1;当开关闭合时,处理器的I/O口的输入将被拉低得到逻辑0。可遗憾的是,开关并不完善,因为当它们被按下或者被释放时,并不能够产生一个明确的1或者0。尽管触点可能看起来稳定而且很快地闭合,但与微处理器快速的运行速度相比,这种动作是比较慢的。当触点闭合时,其弹起就像一个球。弹起效果将产生如图2所示的好几个脉冲。弹起的持续时间通常将维持在5ms~30ms之间。如果需要多个键,则可以将每个开关连接到微处理器上它自己的输入端口。然而,当开关的数目增加时,这种方法将很快使用完所有的输入端口。为此我将用到矩阵键盘。

图1 简单键盘电路

图2 键盘抖动

2. 复杂矩阵键盘扫描

键盘上陈列这些开关最有效的方法(当需要5个以上的键时)就形成了一个如图3所示的二维矩阵。当行和列的数目一样多时,也就是方型的矩阵,将产生一个最优化的布列方式(I/O 端被连接的时候)。一个瞬时接触开关(按钮)放置在每一行与线一列的交叉点。矩阵所需的键的数目显然根据应用程序而不同。每一行由一个输出端口的一位驱动,而每一列由一个电阻器上拉且供给输入端口一位。

图3 矩阵键盘

键盘扫描过程就是让微处理器按有规律的时间间隔查看键盘矩阵,以确定是否有键被按下。一旦处理器判定有一个键按下,键盘扫描软件将过滤掉抖动并且判定哪个键被按下。每个键被分配一个称为扫描码的唯一标识符。应用程序利用该扫描码,根据按下的键来判定应该采取什么行动。换句话说,扫描码将告诉应用程序按下哪个键。

五、实验分析

利用外部中断来编写简单按键驱动程序。

图4. 按键中断程序流程图

涉及的主要寄存器如下: 1. I/O 引脚设置寄存器

2. 中断模式寄存器

3.中断屏蔽寄存器

4.SOURCE PENDING REGISTER

5. INTERRUPT PENDING REGISTER

6. 外部中断控制寄存器

7.外部中断屏蔽寄存器

8.EXTERNAL INTERRUPT PENDING REGISTER

对于键盘中断服务程序的编写,在此作简单的说明:

(1) 中断的初始化:I/O设置, 中断寄存器的设置,中断屏蔽寄存器的设置,中断触发电平的设置,中断跳转的设置等

(2) 中断服务程序的编写:按照关中断――>具体中断处理――>清除相应中断标志位――>开中断的流程编写。

(3) 注意按键去抖要加延时。

相关文档
最新文档