欢迎来到天天文库
浏览记录
ID:48010687
大小:166.49 KB
页数:14页
时间:2020-01-14
《鼠标的原理,控制以及编程.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、鼠标的原理控制以及编程联想研究院板卡中心臧超飞前言.鼠标作为现代计算机的一个标准配置已经深深的影响了计算机的使用者因此在BIOS中加入鼠标的功能将为计算机提供更好的人机接口为使用者使用计算机带来更大的方便不同类型的鼠标主要不同的表现在数据传输的协议上主要的协议有四种类型1PS/22Serial3USB4ADB第一部分鼠标与系统架构图1鼠标与系统架构图一是一个典型的现代PC的鼠标配置架构在最底层的硬件层鼠标作为一个单片机通过PS/2协议和系统的KBC进行通讯传递数据和命令第二层BIOS通过KBC上提供的60H和64H口和鼠标进行传递信息由此可以看出KBC封装了PS/2协议使得PS/2
2、协议对于底层编程而言是通明的同样我们本文的主要内容也是基于KBC之上而跨越PS/2协议的第三层BIOS提供了基本的INT15H中断的调用使用者可以通过这个中断的调用给鼠标发送一些基本配置的命令注意INT15H没有提供鼠标的运行命令和数据接受接口第四层次系统Driver可以通过BIOS的INT15H的中断调用或者直接通过KBC的60H64H口控制鼠标同时向上为操作系统和应用程序提供服务第二部分PS/2协议以及鼠标的基本命令1信号定义PS/2协议主要包括两根信号线如图2CLK和DATA还有+5V的电源线和鼠标线DATA线是半双工的正常状态下CLK和DATA被主机端的一个510K的电阻拉
3、高到5V见图3但是鼠标和主机KBC在任何时候都可以将这两个信号拉低当端口处于空闲的状态是LCK和DATA线都处于高电平主机可以在任何时候通过拉低CLK信号切断设备图2PS/2电缆以及接口信号定义图3鼠标系统原理图2数据传输数据的传输是一个字节一个字节Byte传输的对于每一次的数据传输包括一个开始位alogic08个数据内容的比特bits一个奇偶校验位oddparity和一个停止位alogic0我们可以可以很容易看出8个数据位和奇偶校验位一起那么其奇偶性必定是奇的在传输过程中设备首先将CLK信号拉低产生CLK信号传输这十一个位bits传输设备通过拉高或者悬浮DATA信号来传输logi
4、c0或logic1在传输过程中设备可能处于三种传输状态a.空闲态Idle这时CLK信号和DATA信号都处于高电平态总线上没有传输行为b.抑制态Inhibit这时主机将CLK信号拉低设备将被从数据传输中切断c.请求传输Requesttosend这时主机将DATA信号拉低报纸CLK信号那么主机就是准备发送命令或者命令参数(1)输出到主机3命令集如果鼠标以及处于流模式StreamMode而且已经被Enable$F4命令激活那么在给鼠标发送任何命令之前必须先将鼠标Disable$F4这样可以保证命令响应以及数据传输的完整性这一点非常类似于我们在C语言读写文件中间一定要注意关闭文件用以保证将
5、缓冲区中的内容写到磁盘上因此如果我们在这种模式下发送了命令那么鼠标将会放弃而不是中断所有的数据传输包的传输以及命令的响应$FF复位命令Reset这个命令将引起鼠标的软件复位和重新校准鼠标的回应信号是一个ACKFA接着一个AA在重新校准后的300500ms给出00信号$FE重传命令Resend$F6设置缺省值$F5Disable$F4Enalbe$F3设置采样率$F2读设备类型$F0设置远程模式$EB读数据$EA设置流模式SetStreamMode$E9状态查询$E8设置分辨率$E7设置二维坐标$E6取消二维坐标第三部分KBC以及命令和数据的接收过程前一部分我们介绍了常用的标准的PS
6、/2,其中设计到了很多信号发送响应以及确认等复杂的过程但是对于实际编程而言复杂的工作已经被8042的芯片所封装了因此我们所要做的工作就是了解8042的接口以及操作方法(图4)8042的接口1.8042的接口从图4可以看出8042是一个非扩展的键盘控制器支持一个键盘和一个鼠标辅助接口典型的8042具有一个输出缓冲接口OutputBuffer和一个输入缓冲接口输出缓冲是一个8位的只读Readonly寄存器我们通过60H访问这个寄存器如果8042从键盘或鼠标读到一个数据信息放到了缓冲区中同时将状态寄存器见图5bit1置1表明此时缓冲区中有数据而且对于鼠标输入而言同时会将状态寄存器的bit
7、5置1表明这个数据是来自鼠标而不是来自键盘输入缓冲是一个8位只写寄存器我们是通过60H和64h口来访问这个缓冲区的我们往64H中写入一个字节8042将它解释成一个命令字节表现在8042自动置状态寄存器bit3为1如果写往60口将被8042解释位数据即是命令的参数表现在8042自动置状态寄存器bit3为0从前面可以看出我们对于KBC是的操作是通过两个I/O端口60H和64H口由此访问系统的输入缓冲和输出缓冲同时又要控制鼠标和接口所以我们的操作要有严格的规范同时我们还要参
此文档下载收益归作者所有