教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教学研究 >

8255并行接口键盘实验

来源:网络收集 时间:2026-08-28
导读: 实践 四川大学网络教育学院 计算机综合实践 校外学习中心: 学 生 专 层 年 学 实 践 时 姓 名: 成都市 业: 电气工程及其自动化 次: 级: 号: 间: 专升本 09 春 实践 1、掌握 8255A 的功能及方式 0、1 的实现 实 2、熟悉 8255A 与 CPU 的接口,以及传输

实践

四川大学网络教育学院

计算机综合实践

校外学习中心: 学 生 专 层 年 学 实 践 时 姓 名:

成都市

业: 电气工程及其自动化 次: 级: 号: 间: 专升本 09 春

实践

1、掌握 8255A 的功能及方式 0、1 的实现 实 2、熟悉 8255A 与 CPU 的接口,以及传输数据的工作原理及编程方法。 验 3、利用 09H 型中断设计一个自己的键盘中断服务程序,程序设计应考虑在 退出时不破坏原有的设置。 目 的

1 、8255 的工作方式实 验

一片 8255 内部有 3 个端口, A 口可以工作在方式 0、 方式 1 或方 式 2,B 口可以工作在方式 0、方式 1,C 口可以工作在方式 0。 方式 0 是基本型输入/输出。这种方式和外设交换数据时,8255 端口与外设之间不使用联络线。 方式 1 为选通型输入/输出。用这种方式和外界交换数据时,端 口和外设之间要有联络信号。 方式 2 是双向数据传送,仅 A 口有这项功能。当 A 口工作在方 式 2 时,B 口仍可以工作在方式 0 或方式 1,但此时 B 口方式 1 只能用查询方式与 CPU 交换信息。 2.、工作方式选择字 8255 工作方式选择字共 8 位,存放在 8255 控制寄存器中。最高 位 D7 为标志位,D7=1 表示控制寄存器中存放的是工作方式选 择字, D7=0 表示控制寄存器中存放的是 C 口置位 / 复位控制 字。 3 、C 口置/复位控制字 8255 的 C 口可进行位操作,即:可对 8255C 口的每一位进行置 位或清零操作,该操作是通过设置 C 口置/ 复位字实现的(图 8-10) 。C 口置/复位字共 8 位,各位含义如下:

内 容

实践

4、 命令字与初始化编程 8255 有两个命令字,即方式选择控制字和 C 口置 0/置 1 控制字, 初始化编程的步骤是: ① 向 8255 控制寄存器写入“方式选择控制字” ,从而预置端口 的工作方式。 ②当端口预置为方式 1 或方式 2 时,再向控制寄存器写入“C 口 置 0/置 1 控制字” 。这一操作的主要目的是使相应端口的中断允 许触发器置 0,从而禁止中断,或者使相应端口的中断允许触发 器置 1,从而允许端口提出中断请求。 注意: “C 口置 0/置 1 控制字”虽然是对 C 口进行操作,但是该 控制字是命令字, 所以要写入控制寄存器, 而不是写入 C 口控制 寄存器。 ③ 向 8255 数据寄存器写入“数据”或从 8255 数据寄存器读出 “数据” 。 键盘驱动的主要作用就是实时监测外部按键中断, 一旦发现外部算 法

有键按下就向内核发送键盘消息实现键盘输入功能。 键盘驱动创 建了中断服务线程和 4 个键盘中断事件, 每行按键对应一个键盘

与 中断事件。有键被按下时,中断服务例程得到对应的中断标识符 流 程 图

并报告给系统任务调度进程,同时产生键盘中断事件,键盘中断

服务线程响应键盘中断事件,开始扫描矩阵键盘。根据产生的中

实践

断事件类型不同,可以首先确定被按下键的行位置。由于键盘被 按下后, 该键对应的行和列被连通, 因此根据判断各列对应的 I/O 口的电平, 可以得到被按下键的列位置; 得到按键的准确位置后, 通过向操作系统发送键盘消息 KEYBD_EVENT,实现一次键盘输 入 。 循 环 扫 描 键 盘 , 直 到 按 键 被 弹 起 则 发 送 KEYEVENTF_KEYUP 事件。响应键盘中断输入的整个流程如 图。

