第8章 嵌入式-键盘
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
键盘中断编程汇编主程序
MainInit:: //复位后从此处执行 见Vectors08.s文件末尾处 复位后从此处执行(见 文件末尾处) 复位后从此处执行 文件末尾处 SEI //关总中断 关总中断 //1.堆栈初始化为 堆栈初始化为RAM最高端 堆栈初始化为 最高端 LDHX #RAMendAddr + 1 //HX = #RAMendAddr + 1 TXS //HX - 1 -> SP //2.系统初始化 系统初始化 JSR MCUinit //初学时跳过此处 初学时跳过此处 //3.串行口初始化 串行口初始化 JSR SCIinit //4.键盘初始化 键盘初始化 JSR KBinit JSR EnableKBint CLI //开放键盘中断 开放键盘中断
//开总中断 开总中断
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
//程序总循环入口 程序总循环入口 MainLoop: NOP NOP BRA MainLoop //包含本工程的其他文件 包含本工程的其他文件----------------------------------包含本工程的其他文件 .include "MCUinit.s" .include "SCI.s" .include "KB.s" //芯片初始化 芯片初始化 //串行通信 串行通信 //键盘子程序 键盘子程序
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
(2) 键盘中断处理程序
//[Vectors08.s]中断处理子程序与中断向量表---------* //[Vectors08.s]中断处理子程序与中断向量表---------* 08 中断处理子程序与中断向量表--------//功能 功能: //功能: * // (1)定义中断处理子程序 * // (2)放置中断向量表 * //本文件包含 本文件包含: //本文件包含: * // (1)键盘中断处理函数 * // (2)未定义的中断处理函数 * //说明 说明: //说明:该文件与芯片具体型号有关 * 芯片型号MC68HC908GP MC68HC908GP32 // (1)芯片型号MC68HC908GP32 * // (2)注意本文件内容的顺序不能变动 * //-----------------------------------------------------------------------------------------------* //------------------------------------------------* //isrKeyBoard:键盘中断处理程序--------------------* //isrKeyBoard:键盘中断处理程序--------------------* -------------------//功能 识别按键并发送键值, 功能: //功能:识别按键并发送键值,把键值转换成对应的 * 定义值, 定义值,再从 * // 串口发送出去 * //调用子程序 调用子程序: //调用子程序: * 扫描法读取键值子程序(KBScan) // (1)扫描法读取键值子程序(KBScan) * 键值转为定义值子程序(KBDef) // (2)键值转为定义值子程序(KBDef) * //-----------------------------------------------------------------------------------------------* //------------------------------------------------*
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
(1) 键盘状态和控制寄存器(Keyboard Status 键盘状态和控制寄存器(Keyboard and Control Register ,INTKBSCR)
数据位 D7 D6 D5 D4 定义 复位 0 0 0 0 D3 D2 D1 D0
KEYF ACKK IMAS MODEK KK
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
• 矩阵方式:
矩阵方式是用n I/O线组成行输入口,m 矩阵方式是用n条I/O线组成行输入口,m 条I/O线组成列输出口,在行列线的每一个 I/O线组成列输出口,在行列线的每一个 交点上设置一个按键,如图11交点上设置一个按键,如图11-3所示。读 键值方法一般采用扫描方式,即输出口按 位轮换输出低电平,再从输入口读入键信 息,最后获得键码。这种方式占用I/O线较 息,最后获得键码。这种方式占用I/O线较 少,在实际应用系统中采用较多。
第8章 键盘
主要内容:
• 键盘基本问题与GP32的键盘中断口 键盘基本问题与GP32 GP32的键盘中断口 • 汇编语言键盘中断模块编程实例 • 08C语言键盘中断模块编程实例 08C语言键盘中断模块编程实例
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
8.1 键盘基本问题
• 8.1.1 键盘模型及接口
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
(1) 键盘中断编程汇编主程序
//-------------------------------------------------------------------------------------------- * //工 程 名:KeyBoard_Int.prj * 工 //硬件连接 硬件连接: * 硬件连接 // (1)MCU的A口接键盘 见“KB.s“ 文件中的说明 口接键盘(见 文件中的说明) * 的 口接键盘 //程序描述 按下键盘按键,串口发送 对应的键值 程序描述:按下键盘按键 串口发送 * 程序描述 按下键盘按键 //目 的:键盘中断 键盘扫描 键值识 别, 键值转换 键盘中断,键盘扫描 * 目 键盘中断 键盘扫描,键值识 //注 意:如果键盘插在实验板的上 排插孔 无须连线 若插在 无须连线,若插在 * 注 如果键盘插在实验板的上 排插孔,无须连线 // 下排插孔,需手工接线 * 下排插孔 需手工接线 //日 期:2007.07 * 日 //--------清华 清华2007版《嵌入式技术基础 与实践》实例------------------------- * 版 与实践》实例 清华 //头文件 头文件 .include "Includes.h" //总头文件 总头文件 //主程序 主程序 .area flash(abs) .org FlashStartAddr
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
独立键盘和矩阵键盘如图所示:
+5V
行 线
+5V
GND 独立键盘
列 线
矩阵键盘
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
8.1.2 键盘的基本问题 为了能实现对键盘的编程至少应该了解下 面几个问题: 一、如何识别键盘上的按键 二、如何区分按键是被真正地按下,还是 抖动 三、如何处理重键问题
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
三、重键问题
所谓重键问题就是有两个及两个以上按键 同时处于闭合状态的处理问题。在软件上, 处理重键问题通常有连锁法与巡回法。
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
4×4键盘的结构
+5V
5k×4
行线m1 m2 m3 m4 列线 n1 n2 n3 n4
键盘模型: 键盘模型:键盘的基本电路是一个接触开关, 通、断两种状态分别表示0 通、断两种状态分别表示0和1,微处理器 可以容易的检测到开关的闭合。当开关打 开时,提供逻辑“ 开时,提供逻辑“1”;当开关闭合时,提供 逻辑“ 逻辑“0”。
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
• 键盘接口
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
二、抖动问题 当手按下一个键时,会出现所按的键在闭 合位置和断开位置之间跳几下才稳定到闭 合状态的情况,当释放一个按键时也会出 现类似的情况,这就是抖动问题。抖动持 续的时间因操作者而异,一般为5 10ms之 续的时间因操作者而异,一般为5~10ms之 间,稳定闭合时间一般为十分之几秒~几 秒,由操作者的按键动作所确定。在软件 上,解决抖动的方法通常是延迟等待抖动 的消失或多次识别判定。
键盘接口按照不同的标准有不同的分类方法。 按键盘排布的方式:分成独立方式和矩阵方式; 按读入键值的方式:分为直读方式和扫描方式; 按是否进行硬件编码:分成非编码方式和硬件编 码方式; 按微处理器响应方式:分为中断方式和查询方式。
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
• 以下介绍较为常用的两种方式
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
一、键的识别 如何知道键盘上哪个键被按下就是键的识 别问题。若键盘上闭合键的识别由专用硬 件实现,称为编码键盘;而靠软件实现的 称为未编码键盘。在这里我们主要讨论未 编码键盘的接口技术和键盘输入程序的设 计。识别是否有键被按下,主要有查询法、 定时扫描法与中断法等。而要识别键盘上 哪个键被按下主要有行扫描法与行反转法。
0
0
0
0
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
• (2) 键盘中断允许寄存器(Keyboard 键盘中断允许寄存器(Keyboard
数据位 D7 定义 复位 D6 D5 D4 D3 D2
Interrupt Enable Register,INTBIER) Register,
D1 D0
KBIE7 KBIE6 KBIE5 KBIE4 KBIE3 KBIE2 KBIE1 KBIE0
.include "EnDisInt.s" //允许 禁止 允许/禁止 允许 禁止MCU各模块中断 各模块中断 //包含中断处理子程序与中断向量表文件 包含中断处理子程序与中断向量表文件"Vectors08.s"-------包含中断处理子程序与中断向量表文件 //注意 这个包含语句的存放位置必须放在最后 注意:这个包含语句的存放位置必须放在最后 注意 .include "Vectors08.s" //中断处理子程序与中断向量表 中断处理子程序与中断向量表
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
8.2.1 按键识别与键盘定义子程序
定义值
7E B BD 9 DB 0 E7 D7 # B7 BB D 77 C 7B 7D
1
2 EE DE 5 ED DD 8 EB
3 BE 6
A
(1)键值计算方法 ) 按上图的接法可以得出键值表, 按上图的接法可以得出键值表, 如下图。 如下图。键值可以通过扫描法 获得, 获得,由键值通过查表法编程 得到定义值。 得到定义值。 (2)键盘编程汇编语言子程序 )
独立方式: 独立方式是指将每个独立按键按一对一的方式直 接接到I/O输入线上。读键值时直接读I/O口,每 接接到I/O输入线上。读键值时直接读I/O口,每 一个键的状态通过读入键值来反映,所以也称这 种方式为一维直读方式,按习惯称为独立式。这 种方式查键实现简单,但占用I/O资源较多,一般 种方式查键实现简单,但占用I/O资源较多,一般 在键的数量较少时采用 。
Βιβλιοθήκη Baidu
0
0
0
0
0
0
0
0
• (3) 键盘中断编程相关问题
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
8.2 汇编语言键盘中断模块编程实例
4×4键盘与单片机接法示例
VDD MCU 内部上拉电阻 1 行线m1 m m2 7 m3 m4 列线 n1 n2 n3 n4 * 8 0 9 # C D 4 2 5 3 6 A B PTA0 PTA1 PTA2 PTA3 PTA7 PTA6 PTA5 PTA4
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
8.1.3 MC908GP32单片机的键盘中断模块 MC908GP32单片机的键盘中断模块
MC908GP32单片机的A口的8 MC908GP32单片机的A口的8根引脚与 键盘中断模块(Keyboard 键盘中断模块(Keyboard Interrupt Module — KBI)的引脚复用,作为KBI KBI)的引脚复用,作为KBI 引脚时,下面把8 引脚时,下面把8个引脚分别称为 KBIE7 pin—KBIE0 pin。 pin— pin。
4
键值
7
*
《嵌入式技术基础与实践》 嵌入式技术基础与实践》
8.2.2 键盘中断编程举例
下面给出的实例程序的功能是,当按下键盘上任何一个键,产生键盘中断, 下面给出的实例程序的功能是,当按下键盘上任何一个键,产生键盘中断, 在键盘中断程序中,通过串行口发送“键值”及“键定义值”。PC机用7.5.3 在键盘中断程序中,通过串行口发送“键值” 键定义值” PC机用 机用7.5.3 节介绍的串口调试器,接收并显示。键盘中断汇编工程文件组织如表8 所示。 节介绍的串口调试器,接收并显示。键盘中断汇编工程文件组织如表8-1所示。
表8-1 键盘中断汇编工程文件 工程文件名 所在路径 文件类型 文件名 GP32ASM.h 头文件 Includes.h KB.h SCI.h MCUinit.s EnDisInt.s 汇编语言 子程序文件 Vectors08.s SCI.s KB.s 汇编语言主程序文 件 Main.s KeyBoard_Int.prj MC08Ex2007\GP32\GP32S\S04_键盘中断编程 键盘中断编程 功能简述 芯片头文件 总头文件 键盘子程序定义头文件 串行通信头文件 芯片初始化文件 开放或禁止MCU各模块 各模块 开放或禁止 中断处理子程序与中断向量 表文件 串行通信文件 键盘子程序定义文件 主程序文件 讲解章节 [汇编工程文件组织 汇编工程文件组织]4.3 汇编工程文件组织 [汇编工程文件组织 汇编工程文件组织]4.3 汇编工程文件组织 [本章 本章] 本章 [参见本工程实例 参见本工程实例] 参见本工程实例 [初始化及 初始化及PLL编程实例 编程实例] 初始化及 编程实例 14.2.5 [参见本工程实例 参见本工程实例] 参见本工程实例 [本章 本章] 本章 [参见本工程实例 参见本工程实例] 参见本工程实例 [本章 本章] 本章 [本章 本章] 本章