|
|
#define WHEEL_DATA_A_GPIO P10 //輸入上拉
#define WHEEL_DATA_B_GPIO P11 //輸入上拉
u8 Wheel; //旋轉(zhuǎn)的脈沖數(shù),讀取后清0
void mouse_Wheel_Check(void) //放在主循環(huán)即可
{
static u8 wheelStateLast = 0;
static u8 wheelStateBefore = 0;
static u8 wheelStateNow = 0;
u8 result = 0;
u8 tempState = (WHEEL_DATA_A_GPIO << 1)|WHEEL_DATA_B_GPIO;
if(wheelStateNow == tempState)
{
return;
}
wheelStateLast = wheelStateBefore;
wheelStateBefore = wheelStateNow;
wheelStateNow = tempState;
result = (wheelStateNow << 4) |(wheelStateBefore << 2) |wheelStateLast;
switch(result)
{
case 0x38:
case 0x07:
Wheel--;
break;
case 0x34:
case 0x0b:
Wheel++;
break;
default:
break;
}
}
|
|