Объявление

Свернуть
Пока нет объявлений.

Система команд PIC-контроллеров серии PIC16C8X

Свернуть
X
Свернуть
  •  

  • Система команд PIC-контроллеров серии PIC16C8X

    Каждая команда контроллеров серии PIC16C8X представляет собой 14-разрядное слово, содержащее поле кода операции OPCODE и поле операндов. Система команд включает в себя команды работы с байтами, команды работы с битами, команды управления и операции с константами.
    Для команд работы с байтами "f" обозначает регистр, с которым производится действие, а бит "d" определяет регистр назначения. При "d"=0 результат помещается в регистр W, при "d"=1 результат помещается в регистр "f", заданный в команде.
    Для команд работы с битами "b" обозначает номер бита, участвющего в команде, а "f" - регистр, в котором этот бит расположен.
    Для команд управления и операций с константами "k" обозначает 8- или 11-битовую константу или идентификатор.
    Все команды выполняются в течение одного командного цикла, кроме следующих двух случаев:
    • Переход по проверке условия, если результат проверки условия - истина.
    • Изменение счетчика команд как результат выполнения команды.
    В этих случаях команда выполняется за два цикла с выполнением второго цикла как NOP. Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время выполнения команды составит 1 мкс. Если выполняется переход по проверке условия или в результате выполнения команды изменился счетчик команд, время выполнения этой команды при тактовой частоте 4 МГц составит 2 мкс.
    Принятые обозначения

    f: Адрес регистра
    W: Рабочий регистр
    b: Номер бита в 8-ми разрядном регистре
    k: Константа
    x: Не используется. Ассемблер формирует код с х=0
    d: Регистр назначения:
    d=0 - результат в регистре W
    d=1 - результат в регистре f.
    По умолчанию d=1
    label: Имя метки
    TOS: Вершина стека
    РС: Счетчик команд
    ТО: Тайм-аут
    PD: Выключение питания
    dest: Регистр назначения: рабочий регистр W или регистр, заданный в команде
    []: Необязательные параметры
    (): Содержание
    -->: Присвоение
    <>: Битовое поле
    О: Из набора
    Обозначение Функция Циклы Код команды Биты состояния Примечания
    ADDLW Сложение константы и W 1 11 111x kkkk kkkk C, DC, Z
    ADDWF Сложение W c f 1 00 0111 dfff ffff C, DC, Z 1, 2
    ANDLW Логическое И константы и W 1 11 1001 kkkk kkkk Z
    ANDWF Логическое И W и f 1 00 0101 dfff ffff Z 1, 2
    BCF Сброс бита в регистре f 1 01 00bb bfff ffff 1, 2
    BSF Установка бита в регистре f 1 01 01bb bfff ffff 1, 2
    BTFSC Пропустить команду, если бит в f равен нулю 1 (2) 01 10bb bfff ffff 3
    BTFSS Пропустить команду, если бит в f равен единице 1 (2) 01 11bb bfff ffff 3
    CALL Вызов подпрограммы 2 10 0kkk kkkk kkkk
    CLRF Сброс регистра f 1 00 0001 1fff ffff Z 2
    CLRW Сброс регистра W 1 00 0001 0xxx xxxx Z
    CLRWDT Сброс сторожевого таймера WDT 1 00 0000 0110 0100 __ __
    TO, PD
    COMF Инверсия регистра f 1 00 1001 dfff ffff Z 1, 2
    DECF Декремент регистра f 1 00 0011 dfff ffff Z 1, 2
    DECFSZ Декремент f, пропустить команду, если 0 1 (2) 00 1011 dfff ffff 1, 2, 3
    GOTO Переход по адресу 2 10 1kkk kkkk kkkk
    INCF Инкремент регистра f 1 00 1010 dfff ffff Z 1, 2
    INCFSZ Инкремент f, пропустить команду, если 0 1 (2) 00 1111 dfff ffff 1, 2, 3
    IORLW Логическое ИЛИ константы и W 1 11 1000 kkkk kkkk Z
    IORWF Логическое ИЛИ W и f 1 00 0100 dfff ffff Z 1, 2
    MOVF Пересылка регистра f 1 00 1000 dfff ffff Z 1, 2
    MOVLW Пересылка константы в W 1 11 00xx kkkk kkkk
    MOVWF Пересылка W в f 1 00 0000 1fff ffff
    NOP Холостая команда 1 00 0000 0xx0 0000
    OPTION Загрузка регистра OPTION 1 00 0000 0110 0010
    RETFIE Возврат из прерывания 2 00 0000 0000 1001
    RETLW Возврат из подпрограммы с загрузкой константы в W 2 11 01xx kkkk kkkk
    RETURN Возврат из подпрограммы 2 00 0000 0000 1000
    RLF Сдвиг f влево через перенос 1 00 1101 dfff ffff C 1, 2
    RRF Сдвиг f вправо через перенос 1 00 1100 dfff ffff C 1, 2
    SLEEP Переход в режим SLEEP 1 00 0000 0110 0011 __ __
    TO, PD
    SUBLW Вычитание W из константы 1 11 110x kkkk kkkk C, DC, Z
    SUBWF Вычитание W из f 1 00 0010 dfff ffff C, DC, Z 1, 2
    SWAPF Обмен местами тетрад вf 1 00 1110 dfff ffff 1, 2
    TRIS Загрузка регистра TRIS 1 00 0000 0110 0fff
    XORLW Исключающее ИЛИ константы и W 1 11 1010 kkkk kkkk Z
    XORWF Исключающее ИЛИ W и f 1 00 0110 dfff ffff 1, 2
    Примечание:
    1. Если модифицируется регистр ввода/вывода (например, MOVF PORTB,1), то используется значение, считываемое с выводов. Например, если в выходной защелке порта, включенного на ввод, находится "1", а внешнее устройство формирует на этом выводе "0", то в этом разряде данных будет записан "0".
    2. Если операндом команды является содержимое регистра TMRO (и, если допустимо, d=1), то предварительный делитель, если он подключен к TMRO, будет сброшен.
    3. Если в результате выполнения команды изменяется счетчик команд, или выполняется переход по проверке условия, то команда выполняется за два цикла. Второй цикл выплняется как NOP.

      Возможность размещать комментарии к сообщениям отключена.

    Метки статей

    Свернуть

    Меток пока нет.

    Новые статьи

    Свернуть

    • «NO EXCUSES» — специальная программа компании MOTOROLA
      от admin
      Дмитрий Панфилов
      «NO EXCUSES» — специальная программа компании MOTOROLA

      Ни для кого не секрет, что микропроцессоры и микроконтроллеры находят самое широкое применение в различных областях науки и техники. Сегодня трудно указать область электроники, где не использовались бы микроконтроллеры. Количество...
      10.02.2017, 14:56
    • Частотомер на PIC16F873 с двух строчным ЖКИ способный измерять частоты
      от admin
      alt="" />Частотомер на PIC16F873 с двух строчным ЖКИ способный измерять частоты от 10Гц до 45МГц. Чувствительность по входу около 50мВ, входное сопротивление 250 Ком, входная ёмкость 15пФ. Питание девятивольтная батарея 6F22.В память можно вносить значения, которые будут, прибавлены к входной частоте...
      10.02.2017, 14:56
    • Управление нагрузкой 220В переменного напряжения с использованием симисторов
      от admin
      Для плавного управления нагрузкой, например, лампой освещения, можно использовать симистор. Открывается симистор током при подачи на управляющий электрод импульса. Закрывается, когда ток, проходящий через него, становится равным нулю, когда переменное напряжение меняет знак.
      ...
      10.02.2017, 14:56
    • Управление модулем Ke-USB24A из Excel
      от admin
      Всю прелесть программирования USB модуля Ke-USB24A можно оценить когда встает вопрос о необходимости написания программы на каком-либо не очень широко распространенном языке или для какой-либо среды, которая, казалось бы не предусматривает возможность работы с USB устройствами....
      10.02.2017, 14:55
    • Управление матрицей 8х8 - легко!
      от admin
      Матрица управляется так же как и 7-сегментные индикаторы - динамически. Мега16 портом А управляет одной координатой (выбирает сторку для вывода инфы), порт С - выводит ту самую информацию. Информация берётся из массива.
      />

      />
      Что бы пользоваться редактором, нужно переменную STROKA из примера переименовать в rows_arr.
      Вложения: matrica8x8.fcf_avr (56 Кб) Любители ПИКов, вам не составит труда пореколбасить этот п...
      10.02.2017, 14:55
    • То, что улучшает нашу жизнь (микросхемы для домашних и игровых устройств)
      от admin
      Журнал «Компоненты и технологии» №8 2001 г.
      Ракович Н. Н.

      "В человеке все должно быть прекрасно… и у него в доме тоже"
      (Почти по А. П. Чехову)
      В последнее время при чтении профессиональных электронных журналов и статей, посвященных использованию электронных компонентов, у меня возникло и окрепло унылое ощущение, что вся гигантская...
      10.02.2017, 14:55
    Обработка...
    X