[an error occurred while processing this directive]
|
#include
// функция задержки на ms миллисекунд
#define DELAY_MS(ms) // определи сам
// линии порта D
#define ENC1_A 3
#define ENC1_B 4
// a, b - номера линий, к которым подключен энкодер (порт D)
// Возвращает 0, если не было изменения
// 1, если ,был шаг в одном направлении
// -1, если в другом
// Вызывать циклически
int8_t encoder_scan(uint8_t a, uint8_t b)
{
int8_t tmp=0;
if(bit_is_set(PIND, a) && bit_is_set(PIND, b)) goto encoder_scan_return;
DELAY_MS(1);
if(bit_is_set(PIND, a) && bit_is_set(PIND, b)) goto encoder_scan_return;
if(bit_is_clear(PIND, a)) tmp=1;
else tmp=-1;
while(bit_is_clear(PIND, a) || bit_is_clear(PIND, b));
DELAY_MS(1);
encoder_scan_return: return tmp;
}
E-mail: info@telesys.ru