Я, похоже, запарю сегодня окончательно всех. Ну хотя бы не буду плодить дополнительную тему.
Смотрим действия компилятора по команде:
Код
LATB <<= 1;
В дизассемблере получаем:
Код
BCF 0xfd8, 0, ACCESS
RLCF 0xf8a, F, ACCESS
Мне бы надо сделать так, чтобы компилятор не делал сброс бита C. На СИ, как я понимаю, такое невозможно. Поправьте, если ошибаюсь.
Выход, вроде как очевидный - сделать ассемблерную вставку:
Код
asm("rlcf _LATB,f");
Результат в дизассемблере плачевный:
Код
RLCF 0x8a, F, BANKED
А на:
asm("rlcf _LATB,f,ACCESS");
компилятор ругается. Ээээ.... В чем дело?
Соответственно получаем нерабочий код, надо перед ним делать
Код
BSR |= 0x0f;
, вручну банк переключать....
Быть. torizin-liteha@yandex.ru