- •Введение
- •1. Основные определения и понятия микропроцессорной техники
- •1.1. Жесткая и гибкая логика
- •1.2. Микропроцессор и «сотоварищи»
- •Контрольные вопросы
- •2. Типы микропроцессорных систем и факторы, влияющие на их быстродействие
- •2.1. Типы микропроцессорных систем
- •2.2. Программируемые логические интегральные схемы
- •2.3. Факторы, влияющие на быстродействие микропроцессоров
- •Контрольные вопросы
- •3.3.1. Команды пересылки данных
- •3.3.2. Арифметические команды
- •3.3.3. Логические команды
- •3.3.4. Команды переходов
- •3.4. Быстродействие процессора
- •4.3.1. Память программ
- •4.3.2. Память данных
- •5.1.2. Микроконтроллеры семейств pic16cxxx и pic17cxxx
- •5.1.3. Особенности архитектуры микроконтроллеров семейства pic16cxxx
- •5.2. Микроконтроллеры подгруппы pic16f8x
- •5.2.1. Основные характеристики
- •5.2.2. Особенности архитектуры
- •5.2.3. Схема тактирования и цикл выполнения команды
- •5.2.4. Организация памяти программ и стека
- •5.2.5. Организация памяти данных
- •5.2.6. Регистры специального назначения
- •5.2.7. Счетчик команд
- •5.2.8. Прямая и косвенная адресации
- •5.2.9. Порты ввода/вывода
- •5.2.10. Модуль таймера и регистр таймера
- •5.2.11. Память данных в рпзу (eeprom)
- •5.2.12. Организация прерываний
- •5.2.13. Специальные функции
- •5.3. Система команд микроконтроллеров подгруппы pic16f8x
- •5.3.1. Перечень и форматы команд
- •5.3.2. Команды работы с байтами
- •5.3.3. Команды работы с битами
- •5.3.4. Команды управления и работы с константами
- •5.3.5. Особенности программирования и отладки
- •6.1. Разработка микропроцессорной системы на основе микроконтроллера
- •6.1.1. Основные этапы разработки
- •6.1.2. Разработка и отладка аппаратных средств
- •6.1.3. Разработка и отладка программного обеспечения
- •6.1.4. Методы и средства совместной отладки аппаратных и программных средств
5.2.12. Организация прерываний
МК подгруппы PIC16F8X имеют четыре источника прерываний:
внешнее прерывание с вывода RB0/INT;
прерывание от переполнения счетчика/таймера TMR0;
прерывание от изменения сигналов на линиях порта RB<7:4>;
прерывание по окончании записи данных в EEPROM.
Все прерыванияимеют один и тот же вектор/адрес –0004h. Однако в управляющемрегистрепрерыванийINTCONсоответствующим битом-признаком записывается, от какого именно источника поступил запроспрерывания. Исключение составляетпрерываниепо завершении записи вEEPROM, признак которого находится врегистреEECON1.
Бит общего разрешения/запрещения прерыванияGIE(INTCON <7>) разрешает (если = 1) все индивидуально незамаскированныепрерыванияили запрещает их (если = 0). Каждоепрерываниев отдельности может быть дополнительно разрешено/запрещено установкой/сбросом соответствующего бита врегистреINTCON.
Бит GIEпри сбросе обнуляется. Когда начинает обрабатыватьсяпрерывание, битGIEобнуляется, чтобы запретить дальнейшиепрерывания, адрес возврата посылается в стек, а в программный счетчик загружается адрес0004h. Время реакции напрерываниедля внешних событий, таких какпрерываниеот ножкиINTилипортаB, составляет приблизительно пять циклов. Это на один цикл меньше, чем для внутренних событий, таких какпрерываниепо переполнению оттаймераTMR0. Время реакции всегда одинаковое.
В подпрограмме обработки прерыванияисточникпрерыванияможет быть определен по соответствующему биту врегистрепризнаков. Этот флаг-признак должен быть программно сброшен внутри подпрограммы. Признаки запросовпрерыванийне зависят от соответствующих маскирующих битов и бита общего маскированияGIE.
Команда возврата из прерыванияRETFIEзавершает прерывающую подпрограмму и устанавливает битGIE, чтобы опять разрешитьпрерывания.
Логика прерыванийконтроллера изображена нарис. 5.14.
Рис. 5.14.Логика прерываний микроконтроллера.
Внешнее прерываниена ножкеRB0/INTосуществляется по фронту: либо по нарастающему (если врегистреOPTIONбитINTEDG=1), либо по спадающему (еслиINTEDG=0). Когда фронт обнаруживается на ножкеINT, бит запросаINTFустанавливается в единицу (INTCON <1>). Этопрерываниеможет быть замаскировано сбросом управляющего битаINTEв ноль (INTCON <4>). Бит запросаINTFнеобходимо очистить прерывающей программой перед тем, как опять разрешить этопрерывание.ПрерываниеINTможет вывести процессор из режимаSLEEP, если перед входом в этот режим битINTEбыл установлен в единицу. Состояние битаGIEтакже определяет, будет ли процессор переходить на подпрограммупрерыванияпосле выхода из режимаSLEEP.
Переполнение счетчика TMR0(FFh->00h) устанавливает в единицу бит запросаT0IF(INTCON<2>). Этопрерываниеможет быть разрешено/запрещено установкой/сбросом бита маскиT0IE(INTCON<5>). Сброс запросаT0IF– дело программы обработки.
Любое изменение сигнала на одном из четырех входов портаRB<7:4>устанавливает в единицу битRBIF(INTCON<0>). Этопрерываниеможет быть разрешено/запрещено установкой/сбросом бита маскиRBIE(INTCON<3>). Сброс запросаRBIF– дело программы обработки.
Признак запроса прерыванияпо завершении записи вEEPROM,EEIF(EECON1<4>) устанавливается в единицу по окончании автоматической записи данных вEEPROM. Этопрерываниеможет быть замаскировано сбросом битаEEIE(INTCON<6>). Сброс запросаEEIF– дело программы обработки.
1) Этот буфер имеет вход триггера Шмитта, когда конфигурируется в режиме RC-генератора и КМОП-вход в остальных случаях. 2) Этот буфер имеет вход триггера Шмитта, когда конфигурируется в качестве входа внешнего прерывания. 3) Этот буфер имеет вход триггера Шмитта, когда используется в режиме последовательного программирования. 4) Этот буфер имеет вход триггера Шмитта, когда используется в режиме последовательного программирования.