Микроконтроллеры PIC: организация памяти, программы, адресация


Микроконтроллеры РICМикроконтроллеры (МК) семейства PIC16C5X построены по гарвардской архи­тектуре, в которой память программ и память данных разделены и имеют соб­ственные адресные пространства.

 

Память программ.

Максимальный объем памяти программ MК PIC16C5X со­ставляет 2048 ячеек по 12 бит. Память программ разбивается на страницы, каж­дая из которых содержит 512 слов (ячеек). Ранние модели МК имеют всего 512 ячеек памяти программ, относящихся к нулевой странице адресного про­странства (рис.6.3.1).

Поэтому разрядность счетчика команд PC равна 9 (А8–А0). В поздних моделях память программ содержит 4 страницы.

рис.<br> 6.<br>3.<br>1

Адресация памяти программ

 

Прямая адресация памяти возможна только в пределах одной страницы, при этом:
● команда GOTO k (0 ≤ k ≤ 511 ) позволяет обратиться по всем адресам страни­цы (рис.6.3.2, а);
● команда CALL k (0 ≤ k ≤ 255) и команды, изменяющие содержимое счетчика команд PC, обеспечивают доступ к младшим адресам (0–7) страницы, 8–й бит сбрасывается (рис.6.3.2, б).

рис.<br> 6.<br>3.<br>2 Для доступа к памяти свыше 512 ячеек используется, указатель страницы, представляющий собой биты 6 (РА1) и 5 (РА0) регистра состояния (признаков) STATUS процессора (рис.6.2.1).

Указатель переключается под управлением про­граммы и реализует по сути дела относительную адресацию.


Память данных

В регистровой памяти МК выделяются две группы регистров:
● специальные регистры,
к которым относятся:
• адресуемые
8–разряные регистры (рис.6.3.3, а): псевдорегистр (INDF), ре­гистр таймера/счетчика реального времени (TMR0), регистр счетчика ко­манд (А10, А9, А8, PCL), регистр состояния (STATUS), регистр косвенной адресации (FSR) и регистры ввода/вывода (PORTA, PORTA, PORTC);
• рабочий регистр W, регистр состояния OPTION, регистры управления пор­тами TRISA, TRISB, TRISC (рис.6.3.3, б), доступ к которым осуществляется с помощью специальных команд;
• регистр конфигурации CONFIG, не имеющий доступа.
Информация (вы­бранный тип генератора, разрешение/запрещение сторожевого таймера и включение/выключение бита защиты от считывания программного кода) в этот регистр заносится на этапе программирования микроконтроллера;
● регистры общего назначения,
которые используются программой для хране­ния переменных по усмотрению пользователя.
Эти 8–разрядные регистры, разделенные на 4 банка по 16 регистров в каждом, и составляют основной объем памяти данных (рис.6.2.2).

Адресное пространство памяти данных объединяет регистры специаль­ных функций и регистры общего назначения.
Специальные регистры и часть ре­гистров общего назначения с адресами 00h.

1Fh отнесены к банку 0.
Поэтому он содержит 32 8–разрядных регистра, в то время как остальных три банка — по 16 регистров.
Для обращения к регистрам в банках 1, 2, 3 выделены соответственно адреса ЗОh.ЗFh, 50h.5Fh, 70h.7Fh.

Таким образом, адресное пространство па­мяти данных имеет «дыры».
Отметим, что каждый бит любого адресуемого реги­стра доступен 4 битным командам.

Способы адресации

Для обращения к памяти данных (специальным ре­гистрам и регистрам общего назначения) используется косвенная и прямая (от­носительная) адресация (рис.6.3.4).

рис.<br> 6.<br>3.<br>4 Косвенная адресация реализуется с помощью псевдорегистра INDF (физически не существующего, но имеющего адрес 00h) и регистра косвенной адресации FSR (рис.6.3.3, а).
Псевдорегистр INDF служит указателем регистра FSR, в кото­ром находится адрес запрашиваемого регистра данных: биты 6, 5 задают номер банка (00 — банк 0, 01 — банк 1,10 — банк 2, 11 — банк 3), биты 4.

0 использу­ются для адресации регистра данных внутри банка, при этом:
● бит 4 переключает адрес между 16–ю регистрами первой и второй групп;
● биты 3.

0 адресуют регистры в пределах каждой группы.
Так как в банках 1, 2 и 3 отсутствуют регистры по 16 младшим адресам, при обращении по этим адресам реализуется доступ только к группе регистров банка О с младшими адресами 00h.

Например, при обращении по адресам 23h, 43h, 63h обеспечивается доступ к регистру STATUS, имеющему адрес 03h.
В этих случаях бит 4 регистра FSR автоматически устанавливается в 0, а состояние би­тов 6 и 5 FSR игнорируется.
При обращении по старшим адресам 10h.

1Fh биты 6 и 5 FSR задают номер банка, а бит 4 устанавливается в единичное состояние (рис.6.3.4).
Прямая адресация обеспечивает доступ только к регистрам банка 0 с помощью младших разрядов кода команд (рис.6.3.4), поступающих по 5–битной шине из дешифратора команд (рис.6.2.1).
Поскольку биты 6 и 5 псевдорегистра FSR дей­ствуют постоянно, по сути дела при обращении к страницам 1, 2, 3 осуществляет­ся способ относительной адресации.


Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: