26 lines
319 B
C
26 lines
319 B
C
|
#include "mc8051fun.h"
|
||
|
|
||
|
|
||
|
static uint8_t lastb=0xff;
|
||
|
static uint8_t hist=0x00;
|
||
|
|
||
|
int8_t rotary_encoder_stat(uint8_t b)
|
||
|
{
|
||
|
if (b==0x00)
|
||
|
return 0;
|
||
|
if (b==lastb)
|
||
|
return 0;
|
||
|
|
||
|
lastb=b;
|
||
|
hist = (hist << 2) | b;
|
||
|
switch (hist){
|
||
|
case 0b11011011:
|
||
|
return 1;
|
||
|
case 0b11100111:
|
||
|
return -1;
|
||
|
default:
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
}
|