Основні особливості архітектури мікроконтролерів PlCmicro. Організація пам'яті програм. Непряма адресація, регістри INDF й FSR, страница 4

У будь-якому мікроконтролері PICmicro скидання приведе до очищення лічильника команд (PC), установлюючи адресу 0h. Адреса 0000h називається "адреса вектора скидання", т.як буде виконаний перехід по цій адресі при скиданні мікроконтролера. Разом з лічильником команд (PC) очищається регістр PCLATH, установлюючи робочу сторінку пам'яті програм 0.

Вектор переривань

Коли виникає дозволене переривання, в лічильник команд PC записується адреса 0004h  "адреc вектора переривань", при цьому значення регістра PCLATH не змінюється.

Якщо в підпрограмі обробки переривань потрібно виконувати команди розгалуження, то необхідно попередньо записати в регістр PCLATH значення, що визначає потрібну сторінку пам'яті програм Перш ніж регістр PCLATH буде змінене, його значення повинне бути збережене в іншому регістрі пам'яті даних, а потім відновлено перед виходом з підпрограми обробки переривань.

Калібрована інформація

У деяких типах мікроконтролерів, під час заключного заводського випробування в пам'яті програм зберігається калібрована інформація. Використання каліброваної інформації дозволяє додатку одержувати найкращі результати роботи. Як правило, калібрована інформація зберігається наприкінці пам'яті програм набором інструкцій RETLW.

Лічильник команд PC

13-розрядний регістр лічильника команд PC вказує адреса обираної команди для виконання. Молодший байт лічильника програм PCL доступний для читання й запису. Старший байт РСН, що містить <12:8> біти лічильника команд PC, не доступний для читання й запису. Всі операції з регістром РСН відбуваються через додатковий регістр PCLATH

Безпосередній запис значень у регістр PCL(PCLATH<4:0>-PCH )

Зміна значення PC при виконанні інструкції GOTO (PCLATH<4:0>-PCH)

Зміна значення РС  при виконанні переходу до програми CALL (PCLATH<4:0>-PCH ) причому старе значення РС  зберігається у вершині стека.

Повернення із програми(RETURN, RETFIE або RETLW), лічильник команд завантажується значенням з вершини стека.

Перехід, що обчислює

Перехід, що обчислює, може бути виконаний командою приросту до регістра PCL (наприклад, ADDWF PCL). При виконанні переходу, що обчислює, варто піклуватися про те, щоб значення PCL не перетнуло границю блоку пам'яті (кожен блок 256 байт)

Апаратний стек

Стек підтримує до 8 рівнів вкладеності підпрограм користувача, включаючи обробку переривань. У стеці зберігається адреса повернення в основну програму.

У мікроконтролерах середнього сімейства PlCmicro реалізований 8-рівневий 13-розрядний апаратний стек. Стек не має відображення на пам'ять програм і пам'ять даних не можна записати або прочитати дані зі стека. Значення лічильника команд заноситься у вершину стека при виконанні інструкцій переходу на підпрограму (CALL) або обробку переривань. Читання зі стека й запис у лічильник команд PC відбувається при виконанні інструкцій повернення з підпрограми або обробки переривань (RETURN, RETLW, RETFIE). При цьому значення регістра PCLATH не змінюється.

Після 8 записів у стек, дев'ятий запис запишеться на місце першої, а десятий запис замінить другу й так далі. Дивитеся приклад на малюнку

Сторінки пам'яті програм

Команди переходів (CALL, GOTO) у мікроконтролерах середнього сімейства PICmicro мають 11-розрядне топа для вказівки адреси що дозволяє безпосередньо адресувати 2Кслов пам'яті програм. Деякі мікроконтролери мають пам'ять програм більше 2Кслов. Для адресації верхніх сторінок пам'яті програм використаються 2 біти в регістрі PCLATH <4:3>. Перед виконанням команди переходу (CALL або GOTO) необхідно запрограмувати біти регістра PCLATH <4:3> для адресації необхідної сторінки.

При виконанні інструкцій повернення з підпрограми 13-розрядне значення для лічильника програм PC береться з вершини стека тому маніпуляція бітами регістра PCLATH <3:4> не потрібно.


Організація пам'яті даних

Пам'ять даних поділяється на регістри двох типів

•      Регістри спеціального призначення (SFR), управляють роботою мікроконтролера,

•      Регістри загального призначення (GPR), для зберігання дані програми