Основы микропроцессорной техники | |
Раздел 5. Однокристальный микроконтроллер серии PIC | |
| «Структура курса | Глава 1 | Глава 2 | Глава 3 | Глава 4 | Глава 5 | Глава 6 | Раздел 7 | Глава 8 | Дополнения | |
| Раздел 5 - Страницы: « | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
5.3.3. Команды работы с битамиОтличительной чертой данной группы команд является то, что они оперируют с однобитных операндами, в качестве которых используются отдельные биты регистров МК. Установка и инициализация отдельных битов происходит командами BSF f, b и BCF f, b. Любой доступный для записи бит в реестровой памяти может быть модифицирован таким способом. При этом гарантируется, что ни один из других битов регистра не будет изменен. Однако при работе с портами ввода / вывода последнее утверждение не всегда справедливо. Связано это с тем, что значение числа, которое считывается из регистра порта, зависит от конфигурации его выводов как входы или выходы данных в системе команд, рассмотренных PIC МК, отсутствуют команды условного перехода. Вместо них есть такие, которые позволяют пропустить выполнение следующей команды. В частности, рассмотренные выше команды INCFSZ f, d и DECFSZ f, d удобны для организации циклов в программе. Для управления процессом выполнения программы используются команды работы с битами BTFSC f, b и BTFSS f, b, позволяющие пропустить выполнение следующей команды программы в зависимости от состояния определенного бита в заданном регистре. Если в качестве задающего регистра используется регистр STATUS, то можно организовать управление переходами программы в зависимости от состояния битов признаков результата операции, как предусмотрено в микропроцессорах стандартной архитектуры. 5.3.4. Команды управления и работы с константамиКоманды работы с константами используют при выполнении операции явно заданы операнды, которые являются частью команды. Команда 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К адресов для PIC МК среднего уровня (включая PIC16F8X) и 8К адресов для старших моделей МК. Если адрес перехода выходит за пределы страницы, то регистр PCLATH должен содержать правильную информацию о новой странице. Команда CALL k выполняется практически так же, как и GOTO k, за исключением того, что указатель на следующую страницу хранится в стеке счетчика команд. Для PIC МК средней группы существует три различных способа возвращения из подпрограммы, обусловлены командами RETLW k, RETURN и RETFIE. При каждом из этих способов значение адреса извлекается из вершины стека и загружается в счетчик команд. Эти адреса используются для возвращения из подпрограмм или прерываний. Обычное использование команды RETURN приводит к восстановлению адреса команды, которая следует за командой вызова подпрограммы. При этом содержимое никаких регистров не изменяется, как и значения отдельных битов. Команда RETFIE используется для возвращения из прерывания. Она реализуется аналогично команде RETURN за исключением того, что при ее выполнении устанавливается в 1 бит GIE в регистре управления прерываниями INTCON. Это позволяет после выполнения данной команды немедленно перейти к обработке прерываний, ожидающих своей очереди. В противном случае перед окончанием обработки нужна была бы проверка наличия запросов других прерываний, и, в случае их поступления, переход к их обработки. Существует всего две команды, которые служат для непосредственного управления функционированием МК. Первая из них - CLRWDT - используется для инициализации сторожевого таймера. Вторая - SLEEP - обеспечивает сохранение текущего состояния МК в режиме ожидания, пока не произойдет какая-либо внешнее событие, которое позволит PIC МК продолжить выполнение программы. Команда CLRWDT сбрасывает в 0 содержимое сторожевого таймера WDT и предильника (если он используется для установки интервала времени срабатывания WDT), запуская сначала отсчет времени сторожевого таймера. Целью введения команды CLRWDT является предотвращение перезапуска МК при нормальном выполнении программы. Команда SLEEP служит для двух целей. Первой из них является отключение МК после того, как он закончит выполнение программы. Такое использование МК предполагает, что он необходим только для решения определенной задачи, например, запуска других ус ройств в системе, а затем его функционирования не требуется. Второй целью использования команды SLEEP является реализация в МК режима ожидания какого-либо события. Существует три события, способные вывести МК из режима ожидания. Первой из них является подача сигнала запуска на вход инициализации МК, что приведет к перезапуску процессора и начала выполнения программы по нулевой адрес. Второй способ - поступления сигнала "пробуждения" МК от сторожевого таймера. Третьим способом "пробуждения" является прерывание от какого-либо внешнего источника. При любом способе "пробуждения" использование команды SLEEP позволяет избежать необходимости организации циклов ожидания, а также снизить потребляемую системой мощность. При этом необходимо иметь в виду, что выход МК из режима ожидания занимает, как минимум, 1024 такта. Поэтому команду SLEEP нельзя использовать в тех случаях, когда требуется быстрая реакция на внешнюю событие. 5.3.5. Особенности программирования и отладкиАнализ архитектуры микроконтроллеров PIC с точки зрения их программирования и отладки систем позволяет сделать следующие выводы:
Указанные особенности архитектуры микроконтроллеров PIC компенсируются чрезвычайно низкой цене, поэтому такие изделия (особенно семейства PIC16) очень популярны. В настоящее время их используют даже вместо логических ИС средней степени интеграции. Но реализовать все преимущества этих МК можно только при наличии средств программирования и отладки, адекватных по цене и функциональным возможностям решаемым задачам. Важнейшие требования к инструментальных средств для МК, ориентированные на выполнение функций ввода-вывода, можно сформулировать следующим образом:
| |
| «Структура курса Раздел 5 - Страницы: « | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |