Главная »
Периодика »
Безопасность0 ...
23242526272829 ...
159Регистр состояния
Микроконтроллеры PIC 17Схх имеют два регистра состояния: ALUSTA, и CPUSTA. Первый определяет состояние арифметико-логического устройства, второй - состояния процессора (табл. 5.12,5.13).
Таблица 5.12
Назначение разрядов региара ALUSTA
ГТйт" | Функция |
| Выбор режима для региара FSR1: 1х - содержимое региара FSRI не изменяется после осуществления доступа; 01 - содержимое регистра FSR1 инкрементируется, 00 - содержимое регистра FSR1 декрементируется |
""5-4 | Выбор режима для региара FSRO. 1х - содержимое регистра FSRO не изменяется после осуществления доступа; 01 - содержимое региара FSRO инкрементируется, 00 - содержимое регистра FSRO декрементируется |
| 0V - флаг переполнения при выполнении арифметических операций |
| 1 - флаг нуля при выполнении арифметических и логических операций |
| ОС - флаг десятичного (цифрового поразрядного) переноса при выполнении арифметических операций |
| С - флаг переноса при выполнении арифметических операций |
Таблица 5.13 Назначение разрядов региара CPUSTA, использующегося в микроконтроллерах PIC 17Схх |
| Функция |
| Не используются |
| STKAV - флаг «стек не полон» |
| GLINTD - бит глобального запрета на прерывания |
| ТО - флаг аорожевого таймера, уаанавливается после подачи напряжения питания (Power, up) или исполнения команды clrwdt; обнуляется при срабатывании аорожевого таймера |
| Р0 - флаг дежурного режима (SLEEP - пониженного энергопотребления); уаанавливается после подачи напряжения питания (Power up) или исполнения команды clrwdt, обнуляется после исполнения команды sleep |
| POR - флаг сброса микроконтроллера при включении питания; обнуляется после подачи напряжения питания (Power up); используется не во всех микроконтроллерах PIC 17Схх |
| ВОР - флаг сброса микроконтроллера при понижении напряжения питания; обнуляется после сброса при понижении напряжения питания (Brown out); используется не во всех микроконтроллерах PIC 17Схх |
Счетчик команд
Процессор микроконтроллеров PIC 17Схх способен адресовать 64К 16-разрядных тманЭкъгх сдое программной памяти. Эта программная 1амять Может являться компонентом самой микросхемы или быть
внешней. Для адресации программной памяти необходим 16-ра:!-рядный адрес, который формируется с помощью регистров PCL и PCLATH, причем порядок формирования адреса остается тем же самым, как у микроконтроллеров младшего и среднего подсемейств. Структурная схема программного счетчика, который используется в микроконтроллерах PIC 17Схх, приведена на рис. 5.7.
Адрес команды
pclath
Инкрементирование счетчика команд
Мультиплексор
"ЗвТ- I
Счетчик команд
LUnna данных
16-уровневый стек
Рис. 5.7
Структурная схема счетчика команд микроконтроллеров PIC 17Схх
Следует отметить, что структурная схема, показанная на рис. 5.8. отличается от структурной схемы программного счетчика для микроконтроллеров среднего подсемейства по крайней мере в одном существенном аспекте: при исполнении команд goto и call старите пять битов соответствующей команды заменяют младшие пять битов регистра PCLATH. В результате после исполнения команды goto нли call содержимое регистра PCLATH изменяется в соответствии с текущим адресом.
Выполнение прерываний
Микроконтроллеры PIC l7Cxx используют четыре различных адреса векторов прерывания, которые имеют заданные приоритеты и инициируются различными компонентами микроконтроллероч (табл. 5.14, 5.15).
Приоритет | Адрес вектора прерывания | Источник прерывания |
Высокий | 0x0008 | Внешнее прерывание от вывода PA0/INT |
| 0x00010 | Прерывание от таймера TMRO |
| 0x00018 | Внешнее прерывание от вывода Т0СК1 |
Низкий | 0x00020 | Прерывание от периферийных узлов |
Таблица 5.15
Назначение и функции региара INTSTA микроконтроллеров PIC 17Схх
| Функция |
| PEIF - устанавливается при задержке прерывания, инициированного периферийным устройством |
| T0CKIF - флаг внешнего прерывания от вывода HAI/TOCKI; аппаратное стирание при обработке прерывания с вектором 0x0018 |
| TOIF - флаг переполнения счетчика таймера тино; аппаратное стирание при обработке прерывания с вектором ОхООЮ |
| INTF - флаг внешнего прерывание от вывода RAO/INT; аппаратное стирание при обработке прерывания с вектором 0x0008 |
| PEIE - бит разрешения прерываний от периферийных устройств |
| T0CKIE - бит разрешения внешних прерываний от вывода RA1/T0CKI |
1 | TOIE - бит разрешения прерываний от таймера ТМЯО |
| INTE - бит разрешения внешних прерываний от вывода RA0/INT |
Основные компоненты программы обработки прерываний
Ниже приводится базовый код программы обработки прерываний для микроконтроллеров PIC 17Схх:
.org ?? ; Вектор (адрес), соответствующий
источнику.
Сохранение регистров контекста.
Задание страницы 0.
Программа обработки прерывания.
Восстановление контекста.
movpf | ALUSTA, alusta |
movpf | WREG, w |
movpf | BSR, bsr |
movpf | PCLATH, pclath |
clrf | PCLATH |
movfp | pclath, PCLATH |
movfp | bsr, BSR |
movf | w, WREG |
mo,vf p | alusta, ALUSTA |
retfie | |
0 ...
23242526272829 ...
159