Пытаюсь наплодить кое что в иаре под 18F458 и натолкнулся на затык один
В хедере CANCON описан следующим образом:
__SFR_BITS(__nonbanked,CANCON,0xF6F,,WIN0,WIN1,WIN2,ABAT,REQOP0,REQOP1,REQOP2)
Подпрограммка
void SetCANMode( unsigned char Mode )
{
CANCON = Mode;
while ((CANSTAT & 0xE0) != Mode);
}
компилится так:
149: void SetCANMode( unsigned char Mode )
150: {
151: CANCON = Mode;
003FE6 C200 MOVFF 0x200, 0x6f <<<<<< засада тут
003FE8 F06F NOP
152: while ((CANSTAT & 0xE0) != Mode);
003FEA 506E MOVF 0xf6e, W, ACCESS
003FEC 0BE0 ANDLW 0xe0
003FEE 0102 MOVLB 0x2
003FF0 1900 XORWF 0, W, BANKED
003FF2 E1FB BNZ 0x3fea
153: }
003FF4 0012 RETURN 0
во всех вариантах оптимизации вместо адреса 0xF6F она, зараза, пишет в 0x6F. Как
результат - мы виснем тут навеки.
Это мой первый опыт с иаром пичным, посему я в раздумьях, то ли букварь читать, то
ли иар на другую версию попробовать махнуть, то ли волосья выщипывать... ;-)...
Что скажут гуру?