Цитата(MaxiMuz @ Mar 28 2012, 00:27)

По поводу
Код
while(GetSen() != S_DOWN);
может быть не совсем то что у вас, покажу на примере:
Может уже хватит свои косяки выдавать за кривизну компилятора? У вас просто нет квалификатора volatile перед переменной flag_ms.
Цитата(e-leks @ Mar 27 2012, 22:55)

Если возможно приведите пример Вашего кода касаюшийся обращения к порту.
PORTA = 12;

Цитата(e-leks @ Mar 27 2012, 22:55)

В теле main() запись типа PORTA выглядит как то по-детски? Нет?
Нет, не по-детски. Ещё раз повторю - если надо записать что-то в порт, то надо просто взять и записать. Все другие варианты - это усложнение. Усложнять нужно только по необходимости, например, в случае двух разных аппаратных платформ.
Цитата(e-leks @ Mar 27 2012, 22:55)

Можно микропример?
Ну типа то же самое, что с макросами, но с функциями:
camen1.h:
Код
inline void motor_up() { PORTA |= MOTOR_PIN; }
inline void motor_down() { PORTA &= ~MOTOR_PIN; }
camen2.h:
Код
inline void motor_up() { spi_write(spi_read() | MOTOR_PIN); }
inline void motor_down() { spi_write(spi_read() & ~MOTOR_PIN); }
в главном коде:
Код
#ifdef CAMEN1
#include "camen1.h"
#else
#include "camen2.h"
#endif
...
motor_up();
motor_down();
Если бы я знал, что такое электричество...