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

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

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

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

Тому розрядність лічильника команд PC дорівнює 9 (А8-А0). У пізніх моделях пам’ять програм містить 4 сторінки.

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

пряма адресація пам’яті можлива тільки в межах однієї сторінки, при цьому: ● команда GOTO k (0 ≤ k ≤ 511) дозволяє звернутися за всіма адресами сторінки (ріс.6.3.2, а); ● команда CALL k (0 ≤ k ≤ 255) та команди, що змінюють вміст лічильника команд PC, забезпечують доступ до молодших адресами (0-7) сторінки, 8-й біт скидається (ріс.6.3.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).

непряма адресація реалізується за допомогою псевдорегістра 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 здійснюється спосіб відносної адресації.

Ссылка на основную публикацию