Отправлено
КТ 22 октября 2009, г. 20:28
В ответ на: мда, мой код помассивнее будет)(+) отправлено пользователем
nepeLL 22 октября 2009, г. 20:20
#define st1 0b00 // состояние энкодера 1 #define st2 0b10 // состояние энкодера 2 #define st3 0b11 // состояние энкодера 3 #define st4 0b01 // состояние энкодера 4
unsigned char coder, old_coder; // переменная состояния энкодера, и предыдущее состояние энкодера unsigned int encoder; // переменная энкодера
void ENCODER(void) { coder=PORTC&0b00000011; // опрос состояния энкодера switch (coder) { case st1: if (old_coder==st4) ++encoder; // если нынешнее состояние энкодера "1" а предыдущее "4" увеличить энкодер на 1 if (old_coder==st2) --encoder; // если нынешнее состояние энкодера 1 а предыдущее "2" уменшить энкодер на 1 break; case st2: if (old_coder==st1) ++encoder; if (old_coder==st3) --encoder; break; case st3: if (old_coder==st2) ++encoder; if (old_coder==st4) --encoder; break; case st4: if (old_coder==st3) ++encoder; if (old_coder==st1) --encoder; break; } old_coder=coder; // предыдущее состояние равно нынешнему }