?? mouse.c
字號:
#include "mouse.h"
#include "usart.h"
#include "lcd.h"
//////////////////////////////////////////////////////////////////////////////////
//本程序只供學習使用,未經作者許可,不得用于其它任何用途
//Mini STM32開發板
//鼠標 驅動代碼
//正點原子@ALIENTEK
//技術論壇:www.openedv.com
//修改日期:2010/6/17
//版本:V1.0
//版權所有,盜版必究。
//Copyright(C) 正點原子 2009-2019
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
u8 MOUSE_ID;//用來標記鼠標ID
PS2_Mouse MouseX;
//處理MOUSE的數據
void Mouse_Data_Pro(void)
{
MouseX.x_pos=(signed char)PS2_DATA_BUF[1];
MouseX.y_pos=(signed char)PS2_DATA_BUF[2];
MouseX.y_pos=-MouseX.y_pos;//Y方向反了,糾正過來
MouseX.z_pos=(signed char)PS2_DATA_BUF[3];
MouseX.bt_mask=PS2_DATA_BUF[0]&0X07;//取出掩碼
}
//初始化鼠標
//返回:0,初始化成功
//其他:錯誤代碼
//CHECK OK 2010/5/2
u8 Init_Mouse(void)
{
u8 t;
PS2_Init();
delay_ms(800); //等待上電復位完成
PS2_Status=CMDMODE; //進入命令模式
t=PS2_Send_Cmd(PS_RESET); //復位鼠標
if(t!=0)return 1;
t=PS2_Get_Byte();
if(t!=0XFA)return 2;
t=0;
while((PS2_Status&0x80)==0)//等待復位完畢
{
t++;
delay_ms(10);
if(t>50)return 3;
}
PS2_Get_Byte();//得到0XAA
PS2_Get_Byte();//得到ID 0X00
//進入滾輪模式的特殊初始化序列
PS2_Send_Cmd(SET_SAMPLE_RATE);//進入設置采樣率
if(PS2_Get_Byte()!=0XFA)return 4;//傳輸失敗
PS2_Send_Cmd(0XC8);//采樣率200
if(PS2_Get_Byte()!=0XFA)return 5;//傳輸失敗
PS2_Send_Cmd(SET_SAMPLE_RATE);//進入設置采樣率
if(PS2_Get_Byte()!=0XFA)return 6;//傳輸失敗
PS2_Send_Cmd(0X64);//采樣率100
if(PS2_Get_Byte()!=0XFA)return 7;//傳輸失敗
PS2_Send_Cmd(SET_SAMPLE_RATE);//進入設置采樣率
if(PS2_Get_Byte()!=0XFA)return 8;//傳輸失敗
PS2_Send_Cmd(0X50);//采樣率80
if(PS2_Get_Byte()!=0XFA)return 9;//傳輸失敗
//序列完成
PS2_Send_Cmd(GET_DEVICE_ID); //讀取ID
if(PS2_Get_Byte()!=0XFA)return 10;//傳輸失敗
MOUSE_ID=PS2_Get_Byte();//得到MOUSE ID
PS2_Send_Cmd(SET_SAMPLE_RATE);//再次進入設置采樣率
if(PS2_Get_Byte()!=0XFA)return 11;//傳輸失敗
PS2_Send_Cmd(0X0A);//采樣率10
if(PS2_Get_Byte()!=0XFA)return 12;//傳輸失敗
PS2_Send_Cmd(GET_DEVICE_ID); //讀取ID
if(PS2_Get_Byte()!=0XFA)return 13;//傳輸失敗
MOUSE_ID=PS2_Get_Byte();//得到MOUSE ID
PS2_Send_Cmd(SET_RESOLUTION); //設置分辨率
if(PS2_Get_Byte()!=0XFA)return 14;//傳輸失敗
PS2_Send_Cmd(0X03);//8點/mm
if(PS2_Get_Byte()!=0XFA)return 15;//傳輸失敗
PS2_Send_Cmd(SET_SCALING11); //設置縮放比率為1:1
if(PS2_Get_Byte()!=0XFA)return 16;//傳輸失敗
PS2_Send_Cmd(SET_SAMPLE_RATE); //設置采樣率
if(PS2_Get_Byte()!=0XFA)return 17;//傳輸失敗
PS2_Send_Cmd(0X28);//40
if(PS2_Get_Byte()!=0XFA)return 18;//傳輸失敗
PS2_Send_Cmd(EN_DATA_REPORT); //使能數據報告
if(PS2_Get_Byte()!=0XFA)return 19;//傳輸失敗
PS2_Status=MOUSE;//進入鼠標模式
return 0;//無錯誤,初始化成功
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -