PIC16C5XОбщие сведения. Система команд контроллеров PIC16C5X состоит из 33 ин­струкций. Использование RISC архитектуры обеспечивает выполнение:

●     26 команд за один цикл;

●     4 условных команд (DECFSZ, INCFSZ, BTFSC, BTFSS) за один цикл, если резуль­тат проверки условия не равен нулю, и за два цикла в противном случае;

●     3 команд (CALL, GOTO, RETLW) за два цикла.

Форматы команд. Каждая команда представляет собой 12–разрядный двоичный код (слово). В коде команды выделяются поля (разряды), в которых указываются выполняемая операция, адреса ячеек памяти операндов–источников и приемника (результата). Совокупность полей образует формат команды. В за­висимости от количества полей в формате команды можно выделить три группы команд (рис. 6.4.1):

●     команды, формат которых содержит три поля:

•      OPCODE — код операции;

•      f — адрес регистра с требуемым операндом (или битом). Другой операнд в двуместных операциях всегда находится в регистре W;

•      d — регистр назначения (destination): при d = 0 результат операции поме­щается в рабочий регистр W, при d = 1 — в регистр f, заданный в команде;

•      b — номер бита, участвующего в операции;

●     команды, формат которых содержит два поля:

•      OPCODE — код операции;

•      f — адрес регистра общего назначения (в операциях загрузки);

•      к — 8– или 9–битная константа (в операциях с константами и передачи уп­равления);

●     безадресные команды, формат которых состоит из одного поля — кода опе­рации OPCODE.

рис. 6.4.1

Описание команд. Для компактного изложения выделим и рассмотрим четы­ре группы команд и представим материал в табличной форме.

Операции с байтами. В эту группу включено 18 операций (табл. 6.4.1), при этом назначению dest при d = 0 соответствует рабочий регистр W, а при d = 1 — адресуемый регистр f. Во всех командах за исключением TRIS f значение f в десятичных числах лежит в пределах 0 ≤ f 31.

табл. 6.4.1

Операции с битами. Во всех командах этой группы (табл. 6.4.2) значения адреса регистра f и номера бита b должны лежать в следующих пределах: 0 ≤ f ≤ 31, 0 ≤ b ≤ 7.

табл. 6.4.2

Операции с константами и команды передачи управления. Кон­станты должны быть расположены в памяти программ. Для работы с ними ис­пользуется непосредственная адресация (IMM). Контроллер оперирует с констан­тами двух форматов, для которых в мнемонике команды используется общая абб­ревиатура константы k (рис. 6.4.1).

В командах загрузки и логических операций используются 8–разрядные кон­станты (табл. 6.4.3), поскольку их разрядность должна совпадать с разрядностью второго операнда и регистра результата. Значение константы лежит в пределах 0 ≤ k ≤ 255. Кроме того, 8–разрядная константа k используется как адрес вызыва­емой подпрограммы и возврата в коде команд CALL и RETLW. Единственной ко­мандой, которая использует 9–разрядную константу в качестве абсолютного ад­реса первой команды вызываемой подпрограммы, является команда безусловно­го перехода GOTO k.

табл. 6.4.3

Безадресные команды. В командах этой группы (табл. 6.4.4) адресуемый объект и выполняемое действие задается мнемоникой, например, CLRWCLR (clearing — очистка) регистра W.

табл. 6.4.4

В табл. 6.4.5 приведено распределение команд по функциональному признаку.

табл. 6.4.5

Об использовании способов адресации. В командах с байтами (табл. 6.4.1) и битами (табл. 6.4.2) для обращения к регистрам специальных функций и об­щего назначения используется прямая (DIR) и косвенная (INDIR) адресация (рис. 6.3.1).

В мнемонике команд с прямой адресацией OPCODE f,d эти регистры обознача­ются символом f, в качестве которого может фигурировать 16–ричный адресный код или обозначение регистра, например: ADDWF 04h,d или ADDWF FSR,d.

При косвенной адресации используется дополнительный регистр FSR, в кото­ром хранится адрес вызываемых данных. Биты 6 и 5 FSR служат для выбора банка, а пять младших бит (4–0) адресуют ячейку памяти в пределах банка (адреса ячеек 00h... 1Fh). Обращение к требуемому байту данных осуществляется через псевдо–регистр INDF, для чего в мнемонике команды указывается наименование (INDF) или адрес (00h) псевдорегистра, например, ADDWF INDF,d или ADDWF 0,d. Отме­тим, что чтение косвенным способом самого регистра INDF даст результат 00h (т е. FSR = 0), а запись в регистр INDF не приведет к изменению его содержимого (хотя биты состояния в регистре STATUS могут быть изменены).

При написании программ необходимо иметь в виду, что разряды 6 и 5 регист­ра косвенной адресации FSR определяет адрес ячейки памяти не только при использовании косвенной адресации, но и при прямой адресации, так как непо­средственно в коде команды с прямой адресацией указывается лишь 5–разряд­ный адрес ячейки.

Регистры W, OPTION и TRIS не имеют собственных адресов в карте памяти, по­этому для работы с ними используются специальные команды с неявной адреса­цией (команды MOVWF f, MOVLW k, OPTION и TRIS f). Для очистки регистров так­же используется команда CLRF f с неявной адресацией.

Для работы с константами (табл. 6.4.3) используется непосредственная адре­сация (IMM), так как константа k представляет собой непосредственный операнд, участвующий в логической операции или предназначенный для загрузки в ре­гистр–приемник. Все команды используют 8–разрядные константы, кроме коман­ды безусловного перехода GOTO к, в которой (0 ≤ k ≤ 511).

