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

4     У деяких мікроконтролерах ці регістри загального призначення відображається на банк 0.

5     Банк мокне бути не реалізований. Читання за адресою неіснуючого ОЗП буде давати результат 00h.

6.     Регістри загального призначення можуть бути розташовані в області регістрів спеціального призначення.

Непряма адресація, регістри INDF й FSR

Непряма адресація  - такий режим адресації регістрів, при якому в команді не вказується адреса пам'яті даних. Регістр спеціального призначення FSR доступний для запису/читання, використається як покажчик адреси в пам'яті даних. Цей режим адресації може бути корисний при звертанні до таблиць даних

На малюнку показана операція непрямої адресації (запис значення в регістр пам'яті даних з адресою, зазначеній у регістрі FSR).

Для виконання непрямої адресації необхідно звернутися до регістра INDF. Звертання до регістра INDF фактично викличе дія з регістром, адреса якого зазначений в FSR. Непряме читання регістра INDF (FSR=0) дасть результат 00h. Непрямий запис у регістр INDF не викличе ніяких дій (викликає впливу на прапори АЛП в регістрі STATUS). 9-й біт непрямої адреси IRP зберігається в регістрі STATUS <7>. Приклад 9-розрядної непрямої адресації показаний на малюнку

Механізм непрямої адресації


Введення

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

Для більшості каналів портів вводу/виводу регістри TPIS управляють напрямком даних на виводі. Біт TRIS<x> управляє напрямком даних на каналі PORT <x>.   Якщо біт TRIS установлений в 1, то відповідний канал порту вводу/виводу працює як вхід, а якщо біт TRIS скинутий в 0, то канал вводу/виводу працює як вихід. Простий спосіб запам'ятати напрямок каналу вводу/виводу й стан бітів регістрів TRIS '1' - нагадує 'In' (вводу): '0' - нагадує 'Out' (вихід)

Регістр PORT - засувка даних, виведених на порт вводу/виводу. При читанні регістра PORT повертається стан виводів порту. Це означає, що необхідна деяка обережність при виконанні команд зі структурою "читання - модифікація - запис" для зміни логічного рівня на виходах порту.

На малюнку показана типова структурна схема одного каналу порту вводу/виводу. На цьому малюнку не показана ситуація підключення додаткового периферійного модуля до каналу порту. Читання регістра PORT повертає стан на виводах порту, а запис виконується у вихідну засувку. Зверніть увагу на операції "читання - модифікація - запис" (наприклад BSF й BCF). Спочатку відбувається читання стану виводів порту, зміна отриманого значення, а потім виконується запис у вихідну засувку порту.

6.1 структурна схема одного каналу порту вводу/виводу

Коли периферійний модуль підключений до виводу порту, функціональні можливості каналу торта вводу/виводу можуть змінитися відповідно до вимог периферійного модуля. Наприклад модуль АЦП або LCD, які набудовують відповідні канали портів вводу/виводу для роботи з периферійним модулем при зборі мікро контролера. У випадку з АЦП це може запобігти підвищеному енергоспоживанню при подачі аналогові рівнів на входи мікроконтролера після скидання.

При включенні деякі периферійних модулів скасовується дія бітів TRIS. Тому варто уникати команд "читання - модифікація - запис" з регістрами TRIS (наприклад BSF. BCF. XORWF і т.д).

Виводи портів можуть бути мультипліцировани з аналоговими входами й входом VREF. Для кожного виводу необхідно визначити режим його роботи (аналоговий вхід або цифровий канал вводу/виводу) настроюванням керуючих бітів у регістрі ADCON1 (регістр керування АЦП). Коли вивід працює як аналоговий вхід, то читання стану цього виводу буде давати результат «0».