Логика прерываний контролллера:



Внешнее прерывание на ножке 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; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!