x86构架之-Intel8042键盘控制器简介
1. Intel8042键盘
8048芯片,本身就是一个小的处理器,它的内部有自己的处理器,有自己的 ram,有自己的寄存器。
i8042 有 4 个 8 bits 的寄存器,他们是:
- Status Register(状态寄存器)
- Output Buffer(输出缓冲器)
- Input Buffer(输入缓冲器)
- Control Register(控制寄存器)
他们使用两个 IO 端口,0x60
和 0x64
。
2. 各寄存器作用
2.1 Status Register(状态寄存器)
状态寄存器是一个8位只读寄存器,任何时刻均可被cpu读取。其各位定义如下:
Bit7: PARITY-EVEN(P_E): 从键盘获得的数据奇偶校验错误
Bit6: RCV-TMOUT(R_T): 接收超时,置1
Bit5: TRANS_TMOUT(T_T): 发送超时,置1
Bit4: KYBD_INH(K_I): 为1,键盘没有被禁止。为0,键盘被禁止。
Bit3: CMD_DATA(C_D): 为1,输入缓冲器中的内容为命令,为0,输入缓冲器中的内容为数据。
Bit2: SYS_FLAG(S_F): 系统标志,加电启动置0,自检通过后置1
Bit1: INPUT_BUF_FULL(I_B_F): 输入缓冲器满置1,i8042 取走后置0
BitO: OUT_BUF_FULL(O_B_F): 输出缓冲器满置1,CPU读取后置0
2.2 Output Buffer(输出缓冲器)
输出缓冲器是一个8位只读寄存器。驱动从这个寄存器中读取数据。这些数据包括,扫描码,发往 i8042 命令的响应,间接的发往 i8048 命令的响应。
2.3 Input Buffer(输入缓冲器)
输入缓冲器是一个8位只写寄存器。缓冲驱动发来的内容。这些内容包括,发往 i8042 的命令,通过 i8042 间接发往 i8048 的命令,以及作为命令参数的数据。
2.4 Control Register(控制寄存器)
也被称作 Controller Command Byte (控制器命令字节)。其各位定义如下
Bit7: 保留,应该为0
Bit6: 将第二套扫描码翻译为第一套
Bit5: 置1,禁止鼠标
Bit4: 置1,禁止键盘
Bit3: 置1,忽略状态寄存器中的 Bit4
Bit2: 设置状态寄存器中的 Bit2
Bit1: 置1,enable 鼠标中断
BitO: 置1,enable 键盘中断
3. 端口地址及操作流程
驱动中把 0x60 叫数据端口, 0x64 叫命令端口。
读命令寄存器:
先向0x64端口写命令0x20:outportb(0x64,0x20)
;
再从0x60端口读数据:inportb(0x60)
;写命令寄存器
先向0x64端口写命令0x60:outportb(0x64,0x60)
;
再向0x60端口写数据:outportb(0x60,data)
;
x86构架之-Intel8042键盘控制器简介相关推荐
- x86 构架的 Arduino 开发板Intel Galileo
RobotPeak 是上海的一家硬件创业团队,团队致力于民用机器人平台系统.机器人操作系统(ROS)以及相关设备的设计研发,并尝试将日新月异的机器人技术融入人们的日常生活与娱乐当中.同时,RobotP ...
- STM32学习之CAN控制器简介
1.STM32自带了基本扩展CAN外设,又称bxCAN,bxCAN的特点如下: 支持CAN协议2.0A和2.0B主动模式 波特率最高达1Mbps 支持时间触发通信 具有3个发送邮箱 具有3级深度的2个 ...
- STM32 CAN控制器简介-寄存器简介
1.CAN主控制寄存器(CAN_MCR) 该寄存器的我们仅介绍下INRQ位,该位用来控制初始化请求. 设置INRQ=0,可使CAN从初始化模式进入正常工作模式. 设置INRQ=1,可使CAN从正常工作 ...
- 用 CPLD实现结构简单的键盘控制器
摘要:本文介绍了一种用 CPLD实现键盘控制器的崭新方法.该键盘控制器具有结构简单,通用性强等优点. 1. 引言 键盘作为单片机系统的一种主要输入设备被广泛使用,目前用于实现键盘控制 ...
- i8042 键盘控制器-------详细介绍
[转]http://shanzy.bokee.com/834368.html ps/2 键盘硬件概述 对于驱动来说,和键盘相关的最重要的硬件是两个芯片.一个是 intel 8042 芯片,位于主板上, ...
- 访问硬件示例 访问键盘控制器
控制一个芯片首先要知道它的地址,大多数PC上的8259键盘控制器在地址0x60和0x64上是可寻址的,这些位置有时称为端口(port),因为它们提供了进入硬件芯片的入口. 在使用DDK时,有多个宏可以 ...
- USB基础---OHCI、UHCI、EHCI和XHCI控制器简介
OHCI.UHCI都是USB1.1的接口标准,而EHCI是对应USB2.0的接口标准,最新的XHCI是USB3.0的接口标准. OHCI.UHCI.EHCI和XHCI控制器介绍 (1) OHCI(Op ...
- unity角色控制器简介
Character Controller 用于应用到会动的游戏对象上,添加角色控制器后,会自动添加一个胶囊碰撞体 主要参数说明: Slope Limit:坡度限制 Step Offset:台阶高度 - ...
- 学会Zynq(28)SPI控制器简介
本文简单介绍Zynq中的SPI控制器.本文将"master"称为"主机":将"slave"称为"从机":将"s ...
最新文章
- MySQL数据库+命令大全+常用操作
- 深度学习神经网络都是从CNN和AlexNet开始的
- C语言函数调用的原理
- undefined reference to `vtable for XX::XX'
- L1-011. A-B-PAT团体程序设计天梯赛(GPLT)
- linux命令iconv_Linux常用命令--iconv
- RT-Thread与cubemx|74HC595驱动数码管详解
- sobel算子进行边缘检测
- (附源码)计算机毕业设计ssm房屋中介管理信息系统
- 如何实现镜像网站内容的同步
- There was an error checking the latest version of pip
- Windows10使用浏览器崩溃复现及分析
- 走近秦岭深山小镇--四亩地镇
- 1001: 植树问题 ZZULIOJ
- java 获取当年法定假日以及公休日-接口坞
- 印度最大IT公司与IIT联手研究5G和AI 他们有什么优势
- LeetCode 09:回文数(Java实现)
- 运维监控系列(15)-Alertmanager添加163邮箱、钉钉、微信告警通知功能
- Java数组(Array)
- 杨锦鑫:美元重返95,欧元绝地反扑