Цитата(aesok @ Nov 28 2006, 18:10)

Цитата(singlskv @ Nov 28 2006, 18:25)

Обявлять структуру или массив в которых хранятся адреса портов volatile НЕТ никакой необходимости.
И даже более того вредно.
В чем вред? Пример.
Вам какой результат компиляции нравится больше ?
Вот этот, с volatile при объявлении массива
Код
volatile BYTE PIN_[2]={
(BYTE)(&PINB),
(BYTE)(&PIND)
};
tmp1= *(volatile BYTE *)((WORD)PIN_[0]);
tmp2= *(volatile BYTE *)((WORD)PIN_[0]);
результат компиляции
Код
160: tmp1= *(volatile BYTE *)((WORD)PIN_[0]);
+0000020A: 91800100 LDS R24,0x0100 Load direct from data space
+0000020C: 2FE8 MOV R30,R24 Copy register
+0000020D: 27FF CLR R31 Clear Register
+0000020E: 8180 LDD R24,Z+0 Load indirect with displacement
161: tmp2= *(volatile BYTE *)((WORD)PIN_[0]);
+0000020F: 91800100 LDS R24,0x0100 Load direct from data space
+00000211: 2FE8 MOV R30,R24 Copy register
+00000212: 27FF CLR R31 Clear Register
+00000213: 8180 LDD R24,Z+0 Load indirect with displacement
или этот, без volatile ?
Код
BYTE PIN_[2]={
(BYTE)(&PINB),
(BYTE)(&PIND)
};
tmp1= *(volatile BYTE *)((WORD)PIN_[0]);
tmp2= *(volatile BYTE *)((WORD)PIN_[0]);
результат компиляции
Код
160: tmp1= *(volatile BYTE *)((WORD)PIN_[0]);
+0000020A: 91800100 LDS R24,0x0100 Load direct from data space
+0000020C: 2FE8 MOV R30,R24 Copy register
+0000020D: 27FF CLR R31 Clear Register
+0000020E: 8180 LDD R24,Z+0 Load indirect with displacement
161: tmp2= *(volatile BYTE *)((WORD)PIN_[0]);
+0000020F: 8180 LDD R24,Z+0 Load indirect with displacement