PS/2鼠标协议原理(中文) 按照PS/2协议,移动时,鼠标会输出一组时钟和数据信号;而在静止时,时钟和数据信号将一直保持为逻辑高电平,表示处于空闲状态。每次移动时,鼠标会向主机发送3个数据帧,每个数据帧11位,包括1个起始位“0”、8个数据位(低位在前)、1个奇校验位和一个结束位“1”,因此每次移动时,鼠标会向主机发送33位数据,其中第0、11和22位是起始位“0”,第10、21和32位是结束位“1”,如图 5.7所示。 图 5.7 PS/2鼠标的数据传送 在图 5.7 中,“Mouse status byte” 、“X direction byte”和“Y direction byte”三个字节的数据是鼠标移动产生的相关数据,包括状态、X 方向数据和Y 方向数据。按照PS/2协议,鼠标数据在时钟CLK 的下降沿有效,而时钟CLK 的频率要求在20KHz~30KHz 之间。 基于PS/2协议的鼠标采用相对坐标的形式来追踪它的移动轨迹,如图 5.8所示。如果鼠标水平向右移动,则得到一个正的 X 值;否则,得到一个负的 X 值。如果鼠标竖直向上移动,则得到一个正的 Y 值;否则,得到一个负的 Y 值。使用“0”表示正值;而使用“1”表示负值。在“Mouse status byte”数据字节中,XS 和YS 就表示了鼠标的移动方向。 图 5.8 PS/2鼠标的相对坐标 相对坐标中,X 值和Y 值表示了鼠标的移动速度,值越大表示鼠标的移动速度越大。“Mouse status byte”数据字节中,XV 和YV 则标识鼠标的移动是否超出了范围,包括X 方向和Y方向。如果超出了范围,则 XV 或 YV 置位为1。“Mouse status byte”数据字节中,L 和R则分别表示鼠标的左键和右键,如果有键按下,则相应的 L 或 R 置位。 如果鼠标一直移动,则图 5.7所示的33个位的数据不停发送,重复周期约为50ms。 按照PS/2协议,移动时,鼠标会输出一组时钟和数据信号;而在静止时,时钟和数据信号将一直保持为逻辑高电平,表示处于空闲状态。每次移动时,鼠标会向主机发送3个数据帧,每个数据帧11位,包括1个起始位“0”、8个数据位(低位在前)、1个奇校验位和一个结束位“1”,因此每次移动时,鼠标会向主机发送33位数据,其中第0、11和22位是起始位“0”,第10、21和32位是结束位“1”,如图 5.7所示。 在图 5.7 中,“Mouse status byte” 、“X direction byte”和“Y direction byte”三个字节的数据是鼠标移动产生的相关数据,包括状态、X 方向数据和Y 方向数据。按照PS/2协议,鼠标数据在时钟CLK...