Особенности выполнения команд. Организация циклов. Из входных импульсов с частотой fOSC = 1/TOSC. поступающих с вывода OSC1/CLKIN микроконт­роллера на внутренний преобразователь, формируются четыре циклические не­перекрывающиеся тактовые последовательности Q1, Q2, Q3 и Q4 с частотой следования fOSC/4. Процесс выполнения команды включает два цикла: цикл выборки и цикл выполнения команды. Цикл состоит из четырех тактов Q1...Q4 длительностью TOSC каждый.

В такте Q1 цикла выборки происходит увеличение содержимого счетчика, в последующих тактах — считывание команды из памяти программ, в такте Q4 — ее запись в регистр команд. Декодирование и выполнение команды осуществля­ется в тактах Q1 ...Q4,последующего цикла выполнения.

Использование двухступенчатого конвейера позволяет совместить во времени оба цикла, поэтому эффективное время выполнения для большинства команд со­ставляет один цикл (рис. 6.4.2).

рис. 6.4.2

Если команда изменяет содержимое счетчика команд (например, команда GOTO), то для ее выполнения потребуется два цикла. В цикле выборки новый ад­рес заносится в счетчик команд.

В такте Q1 цикла выполнения команды выбранная команда защелкивается в регистр команд. В течение тактов Q2, Q3 и Q4 происходит декодирование и вы­полнение команды (в такте Q2 чтение операнда из памяти данных, в такте Q4 за­пись результата в память).

Команды, изменяющие содержимое PC. К таким командам, помимо команд CALL, GOTO, относятся все команды, в которых регистром f является счетчик команд PC. При выполнении команд модификации счетчика, например, MOVWF PC (рис. 6.3.2):

●     в младший байт PCL счетчика команд загружается содержимое рабочего ре­гистра W;

●     бит 8 сбрасывается в 0;

●     в разряды 9, 10 записываются значения бит РА0, РА1 из регистра состояния STATUS.

Наличие 0 в разряде 8 свидетельствует о том, что доступны только первые 256 адресов каждой страницы памяти программ.

Так как команда CALL k (k = 0...255) предписывает использование только 8–разрядного адреса, начальный адрес вызываемой подпрограммы также распо­лагается в первых 256 ячейках памяти программ текущей страницы. Команда GOTO k (k = 0...511) может передать управление только в пределах текущей стра­ницы памяти программ.

При достижении границы страницы счетчик команд автоматически переходит на начало следующей страницы. Однако биты выбора страницы в регистре состо­яния STATUS не изменяются автоматически. Поэтому, если биты РА1, РА0 не бу­дут изменены программно, последующие команды MOVWF PC, CALL, GOTO воз­вратят управление к предыдущей странице.

После сброса контроллера:

●     регистр STATUS находится в состоянии 0001 1ФФФ (Ф = 0 или 1), поэтому биты РА1, РА0 выбора страницы указывают на страницу 0;

●     старший байт PCL счетчика команд находится в состоянии 1111 1111.

Следовательно, после сброса счетчик команд PC содержит код 001 1111 1111, что соответствует странице 0 (00) и последней ячейке памяти последней страни­цы (для PIC16C54 состояние после сброса равно 1FFh = 1 1111 1111). Поэтому, если по стартовому адресу будет расположена команда GOTO к, управление бу­дет передано на следующую нулевую страницу.

Команды BCF и BSF. Команды сброса (BCF) и установки (BSF) бита в реги­стре f считывают байт целиком, модифицируют один бит и выводят результат в приемник, т. е. выполняются в режиме чтение–модификация–запись. При обра­щениях к портам команды BCF и BSF могут вызвать ошибочный результат, так как с помощью команды TPIS одни выводы порта запрограммированы как входы, дру­гие — как выходы.

Пример. Пусть к биту 3 регистра PORTB обращается команда BSF, которая сна­чала считывает все восемь бит, затем выполняет установку бита 3 в 1, после чего модифицированный байт целиком записывается в выходную защелку порта. Если другой бит (например, бит 4) регистра PORTB в данный момент определен как вход, входной сигнал на этом выводе будет считан и записан обратно в выходную защелку этого же вывода, затирая ее предыдущее состояние. Если позднее линия 4 переключится в режим выхода, ее состояние может оказаться оши­бочным.

Возможность такой ситуации должна быть учтена при программировании порта. Другая особенность, которая должна учитываться при программировании: запись в порт вывода происходит в конце цикла выполнения команды, а чтение в начале.

При чтении данные должны быть стабильны в начале цикла выполнения коман­ды. Поэтому при операциях чтения, следующих сразу же за записью в тот же порт необходимо учитывать инерционность установления напряжения на выводах. Мо­жет потребоваться программная задержка (команда NOP), чтобы напряжение на выводе успело стабилизироваться до начала исполнения следующей команды чтения.


Рекомендуйте эту статью другим!



рис. 3.25
дек 29, 2016 554

Особенности выходных каскадов цифровых микросхем

Часто возникает необходимость подключения выходов нескольких цифровых микросхем к одной…
Микроконтроллеры MCS51
дек 01, 2015 1125

Микроконтроллеры MCS–51. Блок последовательного интерфейса, блок таймеров, блок прерываний. Часть 2.

Блок последовательного интерфейса. Назначение и состав блока. Блок последовательного…
Электропроводка в подвалах и чердаках 2
дек 09, 2013 1399

Электропроводка в подвалах и чердаках

В первую очередь, следует отметить, что подвальные и чердачные помещения принадлежат к…
рис. 2.78 а
дек 02, 2016 621

Сглаживающие фильтры

Выпрямленное напряжение имеет существенные пульсации, поэтому широко используют…
янв 31, 2013 4718

Муфты силовых кабелей, соединительные, концевые, марки, конструкция муфт

Для оконцевания кабелей, а также для соединения строительных длин кабелей применяются…