Мегаобучалка Главная | О нас | Обратная связь


Регистры общего назначения



2019-10-11 349 Обсуждений (0)
Регистры общего назначения 0.00 из 5.00 0 оценок




Все регистры общего назначения объединены в файл, структура которого показана на рисунке 1.6.

Таблица 1.1 – Дополнительные символические имена индексных регистров

Регистр Символическое имя
R26 XL
R27 ХН
R28 YL
R29 YH
R30 ZL
R31 ZH

Для AT 90 S 1200 определены только два регистра-указателя: R 30 — ZL и R 31 — ZH .

  15                     0
Регистр X 7                0 7             0
    R27($1B) 15 R26($1A) 0
Регистр Y 7                0 7             0
    R29($1D) 15                       R28($1C) 0
Регистр Z 7                0 7             0
  R31($1F) R30($1E)

Рисунок 1.7 – Регистры-указатели X, Y и Z

Как уже было сказано, в микроконтроллерах AVR все 32 РОН непосредственно доступны АЛУ в отличие от микроконтроллеров других фирм, в которых имеется только один такой регистр – рабочий регистр W (аккумулятор). Благодаря этому любой РОН может использоваться во всех командах и как операнд-источник и как операнд-приемник. Исключение составляют лишь пять арифметических и логических команд, выполняющих действия между константой и регистром (SBCI, SUBI, CPI, ANDI, ORI), а также команда загрузки константы в регистр (LDI). Эти команды могут обращаться только ко второй половине регистров (R16...R31). Ряд регистров общего назначения используется в качестве указателей при косвенной адресации памяти данных. В модели AT90S1200 таким регистром является регистр R30 (регистр Z). Поскольку объем адресуемой памяти данных этой модели составляет всего 96 байт, для хранения адреса достаточно одного 8-разрядного регистра. Во всех других моделях для косвенной адресации используются три 16-разрядных регистра (регистры X, Y и Z), каждый из которых получается объединением двух РОН (рисунок 1.7).

Как показано на рисунке 1.6, каждый регистр файла имеет свой собственный адрес в пространстве памяти данных (кроме AT90S1200). Поэтому к ним можно обращаться как к памяти, несмотря на то, что физически эти регистры не являются ячейками ОЗУ.

 

Регистры ввода/вывода

Регистры ввода/вывода располагаются в так называемом пространстве ввода/вывода размером 64 байта. Все РВВ можно разделить на две группы: служебные регистры микроконтроллера и регистры, относящиеся к периферийным устройствам (в т.ч. порты ввода/вывода). Размер каждого регистра – 8 разрядов.

Распределение адресов пространства ввода/вывода зависит от конкретной модели микроконтроллера, т.к. разные модели имеют различный состав периферийных устройств и, соответственно, разное количество регистров. Размещение РВВ в адресном пространстве ввода/вывода для всех моделей семейства приведено в  таблицах П.1-П.4.

Общее замечание к таблицам: если адрес в таблице не указан, это означает, что для данной модели он зарезервирован, и запись по этому адресу запрещена (крайне не рекомендуется).

К любому регистру ввода/вывода можно обратиться с помощью команд IN и OUT, выполняющих пересылку данных между одним из 32 РОН и пространством ввода/вывода. Кроме того, имеются 4 команды поразрядного доступа, использующие в качестве операндов регистры ввода/вывода: команды установки/сброса отдельного разряда (SBI и CBI) и команды проверки состояния отдельного разряда (SBIS и SBIC). Обратите внимание, что эти команды могут обращаться только к 1-й половине регистров ввода/вывода (адреса $00...$1F).

Так же, как и к РОН, к регистрам ввода/вывода можно обращаться двумя способами: как собственно к регистрам (с помощью команд IN и OUT) и как к ячейкам ОЗУ (кроме AT90S1200). В первом случае используются адреса РВВ, принадлежащие пространству ввода/вывода ($00...$3F). Во втором случае адрес РВВ необходимо увеличить на $20 (в таблицах при указании адресов РВВ в скобках указываются соответствующие им адреса ячеек ОЗУ).

Все служебные регистры перечислены в таблице 1.2, знак "+" в таблице означает, что тот или иной регистр присутствует в данной модели микроконтроллера. Обратите внимание, что адреса служебных регистров не меняются от модели к модели (т.е. регистр SREG всегда расположен по адресу $3F ($5F), GIMSK — по адресу $ЗВ ($5В) и т.д.).

 

Таблица 1.2 – Служебные регистры микроконтроллеров семейства Classic

  Название регистра     Адрес AT90S1200 AT90S2313 AT90S/LS2323 AT90S/LS2343 AT90S/LS2333 AT90S/LS4433 AT90S/LS4434 AT90S/LS8535 AT90S4414 AT90S8515 AT90C8534
