Цитата(DVF @ Jul 25 2012, 15:45)

Почему в данной ситуации получаю предупреждение: Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement?
Код
#pragma vector = TIMER1_COMPA_vect
__interrupt void TIMER1_COMPA(void)
{
unsigned short data = (unsigned short)( (PIND & 0xF3) | ((PINB & 0x06)<<1) )
}
Потому что в правой части выражения две volatile-переменных: PIND и PINB.
Можете заменить:
Код
unsigned char pind=PIND, pinb=PINB;
unsigned short data = (unsigned short)( (pind & 0xF3) | ((pinb & 0x06)<<1) );
и предупреждение исчезнет.