[an error occurred while processing this directive]
|
См выше пример от _Bill - аналогично будет работать.
По сути, эти SFR_IO похожи на предложенное.
Макросы SFR_IO от MEM_IO отличаются тем, что добавляют "подставку" в 32 (пропуск регистров) и приводят одреса портов к адресам памяти.
Если ты передаёшь указатель, то во время выполнения компилятор никаких проверок не делает и ко всем портам будет обращаться через st/ld.
А если применяешь PORTA/PORTE напрямую, то оптимизатор смотрит на значение адреса и, если он попадает в зону IO-портов, вычитает назад подставку и ставит команды in/out, где можно - sbi/cbi/sbis/sbic