Тема: AVR
Показать сообщение отдельно
Старый 30.10.2013, 16:49   #40
Said
 
Said
 
Адрес: Днiпро
Возраст: 47
Сообщений: 1,677
Машина: 1102 1,1л. 93г.в., СПИРТ+МПСЗv1+БК2.5S+ЭБН
Длина: 8740мкм
Диаметр: 31мм
Отправить сообщение для Said с помощью ICQ
По умолчанию

Но в таком виде код не пройдет компиляцию, ибо ошибок тьма.
И, если GetEncoder разовая функция, то ее нет смысла оформлять отдельной процедурой.
В остальном направление мысли верно.
Ну вот как-то так:

#define com1 0b00001011
#define com2 0b00001010
#define com3 0b00001110
#define com4 0b00000000
#define com6 0b00001000
#define com7 0b00001001


char GetEncoder(void)
{
if (PORTB==com1) PORTD=0b00000001;
else if PORTB==com2 PORTD=0b00000010;
else if (PORTB==com3) PORTD=0b00000100;
else if (PORTB==com4) PORTD=0b00001000;
else if (PORTB==com6) PORTD=0b00100000;
else if (PORTB==com7) PORTD=0b01000000;
else return 2;
return 0;
}

int main(void) // главная рутина
{
//.........какой-то код............

while (GetEncoder()==0) _delay_ms(100);
//или
//while (GetEncoder()>0) _delay_ms(100);
//зависит от желаемого результата

//.........какой-то код............
}
__________________

Последний раз редактировалось Said; 30.10.2013 в 17:21.
Said вне форума   Ответить с цитированием