Цитата(Lucky:) @ Feb 15 2007, 21:08)

что означает такая ошибка?
Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement
bufSOMI[bufSOMICnt] = bt;
В выражении используются две переменные с квалификатором volatile. Компилятор не имеет представления, в каком порядке их надо считывать (писать). О чем и сообщает.
Цитата(Lucky:) @ Feb 15 2007, 21:08)

чем она может вылезти?
В данном выражении ничем, но лучше ведь чтобы он не ругался, правда ;) ?
Заведите временную переменную, в которую положите одну из volatile. Компилятор будет знать, что к ней надо обратиться первой и успокоится:
Код
char Tmp = bt;
bufSOMI[bufSOMICnt] = Tmp; // !!! no Warnings
Хотя непонятно зачем в том месте bt объявлен как volatile.
Код
#pragma vector=USART0RX_VECTOR
__interrupt void SPI0_rx (void)
{
char bt = RXBUF0;
akn = bufSOMI[bufSOMICnt] = bt;
}