Чижик 0 28 марта, 2022 Опубликовано 28 марта, 2022 (изменено) · Жалоба Битовые инструкции, например BSF PORTA,3 BCF PORTB,5 выполняются в режиме Read-Modify-Write над регистром с абсолютной адресацией PORTA, PORTB. Есть ли возможность (или хак) исполнить аналогичное в режиме косвенной (inderect) адресации? char adr = 0x0C; //адрес PORT A в нулевом банке; //аналог BSF PORTA,3 di(); FSR0L = addr; FSR0H = 0; INDF0 = INDIF0 | 0x04; //аналог BSF PORTA,3 ei(); //аналог BCF PORTA,5 di(); FSR0L = addr; FSR0H = 0; INDF0 = INDIF0 & (~0x10); //аналог BCF PORTA,5 ei(); Для регистров общего назначения (памяти) такое годится, а специальный регистр может в момент modify поменять свое значение. Это может потребоваться когда часть битов регистра используются USART или/и I2C и не должны быть затронуты операцией записи (как мне кажется). Прав ли я? Спасибо. Изменено 28 марта, 2022 пользователем Чижик Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 9 апреля, 2022 Опубликовано 9 апреля, 2022 · Жалоба On 3/28/2022 at 7:38 PM, Чижик said: Есть ли возможность (или хак) исполнить аналогичное в режиме косвенной (inderect) адресации? Нет никакой разницы между битовыми инструкциями реальных регистров адресного пространства ОЗУ и виртуальным регистром INDF. Поэтому легко применяйте те же способы понуждения компилятора к генерации битовых инструкций и в случае с косвенной адресацией. bsf INDF, 0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 176 9 апреля, 2022 Опубликовано 9 апреля, 2022 · Жалоба 28.03.2022 в 19:38, Чижик сказал: когда часть битов регистра используются USART или/и I2C Периферия сама по себе и не работает через регистры портов. Если какой-либо контакт корпуса передаётся какой-либо периферии, его работа полностью контролируется ею. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Чижик 0 25 июля, 2022 Опубликовано 25 июля, 2022 · Жалоба On 4/9/2022 at 2:12 PM, my504 said: Нет никакой разницы между битовыми инструкциями реальных регистров адресного пространства ОЗУ и виртуальным регистром INDF. bsf INDF, 0 Забавно. Но об этом нигде нет упоминаний и примеров. Здорово. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
my504 2 30 июля, 2022 Опубликовано 30 июля, 2022 · Жалоба On 7/25/2022 at 9:57 PM, Чижик said: Но об этом нигде нет упоминаний Открываем первый попавшийся под руку даташит и читаем: Quote 2.4 Indirect Addressing, INDF and FSR Registers The INDF register is not a physical register. Addressing the INDF register will cause indirect addressing. Indirect addressing is possible by using the INDF register. Any instruction using the INDF register actually accesses data pointed to by the File Select Register (FSR). Какие нужны дополнительные объяснения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться