WDT );SLEEP );В PIC16F8X существуют различия между вариантами
/MCLR при нормальной работе;/MCLR в режиме SLEEP ;WDT при нормальной работе;WDT в режиме SLEEP .Для реализации PWRT ) начинает отсчет времени после того, как напряжение питания пересекает уровень около 1,2…1,8 Вольт. По истечении выдержки около 72мс считается, что напряжение достигло номинала и запускается другой таймер – таймер запуска OST ), формирующий выдержку на стабилизацию кварцевого RC
Если сигнал /MCLR удерживается в низком состоянии достаточно долго (дольше времени всех задержек), тогда после перехода /MCLR в высокое /MCLR.
. Для большей надежности он работает от собственного внутреннего RC - . Таймер вырабатывает сигнал WDTE. Эту операцию производят на этапе прожига микросхем.
Номинальная выдержка составляет 18 мс (без использования делителя). Она зависит от температуры, напряжения питания, особенностей типов микросхем. Если требуются большие задержки, то к может быть подключен встроенный пределитель с коэффициентом деления до 1:128, который программируется битами PS2:PS0 в регистре OPTION. В результате могут быть реализованы выдержки до 2,3 секунд.
Команды " CLRWDT " и " " обнуляют и пределитель, если он подключен к . Это запускает выдержку времени сначала и предотвращает на некоторое время выработку сигнала все же произошел, то одновременно обнуляется бит /TO в регистре статуса. В приложениях с высоким уровнем помех содержимое регистра OPTION подвержено сбою. Поэтому регистр OPTION должен обновляться через равные промежутки времени.
Состояние регистров МК после
Некоторые из специальных регистров при в режиме . Просто этот 0000h ). Биты регистра статуса /TO и /PD устанавливаются или сбрасываются в зависимости от варианта
| Регистр | Адрес | |
Другие виды питания |
|---|---|---|---|
W |
- | xxxx xxxx | uuuu uuuu |
INDF |
00h |
—— —— | —— —— |
TMR0 |
01h |
xxxx xxxx | uuuu uuuu |
|
02h |
0000 0000 | 0000 0000 |
STATUS |
03h |
0001 1xxx | 000q quuu |
|
04h |
xxxx xxxx | uuuu uuuu |
PORT A |
05h |
—x xxxx | —u uuuu |
PORT B |
06h |
xxxx xxxx | uuuu uuuu |
TRIS A |
85h |
—1 1111 | —1 1111 |
TRIS B |
86h |
1111 1111 | 1111 1111 |
OPTION |
81h |
1111 1111 | 1111 1111 |
EEDATA |
08h |
xxxx xxxx | uuuu uuuu |
EEADR |
09h |
xxxx xxxx | uuuu uuuu |
EECON1 |
88h |
—0 0000 | —0 q000 |
EECON2 |
89h |
—— —— | —— —— |
PCLATH |
0Ah |
—0 0000 | —0 0000 |
INTCON |
0Bh |
0000 000x | 0000 000u |
| Здесь: x — неизвестное значение; u — неизменяемый бит; "–" — неиспользуемый бит (читается как "0"); q — значение бита зависит от условий |
|||
Режим пониженного предназначен для обеспечения очень малого тока потребления в ожидании (менее 1 мкА при выключенном возможен по внешнему сигналу
Кристаллы PIC16F8X могут работать с четырьмя типами встроенных FOSC1 и FOSC0 ) для выбора одного из четырех режимов: RC, LP, XT, HS. Здесь XT – стандартный кварцевый HS – высокочастотный кварцевый LP – низкочастотный
/MCLR ножке кристалла достигнет уровня логической единицы.
Возможность выбора типа RC LP -
Программный код, который записан в кристалл, может быть защищен от считывания при помощи установки бита защиты ( CP ) в слове .
Если установлена защита, то бит CP можно стереть только вместе с содержимым кристалла. Сначала будет стерта программная память и CP. При считывании защищенного кристалла чтение любого адреса памяти даст результат вида 0000000XXXXXXX(двоичный код), где X – это 0 или 1.
невозможно проверить после установки бита защиты.
Для выбора различных режимов работы используются биты и устанавливаются на этапе программирования кристалла. Эти биты могут быть запрограммированы (читается как "0") или оставлены незапрограммированными (читается "1") для выбора подходящего варианта -памяти по адресу 2007h. Пользователю следует помнить, что этот адрес находится ниже области кодов и недоступен программе.
Назначение бит
| R-u | R/P-u | R-u | R-u | R-u | R-u | R-u |
CP |
DP |
CP |
/PWRTE |
WDTE |
FOSC1 |
FOSC0 |
| Бит 13:8 | Бит 7 | Бит 6:4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
Биты 13:8 0 = 1 = защита отсутствует |
||||||
Бит 7 0 = 1 = защита отсутствует |
||||||
Биты 6:4 0 = 1 = защита отсутствует |
||||||
Бит 3 0 = таймер используется (есть задержка) 1 = таймер не используется |
||||||
Бит 2: 0 = 1 = |
||||||
Биты 1:0 11 = 10 = 01 = 00 = |
||||||
| Здесь: P — программируемый бит; – n = значение по |
||||||
Назначение бит
| R-u | R-u | R-u | R-u | R-u |
CP |
/PWRTE |
WDTE |
FOSC1 |
FOSC0 |
| Бит 13:4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
Биты 13:4 0 = 1 = защита отсутствует |
||||
Бит 3 0 = таймер используется (есть задержка) 1 = таймер не используется |
||||
Бит 2: 0 = 1 = |
||||
Биты 1:0 11 = 10 = 01 = 00 = |
||||
Четыре слова памяти, расположенные по адресам 2000h-2003h, предназначены для хранения идентификационного кода ( ID ) пользователя, контрольной суммы или другой информации. Как и слово
Каждая команда МК
| Поле | Описание |
|---|---|
f |
Адрес регистра |
w |
Рабочий регистр |
b |
Номер бита в 8-разрядном регистре |
k |
Константа |
x |
Не используется. Ассемблер формирует код с x=0 |
d |
Регистр назначения:
По умолчанию |
label |
Имя метки |
|
Beршина стека |
PC |
|
PCLATH |
Регистр PCLATH |
GIE |
Бит разрешения всех прерываний |
|
|
/TO |
Тайм-аут |
/PD |
Выключение питания |
dest |
Регистр назначения: рабочий регистр w или регистр, заданный в команде |
| [ ] | Необязательные параметры |
| ( ) | Содержание |
| $$\to$$ | Присвоение |
| < > | Поле номера бита |
| $$\in$$ | Из набора |
Для команд работы с байтами f обозначает регистр, с которым производится действие; d – бит, определяющий, куда положить результат. Если d =0, то результат будет помещен в регистр w, при d=1 результат будет помещен в регистр " f ", упомянутый в команде.
Для команд работы с битами b обозначает номер бита, участвующего в команде, а f – это регистр, в котором данный бит расположен.
Для команд передачи управления и операций с константами, k обозначает восьми- или одиннадцатибитную константу.
Почти все команды выполняются в течение одного командного цикла. В двух случаях исполнение команды занимает два командных цикла:
Один командный цикл состоит из четырех периодов
Основные
(рис 5.15) Основные форматы команд.| Мнемоника | Описание команды | Циклы | Биты состояния | Прим. |
|---|---|---|---|---|
ADDWF f, d |
Сложение W с f |
1 | C, DC, Z |
1, 2 |
ANDWF f, d |
Логическое И W и f |
1 | Z |
1, 2 |
CLRF f |
f |
1 | Z |
2 |
CLRW |
W |
1 | Z |
|
COMF f, d |
Инверсия регистра f |
1 | Z |
1, 2 |
DECF f, d |
f |
1 | Z |
1, 2 |
DECFSZ f, d |
f, пропустить команду, если 0 |
1(2) | 1, 2, 3 | |
INCF f, d |
Инкремент регистра f |
1 | Z |
1, 2 |
INCFSZ f, d |
Инкремент f, пропустить команду, если 0 |
1(2) | 1, 2, 3 | |
IORWF f, d |
W и f |
1 | Z |
1, 2 |
MOVF f, d |
Пересылка регистра f |
1 | Z |
1, 2 |
MOVWF f |
Пересылка W в f |
1 | ||
|
Холостая команда | 1 | ||
RLF f, d |
Сдвиг f влево через перенос |
1 | C |
1, 2 |
RRF f, d |
Сдвиг f вправо через перенос |
1 | C |
1, 2 |
SUBWF f, d |
Вычитание W из f |
1 | C, DC, Z |
1, 2 |
SWAPF f, d |
Обмен местами тетрад в f |
1 | 1, 2 | |
XORWF f, d |
Исключающее ИЛИ W и f |
1 | Z |
1, 2 |
BCF f, b |
f |
1 | 1, 2 | |
BSF f, b |
Установка бита в регистре f |
1 | 1, 2 | |
BTFSC f, b |
Пропустить команду, если бит в f равен нулю |
1(2) | 3 | |
BTFSS f, b |
Пропустить команду, если бит в f равен единице |
1(2) | 3 | |
ADDLW k |
Сложение константы и W |
1 | C, DC, Z |
|
ANDLW k |
Логическое И константы и W |
1 | Z |
|
CALL k |
Вызов подпрограммы | 2 | ||
CLRWDT - |
|
1 | /TO, /P |
|
GOTO k |
Переход по адресу | 2 | ||
IORLW k |
W |
1 | Z |
|
MOVLW k |
Пересылка константы в W |
1 | ||
RETFIE - |
Возврат из прерывания | 2 | ||
RETLW k |
Возврат из подпрограммы с загрузкой константы в W |
2 | ||
RETURN - |
Возврат из подпрограммы | 2 | ||
|
Переход в режим |
1 | /TO, /P |
|
SUBLW k |
Вычитание W из константы |
1 | C, DC, Z |
|
XORLW k |
Исключающее ИЛИ константы и W |
1 | Z |
|
Примечания к таблице: MOVF PORTB,1 ), то используется значение, считываемое с выводов. Например, если в выходной защелке порта, включенного на ввод, находится "1", а внешнее устройство формирует на этом выводе "0", то в разряде данных будет записан "0".TMRO (и, если допустимо, d=1 ), то предварительный делитель, если он подключен к TMRO, будет сброшен.. |
||||
Команды работы с байтами используются в
Преимуществом f. При этом доступ возможен только к данным, расположенным в пределах текущего банка данных. Адресация данных может осуществляться и с помощью индексного регистра , путем обращения к регистру INDF, расположенному по нулевому адресу.
Пересылка данных выполняется с помощью двух команд: MOVF и MOVWF, назначение которых существенно различается. Команда MOVF используется для установки бита нулевого результата в зависимости от содержимого определенного регистра и может применяться для его загрузки в регистр w. Команда MOVWF используется для записи содержимого рабочего регистра w в указанный регистр МК. Если в качестве этого регистра указывается INDF, то адрес регистра назначения выбирается из регистра . При выполнении данной команды биты состояния не изменяются.
Специальные команды CLRF f и CLRW применяются для очистки регистров МК. Команда CLRF f записывает ноль в указанный регистр, а команда CLRW – в рабочий регистр. При этом необходимо помнить, что они также устанавливают соответствующее значение бита нуля.
Наиболее часто используемой арифметической операцией является сложение, которое выполняется командой ADDWF f,d. Эта операция может изменять все биты состояния. Бит нуля устанавливается в 1, если при выполнении логической операции "И" над полученным результатом и числом 0x0FF (255) получается ноль. Бит переноса устанавливается в 1, если результат превышает число 0x0FF. Бит десятичного переноса устанавливается в 1, если сумма четырех младших битов результата превышает 0x0F (15).
При использовании операции вычитания SUBWF f, d следует иметь в виду, что в d = f – w в действительности выполняется d = f + (-w). Отрицательное значение содержимого w вычисляется по формуле Negw = (Posw ^ 0x0FF) + 1.
Команды логических операций ANDWF f, d, IORWF f, d и XORWF f, d позволяют выполнять основные логические операции над соответствующими битами содержимого указанного регистра и регистра w. Бит нуля в регистре STATUS устанавливается в 1 или сбрасывается в 0 в зависимости от значения полученного результата. Команду XORWF f, d удобно использовать для проверки содержимого некоторого регистра. Для этого необходимо загрузить заданное число в регистр w и выполнить операцию XORWF f, d над содержимым проверяемого регистра и w. Если содержимое регистра равно содержимому w, то результат операции будет равен нулю, и бит нуля установится в 1.
Команда COMF f, d используется для Neg = (.
Команда SWAPF f, d меняет местами тетрады в регистре. Как и в остальных командах данной группы, результат выполнения может быть записан как в регистре w, так и в регистре-источнике. Данная команда не меняет значения какого либо из битов состояния, что может использоваться для восстановления содержимого контекстных регистров перед возвратом из прерывания. Команду SWAPF f, d можно применять, в частности, для хранения двух цифр в одном регистре, переставляя их в зависимости от того, какую из них вы хотите использовать. С помощью команды SWAPF f, d удобно разделить байт на две тетрады для их последующего отображения на дисплее.
Основной функцией команд циклического сдвига RLF f, d и RRF f, d является сдвиг содержимого регистра влево или вправо на один бит с записью на место младшего значащего бита значения бита переноса или, соответственно, установления бита переноса в соответствии со значением старшего значащего бита. Команды циклического сдвига могут использоваться для умножения и деления на число 2 в степени n. Они также служат для реализации последовательного ввода или вывода данных и позиционирования байта для того, чтобы можно было тестировать значение отдельных битов.
Команды инкремента 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 пропускается следующая за ней команда. Это означает, что команды INCFSZ f, d и DECFSZ f, d могут использоваться для организации программных циклов. Другая особенность этих команд состоит в том, что они не влияют на содержимое битов состояния регистра STATUS.
Команда означает отсутствие операции. Традиционно она используется для двух целей. Первая – обеспечение синхронизации программы с временными характеристиками различных устройств системы. Вторым возможным вариантом является использование команды для удаления части программного кода. Вследствие того, что код команды состоит из одних нулей, его легко ввести в
Отличительной особенностью данной группы команд является то, что они оперируют с однобитными операндами, в качестве которых используются отдельные биты регистров МК.
Установка и BSF f, b и BCF f, b. Любой доступный для записи бит в регистровой памяти может быть модифицирован таким способом. При этом гарантируется, что ни один из остальных битов регистра не будет изменен.
Однако при работе с портами ввода/вывода последнее утверждение не всегда справедливо. Связано это с тем, что значение числа, считываемого из регистра порта, зависит от
В INCFSZ f, d и DECFSZ f, d удобны для организации циклов в программе.
Для управления процессом выполнения программы используются команды работы с битами BTFSC f, b и BTFSS f, b, позволяющие пропустить выполнение следующей команды программы в зависимости от состояния определенного бита в заданном регистре.
Если в качестве заданного регистра используется регистр STATUS, то можно организовать управление переходами программы в зависимости от состояния битов признаков результата операции, как предусмотрено в микропроцессорах стандартной архитектуры.
Команды работы с константами используют при выполнении операции явно заданные операнды, которые являются частью команды.
Команда MOVLW k используется для записи константы k в рабочий регистр w. Содержимое регистра STATUS при этом не изменяется.
Команда ADDLW k прибавляет непосредственно заданную величину к содержимому регистра w. Эта команда изменяет значения битов нуля, переноса и десятичного переноса таким же образом, как и команда ADDWF f, d.
Команда SUBLW k вычитает содержимое регистра w из заданного значения константы k. В отличие от SUBWF f, d, результат выполнения команды SUBLW k можно представить в следующем виде: w = k + (w ^ 0x0FF) + 1. С помощью этой команды удобно изменять знак содержимого регистра w, используя ее следующим образом: SUBLW 0.
Команды логических операций ANDLW k, IORLW k и XORLW k выполняют побитно соответствующие операции над содержимым регистра w и непосредственно заданной константой k. Эти команды, как и команды работы с байтами, устанавливают только бит нуля в регистре STATUS в соответствии с результатом операции. Полученный результат сохраняется в регистре w.
С помощью команды IORLW 0 удобно определять равенство нулю содержимого регистра w. В зависимости от результата этой операции бит нуля будет установлен в 1 или сброшен в 0.
Команда RETLW k используется для возврата из подпрограммы с установкой начальных условий в регистр w, а также для реализации табличных преобразований, что будет описано ниже. Перед возвращением из подпрограммы эта команда осуществляет загрузку непосредственно заданной величины в рабочий регистр w.
Команды GOTO k, CALL k, RETURN и RETFIE используются для управления программой.
Команды GOTO k и CALL k могут явно задавать адрес перехода в пределах определенной страницы, размер которой зависит от типа МК: 256/512 адресов для младших моделей, 2К адресов для PCLATH должен содержать правильную информацию о новой странице.
Команда CALL k выполняется практически так же, как и GOTO k, за исключением того, что указатель на следующую страницу сохраняется в стеке счетчика команд.
Для RETLW k, RETURN и RETFIE. При каждом из этих способов значение адреса извлекается из вершины стека и загружается в
Обычное использование команды RETURN приводит к восстановлению адреса команды, следующей за командой вызова подпрограммы. При этом содержимое каких-либо регистров не изменяется, как и значения отдельных битов.
Команда RETFIE используется для возврата из прерывания. Она реализуется аналогично команде RETURN за исключением того, что при ее выполнении устанавливается в 1 бит GIE в регистре управления прерываниями INTCON. Это позволяет после выполнения данной команды немедленно перейти к обработке прерываний, ожидающих своей очереди. В противном случае перед окончанием обработки потребовалась бы проверка наличия запросов других прерываний, и, в случае их поступления, переход к их обработке.
Существует всего две команды, служащие для непосредственного управления функционированием МК. Первая из них – CLRWDT – используется для – обеспечивает сохранение текущего состояния МК в
Команда CLRWDT сбрасывает в 0 содержимое и пределителя (если он используется для установки интервала времени срабатывания ), запуская сначала отсчет времени CLRWDT является предотвращение перезапуска МК при нормальном выполнении программы.
Команда служит для двух целей. Первой из них является отключение МК после того, как он закончит выполнение программы. Такое использование МК предполагает, что он необходим только для решения определенной задачи, например, инициализации других устройств в системе, а затем его функционирование не требуется.
Второй целью использования команды является реализация в МК позволяет избежать необходимости организации циклов ожидания, а также снизить потребляемую системой мощность.
При этом необходимо иметь в виду, что выход МК из нельзя использовать в тех случаях, когда требуется быстрая реакция на внешнее событие.
Анализ архитектуры
RISC - w, а затем переслать его содержимое в нужную ячейку памяти данных:movlw k movwf fАналогично, все бинарные арифметико-логические операции приходится выполнять с привлечением рабочего регистра
w ;STATUS (для PIC16) или BSR (для PIC17). На этапе трансляции принадлежность указанного регистра текущему активному банку проверить невозможно, для этого требуется моделирование хода выполнения программы;CALL и GOTO должны быть правильно установлены биты выбора текущей страницы в регистре PCLATH. На этапе трансляции невозможно проверить корректность передачи управления во время выполнения, для этого также требуется моделирование выполнения программы;Указанные особенности архитектуры
WDT );SLEEP );В PIC16F8X существуют различия между вариантами
/MCLR при нормальной работе;/MCLR в режиме SLEEP ;WDT при нормальной работе;WDT в режиме SLEEP .Для реализации PWRT ) начинает отсчет времени после того, как напряжение питания пересекает уровень около 1,2…1,8 Вольт. По истечении выдержки около 72мс считается, что напряжение достигло номинала и запускается другой таймер – таймер запуска OST ), формирующий выдержку на стабилизацию кварцевого RC
Если сигнал /MCLR удерживается в низком состоянии достаточно долго (дольше времени всех задержек), тогда после перехода /MCLR в высокое /MCLR.
. Для большей надежности он работает от собственного внутреннего RC - . Таймер вырабатывает сигнал WDTE. Эту операцию производят на этапе прожига микросхем.
Номинальная выдержка составляет 18 мс (без использования делителя). Она зависит от температуры, напряжения питания, особенностей типов микросхем. Если требуются большие задержки, то к может быть подключен встроенный пределитель с коэффициентом деления до 1:128, который программируется битами PS2:PS0 в регистре OPTION. В результате могут быть реализованы выдержки до 2,3 секунд.
Команды " CLRWDT " и " " обнуляют и пределитель, если он подключен к . Это запускает выдержку времени сначала и предотвращает на некоторое время выработку сигнала все же произошел, то одновременно обнуляется бит /TO в регистре статуса. В приложениях с высоким уровнем помех содержимое регистра OPTION подвержено сбою. Поэтому регистр OPTION должен обновляться через равные промежутки времени.
Состояние регистров МК после
Некоторые из специальных регистров при в режиме . Просто этот 0000h ). Биты регистра статуса /TO и /PD устанавливаются или сбрасываются в зависимости от варианта
| Регистр | Адрес | |
Другие виды питания |
|---|---|---|---|
W |
- | xxxx xxxx | uuuu uuuu |
INDF |
00h |
—— —— | —— —— |
TMR0 |
01h |
xxxx xxxx | uuuu uuuu |
|
02h |
0000 0000 | 0000 0000 |
STATUS |
03h |
0001 1xxx | 000q quuu |
|
04h |
xxxx xxxx | uuuu uuuu |
PORT A |
05h |
—x xxxx | —u uuuu |
PORT B |
06h |
xxxx xxxx | uuuu uuuu |
TRIS A |
85h |
—1 1111 | —1 1111 |
TRIS B |
86h |
1111 1111 | 1111 1111 |
OPTION |
81h |
1111 1111 | 1111 1111 |
EEDATA |
08h |
xxxx xxxx | uuuu uuuu |
EEADR |
09h |
xxxx xxxx | uuuu uuuu |
EECON1 |
88h |
—0 0000 | —0 q000 |
EECON2 |
89h |
—— —— | —— —— |
PCLATH |
0Ah |
—0 0000 | —0 0000 |
INTCON |
0Bh |
0000 000x | 0000 000u |
| Здесь: x — неизвестное значение; u — неизменяемый бит; "–" — неиспользуемый бит (читается как "0"); q — значение бита зависит от условий |
|||
Режим пониженного предназначен для обеспечения очень малого тока потребления в ожидании (менее 1 мкА при выключенном возможен по внешнему сигналу
Кристаллы PIC16F8X могут работать с четырьмя типами встроенных FOSC1 и FOSC0 ) для выбора одного из четырех режимов: RC, LP, XT, HS. Здесь XT – стандартный кварцевый HS – высокочастотный кварцевый LP – низкочастотный
/MCLR ножке кристалла достигнет уровня логической единицы.
Возможность выбора типа RC LP -
Программный код, который записан в кристалл, может быть защищен от считывания при помощи установки бита защиты ( CP ) в слове .
Если установлена защита, то бит CP можно стереть только вместе с содержимым кристалла. Сначала будет стерта программная память и CP. При считывании защищенного кристалла чтение любого адреса памяти даст результат вида 0000000XXXXXXX(двоичный код), где X – это 0 или 1.
невозможно проверить после установки бита защиты.
Для выбора различных режимов работы используются биты и устанавливаются на этапе программирования кристалла. Эти биты могут быть запрограммированы (читается как "0") или оставлены незапрограммированными (читается "1") для выбора подходящего варианта -памяти по адресу 2007h. Пользователю следует помнить, что этот адрес находится ниже области кодов и недоступен программе.
Назначение бит
| R-u | R/P-u | R-u | R-u | R-u | R-u | R-u |
CP |
DP |
CP |
/PWRTE |
WDTE |
FOSC1 |
FOSC0 |
| Бит 13:8 | Бит 7 | Бит 6:4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
Биты 13:8 0 = 1 = защита отсутствует |
||||||
Бит 7 0 = 1 = защита отсутствует |
||||||
Биты 6:4 0 = 1 = защита отсутствует |
||||||
Бит 3 0 = таймер используется (есть задержка) 1 = таймер не используется |
||||||
Бит 2: 0 = 1 = |
||||||
Биты 1:0 11 = 10 = 01 = 00 = |
||||||
| Здесь: P — программируемый бит; – n = значение по |
||||||
Назначение бит
| R-u | R-u | R-u | R-u | R-u |
CP |
/PWRTE |
WDTE |
FOSC1 |
FOSC0 |
| Бит 13:4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
Биты 13:4 0 = 1 = защита отсутствует |
||||
Бит 3 0 = таймер используется (есть задержка) 1 = таймер не используется |
||||
Бит 2: 0 = 1 = |
||||
Биты 1:0 11 = 10 = 01 = 00 = |
||||
Четыре слова памяти, расположенные по адресам 2000h-2003h, предназначены для хранения идентификационного кода ( ID ) пользователя, контрольной суммы или другой информации. Как и слово
Каждая команда МК
| Поле | Описание |
|---|---|
f |
Адрес регистра |
w |
Рабочий регистр |
b |
Номер бита в 8-разрядном регистре |
k |
Константа |
x |
Не используется. Ассемблер формирует код с x=0 |
d |
Регистр назначения:
По умолчанию |
label |
Имя метки |
|
Beршина стека |
PC |
|
PCLATH |
Регистр PCLATH |
GIE |
Бит разрешения всех прерываний |
|
|
/TO |
Тайм-аут |
/PD |
Выключение питания |
dest |
Регистр назначения: рабочий регистр w или регистр, заданный в команде |
| [ ] | Необязательные параметры |
| ( ) | Содержание |
| $$\to$$ | Присвоение |
| < > | Поле номера бита |
| $$\in$$ | Из набора |
Для команд работы с байтами f обозначает регистр, с которым производится действие; d – бит, определяющий, куда положить результат. Если d =0, то результат будет помещен в регистр w, при d=1 результат будет помещен в регистр " f ", упомянутый в команде.
Для команд работы с битами b обозначает номер бита, участвующего в команде, а f – это регистр, в котором данный бит расположен.
Для команд передачи управления и операций с константами, k обозначает восьми- или одиннадцатибитную константу.
Почти все команды выполняются в течение одного командного цикла. В двух случаях исполнение команды занимает два командных цикла:
Один командный цикл состоит из четырех периодов
Основные
(рис 5.15) Основные форматы команд.| Мнемоника | Описание команды | Циклы | Биты состояния | Прим. |
|---|---|---|---|---|
ADDWF f, d |
Сложение W с f |
1 | C, DC, Z |
1, 2 |
ANDWF f, d |
Логическое И W и f |
1 | Z |
1, 2 |
CLRF f |
f |
1 | Z |
2 |
CLRW |
W |
1 | Z |
|
COMF f, d |
Инверсия регистра f |
1 | Z |
1, 2 |
DECF f, d |
f |
1 | Z |
1, 2 |
DECFSZ f, d |
f, пропустить команду, если 0 |
1(2) | 1, 2, 3 | |
INCF f, d |
Инкремент регистра f |
1 | Z |
1, 2 |
INCFSZ f, d |
Инкремент f, пропустить команду, если 0 |
1(2) | 1, 2, 3 | |
IORWF f, d |
W и f |
1 | Z |
1, 2 |
MOVF f, d |
Пересылка регистра f |
1 | Z |
1, 2 |
MOVWF f |
Пересылка W в f |
1 | ||
|
Холостая команда | 1 | ||
RLF f, d |
Сдвиг f влево через перенос |
1 | C |
1, 2 |
RRF f, d |
Сдвиг f вправо через перенос |
1 | C |
1, 2 |
SUBWF f, d |
Вычитание W из f |
1 | C, DC, Z |
1, 2 |
SWAPF f, d |
Обмен местами тетрад в f |
1 | 1, 2 | |
XORWF f, d |
Исключающее ИЛИ W и f |
1 | Z |
1, 2 |
BCF f, b |
f |
1 | 1, 2 | |
BSF f, b |
Установка бита в регистре f |
1 | 1, 2 | |
BTFSC f, b |
Пропустить команду, если бит в f равен нулю |
1(2) | 3 | |
BTFSS f, b |
Пропустить команду, если бит в f равен единице |
1(2) | 3 | |
ADDLW k |
Сложение константы и W |
1 | C, DC, Z |
|
ANDLW k |
Логическое И константы и W |
1 | Z |
|
CALL k |
Вызов подпрограммы | 2 | ||
CLRWDT - |
|
1 | /TO, /P |
|
GOTO k |
Переход по адресу | 2 | ||
IORLW k |
W |
1 | Z |
|
MOVLW k |
Пересылка константы в W |
1 | ||
RETFIE - |
Возврат из прерывания | 2 | ||
RETLW k |
Возврат из подпрограммы с загрузкой константы в W |
2 | ||
RETURN - |
Возврат из подпрограммы | 2 | ||
|
Переход в режим |
1 | /TO, /P |
|
SUBLW k |
Вычитание W из константы |
1 | C, DC, Z |
|
XORLW k |
Исключающее ИЛИ константы и W |
1 | Z |
|
Примечания к таблице: MOVF PORTB,1 ), то используется значение, считываемое с выводов. Например, если в выходной защелке порта, включенного на ввод, находится "1", а внешнее устройство формирует на этом выводе "0", то в разряде данных будет записан "0".TMRO (и, если допустимо, d=1 ), то предварительный делитель, если он подключен к TMRO, будет сброшен.. |
||||
Команды работы с байтами используются в
Преимуществом f. При этом доступ возможен только к данным, расположенным в пределах текущего банка данных. Адресация данных может осуществляться и с помощью индексного регистра , путем обращения к регистру INDF, расположенному по нулевому адресу.
Пересылка данных выполняется с помощью двух команд: MOVF и MOVWF, назначение которых существенно различается. Команда MOVF используется для установки бита нулевого результата в зависимости от содержимого определенного регистра и может применяться для его загрузки в регистр w. Команда MOVWF используется для записи содержимого рабочего регистра w в указанный регистр МК. Если в качестве этого регистра указывается INDF, то адрес регистра назначения выбирается из регистра . При выполнении данной команды биты состояния не изменяются.
Специальные команды CLRF f и CLRW применяются для очистки регистров МК. Команда CLRF f записывает ноль в указанный регистр, а команда CLRW – в рабочий регистр. При этом необходимо помнить, что они также устанавливают соответствующее значение бита нуля.
Наиболее часто используемой арифметической операцией является сложение, которое выполняется командой ADDWF f,d. Эта операция может изменять все биты состояния. Бит нуля устанавливается в 1, если при выполнении логической операции "И" над полученным результатом и числом 0x0FF (255) получается ноль. Бит переноса устанавливается в 1, если результат превышает число 0x0FF. Бит десятичного переноса устанавливается в 1, если сумма четырех младших битов результата превышает 0x0F (15).
При использовании операции вычитания SUBWF f, d следует иметь в виду, что в d = f – w в действительности выполняется d = f + (-w). Отрицательное значение содержимого w вычисляется по формуле Negw = (Posw ^ 0x0FF) + 1.
Команды логических операций ANDWF f, d, IORWF f, d и XORWF f, d позволяют выполнять основные логические операции над соответствующими битами содержимого указанного регистра и регистра w. Бит нуля в регистре STATUS устанавливается в 1 или сбрасывается в 0 в зависимости от значения полученного результата. Команду XORWF f, d удобно использовать для проверки содержимого некоторого регистра. Для этого необходимо загрузить заданное число в регистр w и выполнить операцию XORWF f, d над содержимым проверяемого регистра и w. Если содержимое регистра равно содержимому w, то результат операции будет равен нулю, и бит нуля установится в 1.
Команда COMF f, d используется для Neg = (.
Команда SWAPF f, d меняет местами тетрады в регистре. Как и в остальных командах данной группы, результат выполнения может быть записан как в регистре w, так и в регистре-источнике. Данная команда не меняет значения какого либо из битов состояния, что может использоваться для восстановления содержимого контекстных регистров перед возвратом из прерывания. Команду SWAPF f, d можно применять, в частности, для хранения двух цифр в одном регистре, переставляя их в зависимости от того, какую из них вы хотите использовать. С помощью команды SWAPF f, d удобно разделить байт на две тетрады для их последующего отображения на дисплее.
Основной функцией команд циклического сдвига RLF f, d и RRF f, d является сдвиг содержимого регистра влево или вправо на один бит с записью на место младшего значащего бита значения бита переноса или, соответственно, установления бита переноса в соответствии со значением старшего значащего бита. Команды циклического сдвига могут использоваться для умножения и деления на число 2 в степени n. Они также служат для реализации последовательного ввода или вывода данных и позиционирования байта для того, чтобы можно было тестировать значение отдельных битов.
Команды инкремента 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 пропускается следующая за ней команда. Это означает, что команды INCFSZ f, d и DECFSZ f, d могут использоваться для организации программных циклов. Другая особенность этих команд состоит в том, что они не влияют на содержимое битов состояния регистра STATUS.
Команда означает отсутствие операции. Традиционно она используется для двух целей. Первая – обеспечение синхронизации программы с временными характеристиками различных устройств системы. Вторым возможным вариантом является использование команды для удаления части программного кода. Вследствие того, что код команды состоит из одних нулей, его легко ввести в
Отличительной особенностью данной группы команд является то, что они оперируют с однобитными операндами, в качестве которых используются отдельные биты регистров МК.
Установка и BSF f, b и BCF f, b. Любой доступный для записи бит в регистровой памяти может быть модифицирован таким способом. При этом гарантируется, что ни один из остальных битов регистра не будет изменен.
Однако при работе с портами ввода/вывода последнее утверждение не всегда справедливо. Связано это с тем, что значение числа, считываемого из регистра порта, зависит от
В INCFSZ f, d и DECFSZ f, d удобны для организации циклов в программе.
Для управления процессом выполнения программы используются команды работы с битами BTFSC f, b и BTFSS f, b, позволяющие пропустить выполнение следующей команды программы в зависимости от состояния определенного бита в заданном регистре.
Если в качестве заданного регистра используется регистр STATUS, то можно организовать управление переходами программы в зависимости от состояния битов признаков результата операции, как предусмотрено в микропроцессорах стандартной архитектуры.
Команды работы с константами используют при выполнении операции явно заданные операнды, которые являются частью команды.
Команда MOVLW k используется для записи константы k в рабочий регистр w. Содержимое регистра STATUS при этом не изменяется.
Команда ADDLW k прибавляет непосредственно заданную величину к содержимому регистра w. Эта команда изменяет значения битов нуля, переноса и десятичного переноса таким же образом, как и команда ADDWF f, d.
Команда SUBLW k вычитает содержимое регистра w из заданного значения константы k. В отличие от SUBWF f, d, результат выполнения команды SUBLW k можно представить в следующем виде: w = k + (w ^ 0x0FF) + 1. С помощью этой команды удобно изменять знак содержимого регистра w, используя ее следующим образом: SUBLW 0.
Команды логических операций ANDLW k, IORLW k и XORLW k выполняют побитно соответствующие операции над содержимым регистра w и непосредственно заданной константой k. Эти команды, как и команды работы с байтами, устанавливают только бит нуля в регистре STATUS в соответствии с результатом операции. Полученный результат сохраняется в регистре w.
С помощью команды IORLW 0 удобно определять равенство нулю содержимого регистра w. В зависимости от результата этой операции бит нуля будет установлен в 1 или сброшен в 0.
Команда RETLW k используется для возврата из подпрограммы с установкой начальных условий в регистр w, а также для реализации табличных преобразований, что будет описано ниже. Перед возвращением из подпрограммы эта команда осуществляет загрузку непосредственно заданной величины в рабочий регистр w.
Команды GOTO k, CALL k, RETURN и RETFIE используются для управления программой.
Команды GOTO k и CALL k могут явно задавать адрес перехода в пределах определенной страницы, размер которой зависит от типа МК: 256/512 адресов для младших моделей, 2К адресов для PCLATH должен содержать правильную информацию о новой странице.
Команда CALL k выполняется практически так же, как и GOTO k, за исключением того, что указатель на следующую страницу сохраняется в стеке счетчика команд.
Для RETLW k, RETURN и RETFIE. При каждом из этих способов значение адреса извлекается из вершины стека и загружается в
Обычное использование команды RETURN приводит к восстановлению адреса команды, следующей за командой вызова подпрограммы. При этом содержимое каких-либо регистров не изменяется, как и значения отдельных битов.
Команда RETFIE используется для возврата из прерывания. Она реализуется аналогично команде RETURN за исключением того, что при ее выполнении устанавливается в 1 бит GIE в регистре управления прерываниями INTCON. Это позволяет после выполнения данной команды немедленно перейти к обработке прерываний, ожидающих своей очереди. В противном случае перед окончанием обработки потребовалась бы проверка наличия запросов других прерываний, и, в случае их поступления, переход к их обработке.
Существует всего две команды, служащие для непосредственного управления функционированием МК. Первая из них – CLRWDT – используется для – обеспечивает сохранение текущего состояния МК в
Команда CLRWDT сбрасывает в 0 содержимое и пределителя (если он используется для установки интервала времени срабатывания ), запуская сначала отсчет времени CLRWDT является предотвращение перезапуска МК при нормальном выполнении программы.
Команда служит для двух целей. Первой из них является отключение МК после того, как он закончит выполнение программы. Такое использование МК предполагает, что он необходим только для решения определенной задачи, например, инициализации других устройств в системе, а затем его функционирование не требуется.
Второй целью использования команды является реализация в МК позволяет избежать необходимости организации циклов ожидания, а также снизить потребляемую системой мощность.
При этом необходимо иметь в виду, что выход МК из нельзя использовать в тех случаях, когда требуется быстрая реакция на внешнее событие.
Анализ архитектуры
RISC - w, а затем переслать его содержимое в нужную ячейку памяти данных:movlw k movwf fАналогично, все бинарные арифметико-логические операции приходится выполнять с привлечением рабочего регистра
w ;STATUS (для PIC16) или BSR (для PIC17). На этапе трансляции принадлежность указанного регистра текущему активному банку проверить невозможно, для этого требуется моделирование хода выполнения программы;CALL и GOTO должны быть правильно установлены биты выбора текущей страницы в регистре PCLATH. На этапе трансляции невозможно проверить корректность передачи управления во время выполнения, для этого также требуется моделирование выполнения программы;Указанные особенности архитектуры
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.