SREG $3F ($5F) + + + + + + + + + + +
SPH $3E ($5E)             + + + + +
SPL $3D ($5D)   + + + + + + + + + +
G1MSK $3B ($5B) + + + + + + + + + + +
GIFR $3A ($5A)   + + + + + + + + + +
TIMSK $39 ($59) + + + + + + + + + + +
TIFR $38 ($58) + + + + + + + + + + +
MCUCR $35 ($55) + + + + + + + + + + +
MCUSR $34 ($54)     + +     + +      

1.6.8.3 Регистр состояния SREG

Регистр состояния располагается по адресу $3F ($5F). Этот регистр представляет собой набор флагов, показывающих текущее состояние микроконтроллера. Эти флаги автоматически устанавливаются в "1" или в "0" при наступлении определенных событий (в соответствии с результатом выполнения команд). Все разряды этого регистра доступны как для чтения, так и для записи в любой момент времени. После сброса микроконтроллера все разряды регистра сбрасываются в "0". Содержимое этого регистра показано на рисунке 1.8, а его описание приведено в таблице 1.3.

  7 6 5 4 3 2 1 0
  1 Т Н S V N Z С
Чтение(R)/Запись(W) Начальное значение R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0 R/W 0

 

 

Рисунок 1.8 – Регистр состояния SREG

 

Таблица 1.3 – Регистр состояния SREG

Разряд Название Описание
7 I Общее разрешение прерываний. Для разрешения прерываний этот флаг должен быть установлен в "1". Разрешение/запрещение отдельных прерываний производится установкой или сбросом соответствующих разрядов регистров масок прерываний. Если флаг сброшен (0), то прерывания запрещены независимо от состояния этих регистров. Флаг сбрасывается аппаратно после входа в прерывание и восстанавливается командой RETI для разрешения обработки следующих прерываний
6 Т Хранение копируемого бита. Этот разряд регистра используется в качестве источника или приемника командами копирования битов BLD ( Bit LoaD ) и BST ( Bit STore ). Заданный разряд любого РОН может быть скопирован в этот разряд командой BST или установлен в соответствии с содержимым данного разряда командой BLD
5 Н Флаг половинного переноса. Этот флаг устанавливается в "1", если имел место перенос из младшей половины байта (из 3-го разряда в 4-й) или заем из старшей половины байта при выполнении некоторых арифметических операций
4 S Флаг знака. Этот флаг равен результату операции "Исключающее ИЛИ" ( XOR ) между флагами N (отрицательный результат) и V (переполнение числа в дополнительном коде) Соответственно этот флаг устанавливается в "1", если результат выполнения арифметической операции меньше нуля
3 V Флаг переполнения дополнительного кода. Этот флаг устанавливается в "1" при переполнении разрядной сетки знакового результата. Используется при работе со знаковыми числами (представленными в дополнительном коде). Более подробно см. описание системы команд
2 N Флаг отрицательного значения. Этот флаг устанавливается в "1", если старший разряд (7-й) результата операции равен "1". В противном случае флаг равен "0"
1 Z Флаг нуля. Этот флаг устанавливается в "1", если результат выполнения операции равен нулю
0 С Флаг переноса. Этот флаг устанавливается в "1", если в результате выполнения операции произошел выход за границы байта

SP (указатель стека)

В моделях, имеющих объем ОЗУ до 128 байт (адресное пространство ОЗУ – $000...$ODF), указатель стека реализован на одном регистре SPL, расположенном по адресу $3D ($5D). В остальных моделях указатель стека реализован на паре регистров SPH:SPL, расположенных по адресам $ЗЕ ($5Е) и $3D ($5D) соответственно. Причем для всех моделей, кроме АТ9084414 и AT90S8515, в регистре SPH (старший байт указателя стека) используются только 1 (объем ОЗУ – 256 байт) или 2 (объем ОЗУ – 512 байт) младших разряда, остальные разряды доступны только для чтения и содержат "0". В моделях AT90S4414 и AT90S8515 оба регистра SPH:SPL используются полностью, т.к. максимальный объем памяти в этих моделях равен 64 Кбайт. Все используемые разряды регистров доступны как для чтения, так и для записи в любой момент времени. После сброса микроконтроллера содержимое регистров равно 0, поэтому в самом начале программы указатель стека необходимо проинициализировать каким-либо значением (как правило, это наибольший для конкретного микроконтроллера адрес памяти данных).



2019-10-11 349 Обсуждений (0)
Регистры общего назначения 0.00 из 5.00 0 оценок









Обсуждение в статье: Регистры общего назначения

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (349)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)