Добавлю ещё один трюк, позаимствованный у Атмеловских АРМов. Регистры, в которых требуется работа с отдельными битами, на шине представляются парой адресов. Запись 1 в соответствующем разряде первого регистра устанавливает бит, запись нуля - никак не действует. Запись 1 во второй регистр сбрасывает этот бит, ноль - ничего не меняет. Для программистов такой подход очень удобен, поскольку позволяет атомарно менять биты, не связываясь с запрещением прерываний на время выполнения команд чтения-изменения-записи. Подробности можно посмотреть в любом даташите, например на AT91SAM7S256.
|