Основы разработки и программирования микропроцессорных систем автоматического управления на базе контроллеров «Pic16»

Страницы работы

Фрагмент текста работы

Управление записью и считыванием осуществляется через регистр EECON1 (88h). Для дополнительного контроля записи служит регистр EECON2 (89h).

Регистры общего назначения

Регистры общего назначения представляют собой статическое ОЗУ, расположенное по адресам 0Ch-2Fh. Всего в «PIC16F84» можно использовать 36 ячеек ОЗУ.

Специальные регистры W, INTCON, OPTION

К специальным регистрам «PIC16F84» относятся рабочий регистр W, используемый большинством команд в качестве регистра аккумулятора и регистры INTCON и OPTION. Регистр прерываний INTCON (0Bh) служит для управления режимами прерывания и содержит биты разрешения прерываний от различных источников и флаги прерываний. Регистр режима OPTION (81h) служит для задания источников сигнала для предварительного делителя и таймера/счетчика, а также для задания коэффициента деления предварительного делителя, активного фронта сигнала для RTCC и входа прерывания. Кроме того, при помощи регистра OPTION могут быть включены нагрузочные резисторы для разрядов порта B, запрограммированных как входы. Структура регистра OPTION показана в приложении 2.

Конфигурационное слово

Кристалл «PIC16F84» имеет пять битов конфигурации, которые хранятся в EEPROM и устанавливаются на этапе программирования кристалла (приложение 2). Эти биты могут быть запрограммированы (читаются как `0`) или оставлены незапрограммированными (читаются как `1`) для выбора подходящего варианта конфигурации устройства. Эти биты расположены в EEPROM памяти по адресу 2007h. Пользователю следует помнить, что этот адрес находится ниже области кодов и недоступен программе.

1.4. ОСОБЕННОСТИ ФУНКЦИОНИРОВАНИЯ МИКРОКОНТРОЛЛЕРА «PIC16F84»

Организация прерываний

Прерывания в «PIC16F84» могут быть от четырех источников:

- внешнее прерывание (ножка RB0/INT)

- прерывание по переполнению счетчика/таймера RTCC,

- прерывание по окончании записи данных в EEPROM

- прерывание при изменении сигналов на ножках порта В (RB7 - RB4).

Все прерывания имеют один и тот же вектор/адрес - 0004h. Однако, в управляющем регистре прерываний INTCON (0bh) записывается, от какого именно источника поступил запрос на прерывания. Тип прерывания определяется установкой в 1 соответствующего бита-флага и может быть замаскирован индивидуально или общим битом. Единственным исключением составляет прерывание по завершению записи в память данных EEPROM. Этот флаг находится в регистре EECON1.

Регистр INTCON автоматически сбрасывается при следующих обстоятельствах:

- по включению питания.

- по внешнему сигналу MCLR при нормальной работе.

- по внешнему сигналу MCLR в режиме SLEEP.

- по окончанию задержки таймера WDT при нормальной работе.

- по окончанию задержки таймера WDT в режиме SLEEP.

Структуру регистра управления прерываниями INTCON смотрите в приложении 2.

Бит общего разрешения/запрещения прерывания GIE (бит 7 INTCON) разрешает (GIE равен 1) все индивидуально незамаскированные прерывания или запрещает их (GIE равен 0). Каждое прерывание в отдельности может  быть дополнительно разрешено/запрещено установкой/сбросом соответствующего бита в регистре INTCON.

При обработке прерываний бит GIE обнуляется, чтобы запретить обработку последующих прерываний. При этом адрес возврата записывается в стек, а в программный счетчик загружается адрес 0004h. После завершения работы обработчика прерываний, команда RETFIE устанавливает бит GIE в единицу, чтобы опять разрешить прерывания.

В подпрограмме обработки прерывания источник прерывания определяется по соответствующему биту-флагу в регистре INTCON. Этот флаг-бит должен быть программно сброшен внутри подпрограммы.

Внешнее прерывание (вывод RB0/INT микроконтроллера) осуществляется по фронту (бит INTEDG в регистре OPTION равен 1) либо по срезу (бит INTEDG в регистре OPTION равен 0) сигнала. Прерывание INT может вывести процессор из режима SLEEP, если перед входом в этот режим бит INTE (регистр INTCON) был установлен в единицу. Состояние бита GIE также определяет будет ли микроконтроллер переходить на подпрограмму обработки прерывания после выхода из режима SLEEP.

Сторожевой таймер WDT

Сторожевой таймер WDT предназначен для предотвращения аварийных ситуаций при случайном сбое программы микроконтроллера. Сторожевой таймер представляет собой полностью независимый встроенный

Информация о работе

Размер файла:
614 Kb
Скачали:
0