Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

I. Элементы линейной и векторной алгебры, аналитической геометрии. 3 страница




 

 

7.Прерывания микроконтроллеров

 

PIC16F877 имеют 14 источников прерываний. Регистр INTCON содержит флаги отдельных прерываний, биты разрешения этих прерываний и бит глобального разрешения прерываний.

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

При возвращении из подпрограммы обработки прерываний, по команде RETFIE, бит GIE аппаратно устанавливается в 1, разрешая все немаскированные прерывания.

В регистре INTCON находятся флаги следующих прерываний: внешнего сигнала INT, изменения уровня сигнала на входах RB7:RB4, переполнения TMR0.

В регистрах PIR1, PIR2 содержатся флаги прерываний периферийных модулей микроконтроллера, а в регистрах PIE1, PIE2 соответствующие биты разрешения прерываний. В регистре INTCON находится бит разрешения прерываний от периферийных модулей.

При переходе на подпрограмму обработки прерываний бит GIE аппаратно сбрасывается в 0, запрещая прерывания, адрес возврата из подпрограммы обработки прерываний смещается в стек, а в счетчик команд РС загружается вектор прерывания 004h. Источник прерываний может быть определен проверкой флагов прерываний, которые должны быть сброшены программно перед разрешением прерыванием, чтобы избежать повторного вызова.

Для внешних источников прерываний (сигнал INT, изменения уровня сигнала на входах RB7:RB4) время перехода на подпрограмму обработки прерываний будет составлять 3-4 машинных цикла. Точное время перехода зависит от конкретного случая, оно одинаково для 1 и 2-х цикловых команд. Флаги прерываний устанавливаются независимо от состояния соответствующих битов маски и бита GIE.

Индивидуальные флаги прерываний устанавливаются независимо от состояния соответствующих битов маски и бита GIE.

На рис. 7.1. Приведена структурная схема логики прерывания.

 

 

Рис.7.1. Структурная схема логики прерываний.

 

 

7.1.Регистры, используемые системой прерываний.

 

 

7.2.Внешнее прерывание с входа RB0/INT

Внешнее прерывание с входа RB0/INT происходит: по переднему фронту сигнала, если бит INTEDG (OPTION_REG<6>) установлен в 1; по заднему фронту сигнала, если бит INTEDG сброшен в 0. Когда активный фронт сигнала появляется на входе RB0/INT бит INTF (INTCON<1>) устанавливается в 1. Прерывание может быть запрещено сбросом бита INTE (INTCON<4>) в 0. Флаг прерывания INTF должен быть сброшен программно в подпрограмме обработки прерываний. Прерывание INT может вывести микроконтроллер из режима SLEEP, если бит INTE=1 до перехода в режим SLEEP. Состояние бита GIE определяет, переходить на подпрограмму обработки прерываний после выхода из режима SLEEP. На рис. Показана временная диаграмма выхода микроконтроллера из режима SLEEP по прерыванию с входа RB0/INT.

 

7.3.Прерывание по переполнению TMR0

Переполнение таймера TMR0 (FFh → 00h) устанавливает флаг TOIF (INTCON<2>) в 1. Прерывание от TMR0 можно разрешить/запретить установкой /сбросом бита TOIF(INTCON<5>). Описание работы модуля TMR0 приведено ранее.

 

7.4.Прерывание по изменению уровня сигнала на входах RB7:RB4

Изменение уровня сигнала на входах RB7:RB4 вызывает установку флага RBIF(INTCON<0>). Прерывание можно разрешить/запретить установкой/сбросом бита RBIE(INTCON<4>).

 

7.5. Сохранение контекста при обработке прерываний

При переходе на подпрограмму обработки прерываний в стеке сохраняется только адрес возврата. Как правило, необходимо сохранять значения ключевых регистров при обработке прерываний (например, регистр W и STATUS), что выполняется программным способом.

Для PIC16F873/874 регистр W_TEMP должен быть определен в обоих банках (0,1) с одинаковым смещением относительно базового адреса банка (т.е. если регистр W_TEMP определен в банке 0 с адресом 0х20, то он должен быть определен в банке 1 с адресом 0хА0). Регистры PCLATH_TEMP и STATUS_TEMP могут быть определены только в одном банке.

Так как старшие 16 байт каждого банка микроконтроллеров PIC16F876/877 доступны во всех банках, то регистры STATUS_TEMP, PCLATH_TEMP и W_TEMP могут быть размещены в этой области. Ниже приведен текс сохранения контекста.

 

 

Если допускаются вложения прерывания, то необходимо иметь маску приоритетов с программной установкой. Это позволяет изменить приоритет прерываний, разрешаемых при выполнение подпрограммы обслуживания. Регистр маски считается портом ввода/вывода и в него можно записывать 3-х битную маску с помощью команды вывода.

 

8.Система команд

 

Каждая команда микроконтроллера PIC16F87X состоит из одного 14-разрядного слова, разделенного на код операции (OPCODE), определяющий тип команды и один или несколько операндов, определяющие операцию команды. Команды разделены на следующие группы: байт ориентированные команды, бит ориентированные команды, команды управления и операций с константами. Описание полей команд, и формат команд приведены в таблице и на рис.8.1.

 

 

Рис.8.1. Описание полей команд и формат команд.

 

Для байт ориентированных команд "f" является указателем регистра, а "d" указателем адресата результата. Указатель регистра определяет, какой регистр должен использоваться в команде. Указатель адресата определяет, где будет сохранен результат. Если "d"=0, результат сохраняется в регистре W. Если "d"=1, результат сохраняется в регистре, который используется в команде.

В бит ориентированных командах "b" определяет номер бита, участвующего в операции, а "f" – указатель регистра, который содержит этот бит.

В командах управления или операциях с константами "k" представляет восемь или одиннадцать бит константы или значения литералов.

Все команды выполняются за один машинный цикл, кроме команд условия, в которых получен истинный результат и инструкций изменяющих значение счетчика команд РС. В случае выполнения команды за два машинных цикла, во втором цикле выполняется инструкция NOP. Один машинный цикл состоит из четырех тактов генератора. Для тактового генератора с частотой 4 МГц все команды выполняются за 1 мкс, если условия истинно или изменяется счетчик команд РС, команда выполняется за 2 мкс.

 

 

 




Поделиться с друзьями:


Дата добавления: 2014-12-26; Просмотров: 1012; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.017 сек.