1. Intel8042键盘

8048芯片,本身就是一个小的处理器,它的内部有自己的处理器,有自己的 ram,有自己的寄存器。

i8042 有 4 个 8 bits 的寄存器,他们是:

  • Status Register(状态寄存器)
  • Output Buffer(输出缓冲器)
  • Input Buffer(输入缓冲器)
  • Control Register(控制寄存器)

他们使用两个 IO 端口,0x600x64

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键盘控制器简介相关推荐

  1. x86 构架的 Arduino 开发板Intel Galileo

    RobotPeak 是上海的一家硬件创业团队,团队致力于民用机器人平台系统.机器人操作系统(ROS)以及相关设备的设计研发,并尝试将日新月异的机器人技术融入人们的日常生活与娱乐当中.同时,RobotP ...

  2. STM32学习之CAN控制器简介

    1.STM32自带了基本扩展CAN外设,又称bxCAN,bxCAN的特点如下: 支持CAN协议2.0A和2.0B主动模式 波特率最高达1Mbps 支持时间触发通信 具有3个发送邮箱 具有3级深度的2个 ...

  3. STM32 CAN控制器简介-寄存器简介

    1.CAN主控制寄存器(CAN_MCR) 该寄存器的我们仅介绍下INRQ位,该位用来控制初始化请求. 设置INRQ=0,可使CAN从初始化模式进入正常工作模式. 设置INRQ=1,可使CAN从正常工作 ...

  4. 用 CPLD实现结构简单的键盘控制器

    摘要:本文介绍了一种用 CPLD实现键盘控制器的崭新方法.该键盘控制器具有结构简单,通用性强等优点.    1.  引言      键盘作为单片机系统的一种主要输入设备被广泛使用,目前用于实现键盘控制 ...

  5. i8042 键盘控制器-------详细介绍

    [转]http://shanzy.bokee.com/834368.html ps/2 键盘硬件概述 对于驱动来说,和键盘相关的最重要的硬件是两个芯片.一个是 intel 8042 芯片,位于主板上, ...

  6. 访问硬件示例 访问键盘控制器

    控制一个芯片首先要知道它的地址,大多数PC上的8259键盘控制器在地址0x60和0x64上是可寻址的,这些位置有时称为端口(port),因为它们提供了进入硬件芯片的入口. 在使用DDK时,有多个宏可以 ...

  7. USB基础---OHCI、UHCI、EHCI和XHCI控制器简介

    OHCI.UHCI都是USB1.1的接口标准,而EHCI是对应USB2.0的接口标准,最新的XHCI是USB3.0的接口标准. OHCI.UHCI.EHCI和XHCI控制器介绍 (1) OHCI(Op ...

  8. unity角色控制器简介

    Character Controller 用于应用到会动的游戏对象上,添加角色控制器后,会自动添加一个胶囊碰撞体 主要参数说明: Slope Limit:坡度限制 Step Offset:台阶高度 - ...

  9. 学会Zynq(28)SPI控制器简介

    本文简单介绍Zynq中的SPI控制器.本文将"master"称为"主机":将"slave"称为"从机":将"s ...

最新文章

  1. MySQL数据库+命令大全+常用操作
  2. 深度学习神经网络都是从CNN和AlexNet开始的
  3. C语言函数调用的原理
  4. undefined reference to `vtable for XX::XX'
  5. L1-011. A-B-PAT团体程序设计天梯赛(GPLT)
  6. linux命令iconv_Linux常用命令--iconv
  7. RT-Thread与cubemx|74HC595驱动数码管详解
  8. sobel算子进行边缘检测
  9. (附源码)计算机毕业设计ssm房屋中介管理信息系统
  10. 如何实现镜像网站内容的同步
  11. There was an error checking the latest version of pip
  12. Windows10使用浏览器崩溃复现及分析
  13. 走近秦岭深山小镇--四亩地镇
  14. 1001: 植树问题 ZZULIOJ
  15. java 获取当年法定假日以及公休日-接口坞
  16. 印度最大IT公司与IIT联手研究5G和AI 他们有什么优势
  17. LeetCode 09:回文数(Java实现)
  18. 运维监控系列(15)-Alertmanager添加163邮箱、钉钉、微信告警通知功能
  19. Java数组(Array)
  20. 杨锦鑫:美元重返95,欧元绝地反扑

热门文章

  1. SQL2008无法连接到(local),该账户当前被锁定,所以Sa用户登陆失败
  2. 类对象作为函数参数进行值传递
  3. ThinkPHP5框架接入阿里云短信最新版(原大鱼)的方法
  4. 百度贴吧高考作文强贴
  5. PyQt4(简单界面)
  6. 用python numpy实现幻方
  7. 模拟退火算法从原理到实战【基础篇】
  8. Android自定义视图二:如何绘制内容
  9. 求助下 Ubuntu 15.10(64 位)下安装 pyspider 下的问题 - V2EX
  10. ListView的CheckBox实现全部选中/不选中