Регистры ввода/вывода
Все регистры ввода/вывода условно можно разделить на две группы — служебные регистры микроконтроллера и регистры, относящиеся к конкретным периферийным устройствам (в т. ч. Регистры портов ввода/вывода) располагаются в так называемом пространстве ввода/вывода размером 64 байта, кроме того, имеется пространство дополнительных регистров ввода/вывода размером 160 байт. Введение дополнительных РВВ связано с тем, что для поддержки всех периферийных устройств обычных 64-х РВВ недостаточно.. Размещение РВВ в пространстве ввода/вывода приведено в Табл.1.1. В таблицах и далее в книге при указании адресов РВВ в скобках указываются соответствующие им адреса ячеек ОЗУ. Соответственно, если адрес регистра указывается только в скобках, этот регистр расположен в пространстве дополнительных РВВ. Если адрес в таблице не указан, это означает, что он резервирован (для совместимости с будущими моделями) и запись по этому адресу запрещена.
Таблица 1.1 Регистры ввода/вывода микроконтроллера Atmega 128
Продолжение таблицы 1.1
Продолжение таблицы 1.1
К РВВ, расположенным в основном пространстве ввода/вывода, можно напрямую обратиться с помощью команд IN и OUT, выполняющих пересылку данных между одним из 32-х РОН и пространством ввода/вывода. В системе команд имеется также четыре команды поразрядного доступа, использующие в качестве операндов регистры ввода/вывода: команды установки/сброса отдельного бита (SBI и CBI) и команды проверки состояния отдельного бита (SBIS и SBIC). К сожалению, эти команды могут обращаться только к 1-й половине основных регистров ввода/вывода (адреса $00…$1F). Помимо непосредственной адресации (с помощью команд IN и OUT), к РВВ можно обращаться и как к ячейкам ОЗУ с помощью соответствующих команд ST/SD/SDD и LD/LDS/LDD (для дополнительных РВВ этот способ является единственно возможным).В первом случае используются адреса РВВ, принадлежащие основному пространству ввода/вывода ($00…$3F). Во втором случае адрес РВВ необходимо увеличить на $20. Среди всех РВВ есть один регистр, используемый наиболее часто в процессе выполнения программ. Этим регистром является регистр состояния SREG. Он располагается по адресу $3F ($5F) и содержит набор флагов, показывающих текущее состояние микроконтроллера. Большинство флагов автоматически устанавливаются в «1» или сбрасываются в «0» при наступлении определенных событий (в соответствии с результатом выполнения команд). Все разряды этого регистра доступны как для чтения, так и для записи; после сброса микроконтроллера все разряды регистра сбрасываются в «0». Формат этого регистра показан на Рис.1.8, а его описание приведено в Табл.1.2. Остальные РВВ будут подробно описаны в соответствующих разделах книги.
Рис.1.8.
Таблица1.2. Разряды регистра состояния SREG
|