Логика прерываний контролллера:
Внешнее прерывание на ножке RВО/INТ осуществляется по фронту: либо по нарастающему (если в регистре ОРТION бит INTEDG=1), либо по спадающему (если INTEDG=0). Когда фронт обнаруживается на ножке INT, бит запроса INTF устанавливается в единицу (INTCON <1>). прерывание может быть замаскировано сбросом управляющего бита INТЕ в ноль (INTCON <4>). Бит запроса INTF необходимо очистить прерывающей программой перед тем, как опять разрешить это прерывание. Прерывание INТ может вывести процессор из режима SLЕЕР, если перед входом в этот режим бит INТЕ был установлен в единицу. Состояние бита GIE также определяет, будет ли процессор переходить на подпрограмму прерывания после выхода из режима SLЕЕР.
Переполнение счетчика ТМR0 (FFh->00h) устанавливает в единицу бит запроса Т0IF (INTCON<2>). Это прерывание может быть разрешено/запрещено установкой/сбросом бита маски Т0IЕ (INTCON<5>). Сброс запроса Т0IF - дело программы обработки.
, Любое изменение сигнала на одном из четырех входов порта RВ<7:4> устанавливает в единицу бит RВIF (INTCON<0>). Это прерывание может быть разрешено/запрещено установкой/сбросом бита маски RВIE (INTCON<3>). Сброс запроса RВIF - дело программы обработки.
Признак запроса прерывания по завершении записи в ЕЕРRОМ, ЕЕIF (ЕЕСОN1<4>) устанавливается в единицу по окончании автоматической записи данных в ЕЕРRОМ. Это прерывание может быть замаскировано сбросом бита ЕЕIЕ (INTCON<6>). Сброс запроса ЕЕIF - дело программы обработки.
|
|
Занятие 51(55)
Специальные функции и система команд МК.
Специальные функции
Микроконтроллеры подгруппы РIС16F8Х имеют набор специальных функций, предназначенных для расширения возможностей системы, минимизации стоимости, исключения навесных компонентов, обеспечения минимального энергопотребления и защиты кода от считывания. В РIС16F8Х реализованы следующие специальные функции:
• сброс;
• сторожевой таймер (WDT);
• режим пониженного энергопотребления (SLЕЕР);
• выбор типа генератора;
• защита кода от считывания;
• биты идентификации;
• последовательное программирование в составе схемы.
В РIС16F8Х существуют различия между вариантами сбросов:
• сброс по включению питания;
• сброс по внешнему сигналу /МСLR при нормальной работе;
• сброс по внешнему сигналу /МСLR в режиме SLЕЕР;
• сброс по окончании задержки таймера WDТ при нормальной работе;
• сброс по окончании задержки таймера WDТ в режиме SLЕЕР.
Для реализации сброса по включению питания в МК подгруппы
РIС16F8Х предусмотрен встроенный детектор включения питания. Таймер установления питания (PWRТ) начинает отсчет времени после того, как напряжение питания пересекает уровень около 1,2... 1,8 Вольт. По истечении выдержки около 72мс считается, что напряжение достигло номинала и запускается другой таймер - таймер запуска генератора (OSТ), формирующий выдержку на стабилизацию кварцевого генератора.
|
|
Если сигнал /МCLR удерживается в низком состоянии достаточно долго (дольше времени всех задержек), тогда после перехода /МСLR в высокое состояние программа начнет выполняться немедленно. Это необходимо в тех случаях, когда требуется синхронно запустить в работу несколько PIC-контроллеров через общий для всех сигнал /МСLR.
Микроконтроллеры подгруппы РIС16F8Х имеют встроенный сторожевой таймер WDТ. Для большей надежности он работает от собственного внутреннего RС-генератора и продолжает функционировать, даже если основной генератор остановлен. Таймер вырабатывает сигнал сброса. Выработка таких сбросов может быть запрещена путем записи нуля в специальный бит конфигурации WDТЕ. Эту операцию производят на этапе прожига микросхем.
Номинальная выдержка WDТ составляет 18 мс (без использования делителя). Если требуются большие задержки, то к WDТ может быть подключен встроенный пределитель с коэффициентом деления до 1:128, который программируется битами РS2:РS0 в регистре ОРТIОN.
|
|
Команды “CLRWDТ» и «SLЕЕР» обнуляют WDТ и пределитель.
Состояние регистров МК после сброса представлено в таблице на рис 41
Режим пониженного энергопотребления SLЕЕР предназначен для обеспечения очень малого тока потребления в ожидании
выключенном сторожевом таймере). Выход из режима SLЕЕР возможен по внешнему сигналу сброса или по окончании выдержки сторожевого таймера.
Кристаллы РIС16F8Х могут работать с четырьмя типами встроенных генераторов. Пользователь может запрограммировать два конфигурационных бита (FOSС1 и FOSC0) для выбора одного из четырех режимов: RС, LР, ХТ, НS
. Здесь ХТ - стандартный кварцевый генератор,
НS -высокочастотный кварцевый генератор,
LР-низкочастотный генератор для экономичных приложений. Микроконтроллеры РIС16F8Х могут тактироваться и от внешних источников.
Генератор, построенный на кварцевых или керамических резонаторах, требует периода стабилизации после включения питания. Для этого встроенный таймер запуска генератора держит устройство в состоянии сброса примерно 18 мс после того, как сигнал на /МСLR ножке кристалла достигнет уровня логической единицы.
|
|
Возможность выбора типа генератора позволяет эффективно использовать микроконтроллеры семейства в различных приложениях. Применение RС генератора позволяет уменьшить стоимость системы, а низкочастотный LР-генератор сокращает энергопотребление.
Программный код, который записан в кристалл, может быть защищен от считывания при помощи установки бита защиты (СР) в слове конфигурации в ноль. Содержимое программы не может быть прочитано так, чтобы с ним можно было работать. Кроме того, при установленном бите защиты невозможно изменять программу. То же относится и к содержимому памяти данных ЕЕРRОМ.
Если установлена защита, то бит СР можно стереть только вместе с содержимым кристалла. Сначала будет стерта ЕЕРRОМ программная память и память данных, и в последнюю очередь — бит защиты кода СР. При считывании защищенного кристалла чтение любого адреса памяти даст результат вида 0000000ХХХХХХХ(двоичный код), где X - это 0 или 1.
Память данных ЕЕРRОМ невозможно проверить после установки бита защиты.
Для выбора различных режимов работы используются биты конфигурации. Микроконтроллеры подгруппы РIС16F8Х имеют 5 или 6 бит конфигурации, которые хранятся в ЕЕРRОМ и устанавливаются на этапе программирования кристалла. Эти биты могут быть запрограммированы (читается как «0») или оставлены незапрограммированными (читается «1«) для выбора подходящего варианта конфигурации устройства. Они расположены в ЕЕРRОМ - памяти по адресу 2007h. Пользователю следует помнить, что этот адрес находится ниже области кодов и недоступен программе. Назначение бит конфигурации МК РIС16F84 приведено в таблице:
СР | /РWRTE | WDТЕ | FОSС1 | FОSСО |
Бит 13:8 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
Биты 13:4 CP: бит защиты памяти программ
0 = память программ защищена
1 = защита отсутствует
Бит 3: / РWRTE: бит использования таймера по включению питания
0 = таймер используется (есть задержка)
1 = таймер не используется
Бит 2: WDТЕ : бит использования сторожевого таймера
0 = WDТ не используется
1 = WDТ используется
Биты 1:0 FOSС1:FOSСО: бит выбора типа генератора
11= генератор RС
10 = генератор НS
01 = генератор ХТ
00 = генератор LР
Четыре слова памяти, расположенные по адресам 2000h-2003h, предназначены для хранения идентификационного кода (ID) пользователя, контрольной суммы или другой информации. Как и слово конфигурации, они могут быть прочитаны или записаны только с помощью программатора. Доступа из программы к ним нет.
Занятие 52(56)
Система команд МК.
Перечень и форматы команд
Микроконтроллеры подгруппы РIС16F8Х имеют простую и эффективную систему команд, состоящую всего из 35 команд.
Каждая команда МК подгруппы РIС16F8Х представляет собой 14-битовое слово, разделенное на код операции (ОРСОDЕ), и поле для одного и более операндов, которые могут участвовать или не участвовать в этой команде.
В таблице приведены описания полей команд.
Поле | Описание | |
f | Адрес регистра | |
W | Рабочий регистр | |
b | Номер бита в 8-разрядном регистре | |
k | Константа | |
X | Не используется. Ассемблер формирует код с Х = 0 х=0 | |
d | Регистр назначения: d=0 - результат в регистре w d= 1 - результат в регистре f По умолчанию d = 1 | |
1аЬе1 | Имя метки | |
ТО S | Вершина стека | |
РС | Счетчик команд | |
РСLАТН | Регистр РСLАТН | |
GIЕ | Бит разрешения всех прерываний | |
WDТ | Сторожевой таймер | |
/TO | Тайм-аут | |
/РD | Выключение питания | |
Dest | Регистр назначения: рабочий регистр xv или регистр, заданный в команде | |
[] | Необязательные параметры | |
( ) | Содержание | |
— > | Присвоение | |
< > | Поле номера бита | |
€ | Из набора |
Для команд работы с байтами f обозначает регистр, с которым производится действие;
d — бит, определяющий, куда положить результат.
Если d =0, то результат будет помещен в регистр W, при d= 1 результат будет помещен в регистр «f», упомянутый в команде.
Для команд работы с битами b обозначает номер бита, участвующего в команде, а f— это регистр, в котором данный бит расположен.
Для команд передачи управления и операций с константами, k обозначает восьми- или одиннадцатибитную константу.
Почти все команды выполняются в течение одного командного цикла.
В двух случаях исполнение команды занимает два командных цикла:
• проверка условия и переход;
• изменение программного счетчика как результат выполнения команды.
Один командный цикл состоит из четырех периодов генератора.
Основные форматы команд МК изображены на рис. ………….
Команды работы с байтами
Команды работы с байтами используются в РIС МК для пересылки данных между регистрами и выполнения математических операций над их содержимым.
Преимуществом системы команд является возможность использования различных способов обращения к регистрам. Адрес регистра быть указан непосредственно в команде соответствующим 7 битовым полем f. При этом доступ возможен только к данным, расположенным в пределах текущего банка данных. Адресация данных может осуществляться и с помощью индексного регистра FSR, путем обращения к регистру косвенной адресации INDF, расположенному по нулевому адресу.
1.Пересылка данных выполняется с помощью двух команд: МОVF и МОVWF. Команда МОVF используется для установки бита нулевого результата в зависимости от содержимого определенного регистра и может применяться для его загрузки в регистр W.
Команда МОVWF используется для записи содержимого рабочего регистра w в указанный регистр МК. Если в качестве этого регистра указывается INDF, то адрес регистра назначения выбирается из регистра FSR. При выполнении данной команды биты состояния не изменяются.
2.Специальные команды СLRF f и СLRW применяются для очистки регистров МК. Команда СLRF f записывает ноль в указанный регистр.
Команда СLRW — в рабочий регистр. При этом необходимо помнить, что они также устанавливают соответствующее значение бита нуля.
3.Наиболее часто используемой арифметической операцией является сложение, которое выполняется командой АDDWF f,d Эта операция может изменять все биты состояния.
При использовании операции вычитания SUBWF f,d следует иметь в виду, что в РIС МК она выполняет операцию сложения с отрицательным числом.
4.Команды логических операций АNDWF f, d, IORWF f,dи ХORWF f, d позволяют выполнять основные логические операции над соответствующими битами содержимого указанного регистра и регистра w. Команду ХORWF f, d удобно использовать для проверки содержимого некоторого регистра. Для этого необходимо загрузить заданное число в регистр W и выполнить операцию ХORWF f, d над содержимым проверяемого регистра и w. Если содержимое регистра равно содержимому w, то результат операции будет равен нулю, и бит нуля установится в 1.
Команда СОМF f,d используется для инвертирования значений всех битов в регистре источника. Следует отметить, что эта команда не делает число отрицательным.
Команда SWAPF f,d меняет местами тетрады в регистре. Как и в остальных командах данной группы, результат выполнения может быть записан как в регистре w, так и в регистре-источнике. Команду SWAPF f,d можно применять, в частности, для хранения двух цифр в одном регистре, переставляя их в зависимости от того, какую из них вы хотите использовать. С помощью команды SWAPF f,d и удобно разделить байт на две тетрады для их последующего отображения на дисплее.
Основной функцией команд циклического сдвига RLF f,d и RRF f,d является сдвиг содержимого регистра влево или вправо на один бит с записью на место младшего значащего бита значения бита переноса или, соответственно, установления бита переноса в соответствии со значением старшего значащего бита. Команды циклического сдвига могут использоваться для умножения и деления на число 2 в степени п. Они также служат для реализации последовательного ввода или вывода данных и позиционирования байта для того, чтобы можно было тестировать значение отдельных битов.
Команды инкремента INCF f,d и декремента DECF f,d используются для изменения содержимого регистра на 1. После выполнения команд инкремента и декремента может измениться только бит нуля.. Для реализации условных переходов в программе существуют команды инкремента и декремента с пропуском команды при нулевом результате: INCFSZ f,d и DECFSZ f,d. С точки зрения обработки данных они работают аналогично командам INCF f,d и DECF f,d. Основное отличие от этих команд заключается в том, что при нулевом результате выполнения команды INCFSZ f,d и DECFSZ f,d. пропускается следующая за ней команда. Это означает, что эти команды могут использоваться для организации программных циклов. Другая особенность этих команд состоит в том, что они не влияют на содержимое битов состояния регистра SТАТUS.
Команда NОР означает отсутствие операции. Традиционно она используется для двух целей. Первая - обеспечение синхронизации программы с временными характеристиками различных устройств системы.
Вторым возможным вариантом является использование команды N0P для удаления части программного кода.
Команды работы с битами
Отличительной особенностью данной группы команд является то, что они оперируют с однобитными операндами, в качестве которых используются отдельные биты регистров МК.
Установка и сброс отдельных битов производится командами ВSF f,bи ВCF f,b. Любой доступный для записи бит в регистровой памяти может быть модифицирован таким способом. При этом гарантируется, что ни один из остальных битов регистра не будет изменен.
Однако при работе с портами ввода/вывода последнее утверждение не всегда справедливо. Связано это с тем, что значение числа, считываемого из регистра порта, зависит от конфигурации его выводов в качестве входов или выходов данных.
В системе команд, рассматриваемых РIС МК, отсутствуют команды условного перехода. Вместо них имеются такие, которые позволяют пропустить выполнение следующей команды. В частности, рассмотренные выше команды INCFSZ f,d и DECFSZ f,d.удобны для организации циклов в программе.
Для управления процессом выполнения программы используются команды работы с битами ВTFSC f,b и BTFSS f, b, позволяющие пропустить выполнение следующей команды программы в зависимости от состояния определенного бита в заданном регистре.
Если в качестве заданного регистра используется регистр SТАТUS, то можно организовать управление переходами программы в зависимости от состояния битов признаков результата операции, как предусмотрено в микропроцессорах стандартной архитектуры.
Дата добавления: 2022-01-22; просмотров: 20; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!