Page 185 - 4503
P. 185
У обидвох випадках вміст регістру за адресою h’28’
додається до вмісту робочого регістра. Але у першому
випадку результат додавання розмістився у робочому регістрі
(d = 0), залишаючи незмінним регістр даних. У другому
випадку незмінним залишився вміст W–реґістру (d = 1), а
результат додавання розмістився у регістрі за адресою h’28’.
Більшість команд, як буде видно згодом — це команди з
прямою адресацією, але існують дві застороги щодо цього
типу адресації.
6.4.1 Перша засторога — всього 7 бітів адресації
пам’яті даних.
У коді команд прямої адресації, для власне самої адреси
7
відведено тільки 7 бітів. Тож можна звернутися лише до 2 =
128 комірок пам’яті даних.
З попередніх лекцій відомо, що заради уникнення цього
обмеження у мікроконтролері PIC16F84 передбачений
додатковий 8–й біт. Він розміщений у регістрі спеціального
призначення — STATUS і має назву RP0 (Register Page 0). Отже
завдяки цьому сурогатному біту є можливість удвічі
8
збільшити кількість комірок пам’яті даних, тобто до 2 = 256.
Умовно ці комірки порівно розділені між двома банками. У
інших мікроконтролерів цієї родини, наприклад PIC16F627/8
(вдосконалений PIC16F84 ) замість одного сурогатного біта є
два: RP0 і RP1 (рисунок 6.4). Таким чином, можна звернутися
не до одного банку даних, а аж до чотирьох. Ці біти завжди
набувають нульового значення (гасяться) при будь–якому
скиданні (в тому числі при відключенні мікроконтролера).
Тобто після чергового ввімкнення ми завжди працюємо із
банком 0. Тому програміст повинен належним чином змінити
ці біти, якщо хоче звернутися до котрогось з інших банків.
Наприклад, якщо потрібно скопіювати вміст регістра за
185