1、 在 OAL 层加入中断源

矩阵键盘采用 4 路 I/O 口中断,每路中断对应 1 个中断源。矩阵 键盘驱动首先要在 OAL 层加入这些中断源。以其中一路中断为 例: #define SYSINTR_KEYONE(SYSINTR_FIRMWARE+0) 2 、中断 服务例程(ISR)设计 本键盘驱动将 GPIO_6、GPIO_7、GPIO_16、GPIO_17 四个 I/O

实践

口作为中断 I/O 口。有键被按下时将产生一个 I/O 中断,内核首 先进入异常中断处理程序,由它屏蔽所有中断,再调用中断服务 例程 ISR 得到该中断的逻辑中断标识。 鉴于 ISR 的任务比较单一, ISR 通常都要求越短、 越快越好。 矩阵键盘驱动的 ISR 设计如下: if(v_pGPIOReg ﹥ GEDR_x & GPIO_6) {// 中 断 触

发 v_pGPIOReg﹥GEDR_x = GPIO_6;//清除中断 return SYSINTR_KEYONE;// 返回中断标识 } 其他三路中断的 ISR 设计与此类似。 3、中断服务线程(IST)设计 中断服务例程以键盘中断的逻辑中断标识符形式返回给系统任 务调度进程, 中断服务线程则在矩阵键盘驱动中负责具体中断处 理。因为中断服务例程较小,并且只做很少的处理工作,中断服 务线程就必须完成大多数中断处理工作,功能主要包括响应中 断、扫描按键位置、发送键盘消息等。 矩阵键盘驱动的 IST 设计如下:矩阵键盘驱动设计了 4 个中断 事件 HANDLE hKEYEvents, 分别对应矩阵键盘 4 行产生的中断。 在矩阵键盘驱动的 IST 中,调用 CreateEvent 函数创建 4 个事件 对象,接着调用系统函数 InterruptInitialize 完成中断和事件的关 联并使能中断。完成这些初始化工作后,就可以调用 WaitForMultipleObjects (hKEYEvents) 函数进入键盘事件的等待 队列中。当有事件被捕获后,根据不同的事件类型进入不同的键 盘扫描处理程序以其中一路中断为例进行实验

实践

switch (dwEvent WAIT_OBJECT_0){//事件类型 case 0://第 1 程 行键盘有键按下 序 清 单

v_pGPIOReg ﹥ GPDR_x &= ~ (GPIO_13);// 设 为 输 入 v_pGPIOReg ﹥ GPDR_x |= (GPIO_6);// 中 断 I/O 输

出 v_pGPIOReg﹥GPCR_x |= (GPIO_6);//输出低电平 while(!(v_pGPIOReg ﹥ GPLR_x & GPIO_13)) {// 扫描矩阵键 盘,判断按键列位置 if(num==1)//第 1 次连发延时 400 ms Sleep(100);//按键延时去抖 if(!(v_pGPIOReg 置 计数 ﹥ GPLR_x & GPIO_13)){// 列 位 Sleep(400);

else

keybd_event('0' ,0x71, 0, 0);// 发键盘消息 } else{

num++;// 连发

if((v_pGPIOReg->GPLR_x & GPIO_13)&&num>0){ num=0;//按键弹起 keybd_event('0',0x71, KEYEVENTF_KEYUP, 0);} } }

实践

按键被弹起发送 KEYEVENTF_KEYUP 事件

运 行 结 果

通过 8255 并行键盘接口实验,对课本上的知识有了更深刻的理解,掌握 8255A 的功能及方式 0、1 的实现,熟悉 8255A 与 CPU 的接口,以及传输数 据的工作原理及编程方法。通过现实中的操作,让我对现在所学的知识产 生了更大的兴趣,为以后的进一步学习定下了良好的基础。

调 试 分 析 和 体 会

查 阅 资 料 目 录

串口设计与分析

实践

格式要求

内页正文内容:4号宋体、单倍行距

如需附图可将文档图纸压缩后上传

…… 此处隐藏:1615字,全部文档内容请下载后查看。喜欢就下载吧 ……
8255并行接口键盘实验.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1582861.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)