📄 ps2mouse.lst
字号:
C51 COMPILER V6.23a PS2MOUSE 08/17/2006 16:45:42 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE PS2MOUSE
OBJECT MODULE PLACED IN .\Obj\Ps2Mouse.obj
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE ..\..\Driver\PS2\PS2Mouse\Ps2Mouse.c LARGE OPTIMIZE(2,SPEED) MODP2 PRINT(.\
-Obj\Ps2Mouse.lst) OBJECT(.\Obj\Ps2Mouse.obj)
stmt level source
1 /*------------------------------------------------------------------
2 * CopyRight (C) 2005,江苏盛唐电子产品有限公司
3 * All Rights Reserved.
4 *
5 * 文件名称:PS2Mouse.c
6 * 文件标识:
7 * 摘 要:从PS2接口操纵PS2鼠标的功能
8 *
9 * 当前版本:1.0
10 * 作 者:熊刚
11 * 完成日期:2005年10月7日
12 *
13 * 取代版本:
14 * 原作者 :
15 * 完成日期:
16 --------------------------------------------------------------------*/
17
18 //#include<conio.h>
19 #include "..\..\inc\includes.h"
20
21 /**************************************************
22 功能介绍:初始化PS2鼠标操作
23 入口参数: 无
24 返回: 无
25 备注: PS2鼠标必须初始化后才能正常上报数据。
26 ***************************************************/
27 void InitMouse(void)
28 {
29 1 uchar ucPS2ReturnData;
30 1
31 1 PS2_SendChar(0xF2);
32 1 if(PS2_GetChar(&ucPS2ReturnData))
33 1 {
34 2 ComShowString(COM_1,"CMD0xf2 Return Code is:");
35 2 ComSendText(COM_1,&ucPS2ReturnData,1);
36 2 }
37 1
38 1 PS2_SendChar(0xF4);
39 1
40 1 }
41
42 #define c_PS2MouseACKCode 0xFA
43
44 /**************************************************
45 功能介绍:获取PS2鼠标的状态编码值
46 入口参数: 存放编码信息的缓冲区,必须大于3
47 返回: 获取数据是否成功
48 备注: 注意入口指针的大小,不可出现指针越界现象.
49 ***************************************************/
50 bool GetMouseData(uchar *ucDataBuff)
51 {
52 1 uchar ucPS2ReturnData;
53 1 uchar uci;
54 1
C51 COMPILER V6.23a PS2MOUSE 08/17/2006 16:45:42 PAGE 2
55 1 if(PS2_GetChar(&ucPS2ReturnData))
56 1 {
57 2 if(ucPS2ReturnData == c_PS2MouseACKCode)
58 2 {
59 3 return false;
60 3 }
61 2 else
62 2 {
63 3 *ucDataBuff++ = ucPS2ReturnData;
64 3
65 3 for(uci=0; uci<2; uci++)
66 3 {
67 4 if(PS2_GetChar(&ucPS2ReturnData))
68 4 {
69 5 *ucDataBuff++ = ucPS2ReturnData;
70 5 }
71 4 else
72 4 {
73 5 return false;
74 5
75 5 }
76 4
77 4 }
78 3 return true;
79 3 }
80 2 }
81 1 else
82 1 {
83 2 return false;
84 2 }
85 1 }
86
87 /**************************************************
88 功能介绍:PS2鼠标的编码信息转换成USB鼠标的编码信息
89 入口参数: 存放编码信息的缓冲区,必须大于3
90 返回: 无
91 备注: 注意入口指针的大小,不可出现指针越界现象.
92 ***************************************************/
93 void TransferPS2DataToUSB(uchar *ucMouseDataBuff)
94 {
95 1 uchar ucMouseX;
96 1 char ucMouseY;
97 1 uchar ucMouseStatus;
98 1
99 1 ucMouseX = ucMouseDataBuff[1];
100 1 ucMouseY = ucMouseDataBuff[2];
101 1 ucMouseStatus = ucMouseDataBuff[0];
102 1
103 1 if((ucMouseStatus & 0x80) || (ucMouseStatus & 0x40))
104 1 {
105 2 ucMouseX = 0;
106 2 ucMouseY = 0;
107 2 ucMouseStatus = 0;
108 2 return;
109 2
110 2 }
111 1 if(ucMouseStatus & 0x10)
112 1 {
113 2 ucMouseDataBuff[1] = (ucMouseX>>1)|0x80;
114 2 }
115 1 else
116 1 {
C51 COMPILER V6.23a PS2MOUSE 08/17/2006 16:45:42 PAGE 3
117 2 ucMouseDataBuff[1] = ucMouseX;
118 2 }
119 1
120 1 if(ucMouseStatus & 0x20)
121 1 {
122 2 ucMouseDataBuff[2] = -((ucMouseY>>1)|0x80);
123 2 }
124 1 else
125 1 {
126 2 ucMouseDataBuff[2] = -ucMouseY;
127 2 }
128 1
129 1 ucMouseDataBuff[0] = ucMouseStatus & 0x07;
130 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 476 ----
CONSTANT SIZE = 24 ----
XDATA SIZE = ---- 12
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -