Jump to content

Списки инструкций PIC

Набор PIC инструкций относится к набору инструкций, которые Microchip Technology PIC или dsPIC поддерживает микроконтроллер . Инструкции обычно программируются во флэш-памяти процессора и автоматически выполняются микроконтроллером при запуске.

Чипы PICmicro имеют гарвардскую архитектуру , а слова инструкций имеют необычный размер. Первоначально 12-битные инструкции включали 5 бит адреса для указания операнда памяти и 9-битные адресаты перехода. В более поздних версиях были добавлены биты кода операции, позволяющие использовать дополнительные биты адреса.

Это аккумуляторные машины , в которых общий аккумулятор «W» является одним операндом во всех инструкциях с двумя операндами.

В следующих таблицах наборов команд номера регистров обозначаются буквой «f», а константы — буквой «k». Номера битов (0–7) выбираются буквой «b». Арифметические инструкции записывают свой результат на один из входов, выбранных битом «d»: 0 указывает W, а 1 указывает, что результат записывается обратно в исходный регистр f. Флаги состояния C и Z могут быть установлены на основе результата; в противном случае они остаются неизмененными. Инструкции сложения и вычитания (но не поворота), которые устанавливают C, также устанавливают флаг DC (перенос цифры), перенос из бита 3 в бит 4, что полезно для BCD арифметики .

Архитектура

[ редактировать ]

Операнды памяти также называются «регистрами». Большинство из них представляют собой просто хранилище общего назначения (ОЗУ), а некоторые места зарезервированы для регистров специальных функций . За исключением одного аккумулятора (так называемого W), почти все остальные регистры отображаются в памяти, даже такие регистры, как программный счетчик ALU и регистр состояния . (Другими исключениями, которые не отображаются в памяти, являются стек адресов возврата и регистры с тремя состояниями, используемые для настройки выводов GPIO .)

Некоторые арифметические инструкции используют только один из своих входов, но все равно используют dкусочек. Например, MOVW копирует значение W до места назначения. При использовании с d = 1, это сохраняет W к f. При использовании с d = 0, это не выполняет никакой операции . Есть соответствие MOVF инструкция, которая выводит значение f. При использовании с d = 0, это загружает f в W. При использовании с d = 1, единственным видимым эффектом является установка нулевого флага в зависимости от значения f.

Набор инструкций не содержит инструкций условного перехода. Вместо этого он содержит инструкции условного пропуска, которые приводят к игнорированию следующей инструкции. Условный переход, за которым следует безусловный переход, выполняет условный переход. Инструкции пропуска проверяют любой бит любого регистра. Регистр состояния ALU является одной из возможностей.

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

Этот механизм также позволяет адресовать до 256 байт памяти, даже если набор команд допускает только 5- или 7-битные абсолютные адреса. Модели с большим количеством регистров (регистры специальных функций плюс ОЗУ), чем помещается в инструкцию, предоставляют несколько банков памяти и используют один из двух механизмов доступа к ним:

  1. Большинство базовых основных устройств и некоторые базовые устройства среднего уровня используют старшие биты регистра выбора файла для выбора текущего банка регистров.
  2. Более поздние модели имеют отдельный регистр выбора банка и MOVLB инструкция по его установке.

Процессоры PIC с более чем 256 словами программы используют страничную память. Внутренний программный счетчик и стек возврата имеют необходимую ширину для адресации всей памяти, но программному обеспечению видны только младшие 8 бит. PCL («ПК низкий») регистр. Существует дополнительный PCLATH Регистр («фиксация ПК высокая»), который модифицируется только программным обеспечением. Любая операция, в которой не указан полный адрес назначения (например, 9-битный адрес). GOTO или 8-битная запись в регистр PCL) заполняет дополнительные старшие биты из соответствующей части PCLATH. (Некоторые процессоры PIC18 расширяют это значение за пределы 16 бит с помощью регистра PCLATU для предоставления битов 16–23.)

Базовые базовые устройства (12 бит)

[ редактировать ]
12-битный набор инструкций PIC
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника С
?
С
?
Описание
0 0 0 0 0 0 0 код операции Разные инструкции
0 0 0 0 0 0 0 0 0 0 0 0 НЕТ Нет операции (MOVW 0,W)
0 0 0 0 0 0 0 0 0 0 1 0 ВАРИАНТ Скопируйте W в регистр OPTION
0 0 0 0 0 0 0 0 0 0 1 1 СПАТЬ Перейти в режим ожидания
0 0 0 0 0 0 0 0 0 1 0 0 CLRWDT Перезапустить сторожевой таймер
0 0 0 0 0 0 0 0 0 1 ж ТРИС ф Скопируйте W в регистр с тремя состояниями ( f = 1, 2 или 3)
0 0 0 0 0 0 0 1 0 к МОВЛБ в * Установить регистр выбора банка на k
0 0 0 0 0 0 0 1 1 1 1 0 ВОЗВРАЩАТЬСЯ Возврат из подпрограммы, W без изменений
0 0 0 0 0 0 0 1 1 1 1 1 РЕТФИ Возврат из прерывания; возврат и разрешение прерываний
0 0 код операции д зарегистрироваться Операции АЛУ: dest ← OP(f,W)
0 0 0 0 0 0 1 ж MOVWF f е ← Вт
0 0 0 0 0 1 д ж ЦЛР ж , д С dest ← 0, обычно пишется CLRW или CLRF f
0 0 0 0 1 0 д ж СУБВФ ж , д С С dest ← f−W (dest ← f+~W+1)
0 0 0 0 1 1 д ж DECF f , d С dest ← f−1
0 0 0 1 0 0 д ж ИОРВФ ф , д С место ← ж | W, логическое включительно или
0 0 0 1 0 1 д ж ANDWF ж , д С dest ← f & W, логические и
0 0 0 1 1 0 д ж XORWF ж , д С dest ← f ^ W, логическое исключение или
0 0 0 1 1 1 д ж АДДВФ ж , д С С место ← f+W
0 0 1 0 0 0 д ж МОДВ ф , д С место ← ж
0 0 1 0 0 1 д ж КОМФ f , d С dest ← ~f, побитовое дополнение
0 0 1 0 1 0 д ж ИНФФ f , d С место ← f+1
0 0 1 0 1 1 д ж DECFSZ f , d dest ← f−1, затем пропустить, если ноль
0 0 1 1 0 0 д ж СБР ф , д С назначение ← CARRY<<7 | f>>1, повернуть вправо через перенос
0 0 1 1 0 1 д ж РЛФ ж , д С пункт ← F<<1 | CARRY, повернуть влево через перенос
0 0 1 1 1 0 д ж СВАПФ ф , д место ← f<<4 | f>>4, поменять местами полубайты
0 0 1 1 1 1 д ж ИНЦФСЗ ж , д dest ← f+1, затем пропустить, если ноль
0 1 опк кусочек зарегистрироваться Битовые операции
0 1 0 0 кусочек ж КБК f , б Очистить бит b из f
0 1 0 1 кусочек ж ЧФ ж , б Установить бит b из f
0 1 1 0 кусочек ж БТФСК ж , б Пропустить, если бит b в f чист.
0 1 1 1 кусочек ж БТФСС ж , б Пропустить, если установлен бит b в f.
1 0 опк к Контрольные передачи
1 0 0 0 к РЭТЛВ к Установите W ← k, затем вернитесь из подпрограммы
1 0 0 1 к ЗВОНИТЕ К Вызов подпрограммы, 8-битный адрес k
1 0 1 к ПЕРЕЙТИ к Перейти к 9-битному адресу k [1]
1 1 опк 8-битный немедленный Операции с W и 8-битным литералом: W ← OP(k,W)
1 1 0 0 к MOVLW в Вт ← к
1 1 0 1 к ИОРЛВ к С W ← к | W, побитовое логическое или
1 1 1 0 к АНДЛВ к С W ← k & W, поразрядно и
1 1 1 1 к XORLW к С W ← k ^ W, побитовое исключающее или
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника С
?
С
?
Описание

*: Расширенная инструкция, недоступная для большинства 12-битных PIC. Из моделей с расширенной оперативной памятью большинство (например, 16C5x, 16F5x) расширяют адресное пространство регистров, используя старшие биты FSR. Некоторые из них (например, PIC12F529T39A) имеют отдельный регистр выбора банка, который можно установить с помощью этой инструкции.
†: Расширенная инструкция доступна только для PIC «расширенного базового уровня». Только очень немногие модели (16F527, 16F570, MCV20A) с поддержкой прерываний (и 4-уровневым стеком) включают эти инструкции. Все такие модели также включают MOVLB.

Клоны ELAN Microelectronics (13 бит)

[ редактировать ]

Корпорация ELAN Microelectronics производит серию микроконтроллеров типа PICmicro с 13-битным командным словом. [2] Инструкции в основном совместимы с 14-битным набором команд среднего уровня, но ограничены 6-битным адресом регистра (16 регистров специального назначения и 48 байтов ОЗУ) и 10-битным (1024 слова) программным пространством.

10-битный программный счетчик доступен как R2. При чтении доступны только младшие биты, а при записи очищаются старшие биты. Исключением является инструкция TBL, которая изменяет младший байт, сохраняя при этом биты 8 и 9.

Семь инструкций, работающих непосредственно с аккумулятором, перенумерованы относительно 14-битного PICmicro, чтобы уместиться в 3 бита кода операции, а не в 4, но все они присутствуют, как и дополнительная инструкция программного прерывания.

Есть несколько дополнительных инструкций и некоторые изменения в терминологии (регистр PICmicro OPTION называется регистром CONTrol; регистры PICmicro TRIS 1–3 называются регистрами управления вводом/выводом 5–7), но их эквиваленты очевидный.

13-битный набор инструкций EM78 [3] [4]
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника С
?
С
?
Описание
0 0 0 0 0 0 0 код операции Разные инструкции
0 0 0 0 0 0 0 0 0 0 0 0 0 НЕТ * Нет операции (MOVW 0,W)
0 0 0 0 0 0 0 0 0 0 0 0 1 ДАА С Десятичная корректировка после сложения
0 0 0 0 0 0 0 0 0 0 0 1 0 ПРОДОЛЖЕНИЕ * Запись в регистр CONT (CONT ← W)
0 0 0 0 0 0 0 0 0 0 0 1 1 SLEP * Перейти в режим ожидания (WDT ← 0, остановить часы)
0 0 0 0 0 0 0 0 0 0 1 0 0 ВДТК * Перезапустить сторожевой таймер (WDT ← 0)
0 0 0 0 0 0 0 0 0 ж МОВ ф Скопировать W в регистр управления вводом/выводом ( f = 5–7, 11–15)
0 0 0 0 0 0 0 0 1 0 0 0 0 ОДИН Включить прерывания
0 0 0 0 0 0 0 0 1 0 0 0 1 Довольно Отключить прерывания
0 0 0 0 0 0 0 0 1 0 0 1 0 ВЕРНО Возврат из подпрограммы, W без изменений
0 0 0 0 0 0 0 0 1 0 0 1 1 РЕДКО Возврат из прерывания; возврат и разрешение прерываний
0 0 0 0 0 0 0 0 1 0 1 0 0 ПРОТИВ Чтение регистра CONT (W ← CONT)
0 0 0 0 0 0 0 0 1 ж ИОР ф Скопировать регистр управления вводом-выводом в W ( f = 5–7, 11–15).
0 0 0 0 0 0 0 1 0 0 0 0 0 ТБЛ С С PCL += W, сохранить биты PC 8 и 9.
0 0 код операции д зарегистрироваться Операции ALU аналогичны 12- и 14-битному PIC.
0 1 опк кусочек зарегистрироваться Битовые операции аналогичны 12- и 14-битному PIC.
1 0 с к Передача управления такая же, как и у 14-битного PIC.
1 1 код операции 8-битный немедленный Операции с W и 8-битным литералом: W ← OP(k,W)
1 1 0 на к MOV/IOR/AND/XOR, то же, что и 12-битный PIC
1 1 1 0 0 к РЭТЛВ к W ← k, затем возврат из подпрограммы
1 1 1 0 1 к SUBLW k С С W ← k−W (W ← k+~W+1)
1 1 1 1 0 0 к ИНТ к Нажмите PC, PC ← k (программное прерывание, обычно k=1)
1 1 1 1 1 к ADDLW k С С W ← k+W
1 1 1 1 0 1 код операции к Расширения (замена INT k на k ≥128 на более поздних моделях) [4] [5] [6]
1 1 1 1 0 1 0 0 0 к СТРАНИЦА k Выберите страницу ПЗУ k (например, MOVLP k ).
1 1 1 1 0 1 0 0 1 к БАНК К Выберите банк ОЗУ k
1 1 1 1 0 1 0 1 0 к LCALL к Длинный вызов с 17-битным адресом (инструкция из 2 слов)
1 1 1 1 0 1 0 1 1 к LJMP к Прыжок в длину с 17-битным адресом (инструкция из 2 слов)
1 1 1 1 0 1 1 ж ТБДР ф Считайте ПЗУ по адресу TBHP:TBLP в указанный регистр.
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника С
?
С
?
Описание

*: Тот же код операции, что и у 12-битного PIC.
†: Инструкция, уникальная для набора команд EM78, не имеющая эквивалента PIC.

Некоторые модели поддерживают несколько банков ПЗУ или ОЗУ, как и другие микроконтроллеры PIC.

Существует также 15-битный вариант набора команд, который практически идентичен, за исключением того, что номера регистров увеличены до 8 бит, а адреса вызова и перехода увеличены до 12 бит. Другие различия: [7]

  • Инструкции CONTW, IOW, CONTR, IOR и INT удаляются,
  • К операциям с 8-битным литералом добавляются два нулевых бита в качестве битов 8 и 9.
  • Расширения с 4-битным литералом имеют два нулевых бита, добавленных в качестве битов 4 и 5, и
  • Инструкции PAGE и BANK переименованы в SBANK и GBANK и выполняют переключение банков в регистрах специальных функций и оперативной памяти общего назначения соответственно.

15-битный набор команд второго поколения включает в себя несколько дополнительных инструкций:

Расширения 15-битного набора команд EM78/EM88 [8] [9]
1
4
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника С
?
С
?
Описание
0 0 0 0 0 0 0 0 код операции Разные инструкции
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 НЕТ * Нет операции (MOVW 0,W)
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ДАА * С Десятичная корректировка после сложения
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 SLEP * Перейти в режим ожидания (WDT ← 0, остановить часы)
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 ВДТК * Перезапустить сторожевой таймер (WDT ← 0)
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 МУЛВ 8×8 → 16-битное умножение
0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 ДИВВ 8÷8 → 8,8-битное деление
0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 ОДИН * Включить прерывания
0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 Довольно * Отключить прерывания
0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 ВЕРНО * Возврат из подпрограммы, W без изменений
0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 РЕДКО * Возврат из прерывания; возврат и разрешение прерываний
0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 ПЕРЕЗАГРУЗИТЬ Программный сброс
0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 TBWR Запись флэш-ПЗУ
0 0 0 0 0 0 0 0 1 к ИНТ к Программное прерывание по адресу 2×k
0 0 0 0 0 0 0 1 кусочек ж БТГ ж , б Инвертировать (переключить) бит b из f (ограниченный диапазон адресов)
0 0 код операции д зарегистрироваться Операции ALU такие же, как EM78 и PIC.
0 1 опк кусочек зарегистрироваться Битовые операции такие же, как EM78 и PIC.
1 0 с к Передача управления такая же, как у EM78 и 14-битного PIC.
1 1 код операции 0 0 8-битный немедленный Операции с 8-битным литералом такие же, как EM78 (кроме INT)
1 1 код операции зарегистрироваться или немедленно Расширения набора команд
1 1 0 0 0 0 1 ж JE р Пропустить, если W = f
1 1 0 0 0 1 0 ж JGE р Пропустить, если W > f
1 1 0 0 0 1 1 ж JLE р Пропустить, если W < f
1 1 0 0 1 0 1 к ИС к Пропустить, если W = k
1 1 0 0 1 1 0 к (сдержанный)
1 1 0 0 1 1 1 ж TBRDA f Считайте ROM по адресу TBHP:TBLP в f; мбит в W
1 1 0 1 0 0 1 к ГАК адрес Перейти на ПК + sext( k ), если установлен перенос
1 1 0 1 0 1 0 к SJNC Адрес Перейти на ПК + sext( k ), если перенести очистить
1 1 0 1 0 1 1 к СЖЗ Адрес Перейти на ПК + sext( k ), если установлен нулевой флаг
1 1 0 1 1 0 1 к СЖНЗ Адрес Перейти на ПК + sext( k ), если нулевой флаг сброшен
1 1 0 1 1 1 д ж РР в /RRA место ← f<<7 | f>>1, повернуть вправо без переноса
1 1 1 0 0 0 1 ж ХЧ ф Обмен f ↔ W
1 1 1 0 0 1 д ж RL f /RLA место ← f<<1 | f>>7, повернуть влево без переноса
1 1 1 0 1 0 1 ж МУЛ ф PRODH:PRODL ← f × W
1 1 1 0 1 1 х к (сдержанный)
1 1 1 1 0 0 д ж СУББ С С dest ← f + ~W + C, вычитание с переносом
1 1 1 1 0 1 0 0 0 0 0 к SBANK k * Выбор банка регистров специальной функции k
1 1 1 1 0 1 0 0 1 0 0 к ГБАНК к * Выберите банк ОЗУ k
1 1 1 1 0 1 0 1 0 0 0 к LCALL к * Длинный вызов с 19-битным адресом (инструкция из 2 слов)
1 1 1 1 0 1 0 1 1 0 0 к LJMP к * Прыжок в длину с 19-битным адресом (инструкция из 2 слов)
1 1 1 1 0 1 1 ж ТБДР ф * Считайте ROM по адресу TBHP:TBLP в f.
1 1 1 1 1 0 1 ж НЕГ f С С f ← ​​−f (f ← ~f + 1), отрицание
1 1 1 1 1 1 д ж АЦП f С С dest ← f + W + C, добавить с переносом

*: Тот же код операции, что и у 13-битного EM78.
†: Только на EM89F768N; операнды и результаты в специальных регистрах
‡: Только на EM88F794N, MTF213 и MTF351.

Базовые устройства среднего класса (14 бит)

[ редактировать ]

Эти устройства оснащены 14-битной кодовой памятью и улучшенным 8-уровневым стеком вызовов. Набор команд очень мало отличается от базовых устройств, но два дополнительных бита кода операции позволяют напрямую обращаться к 128 регистрам и 2048 словам кода. Есть несколько дополнительных различных инструкций и две дополнительные 8-битные литеральные инструкции: сложение и вычитание. Ядро среднего уровня доступно в большинстве устройств с маркировкой PIC12 и PIC16.

14-битный набор инструкций PIC
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника С
?
С
?
Описание
0 0 0 0 0 0 0 код операции Разные инструкции
0 0 0 0 0 0 0 0 0 0 0 0 0 0 НЕТ Нет операции (MOVW 0,W)
0 0 0 0 0 0 0 0 0 0 1 0 0 0 ВОЗВРАЩАТЬСЯ Возврат из подпрограммы, W без изменений
0 0 0 0 0 0 0 0 0 0 1 0 0 1 РЕТФИ Возврат из прерывания
0 0 0 0 0 0 0 1 1 0 0 0 1 0 ВАРИАНТ Скопировать W в регистр OPTION (устарело)
0 0 0 0 0 0 0 1 1 0 0 0 1 1 СПАТЬ Перейти в режим ожидания
0 0 0 0 0 0 0 1 1 0 0 1 0 0 CLRWDT Перезапустить сторожевой таймер
0 0 0 0 0 0 0 1 1 0 0 1 ж ТРИС ф Скопировать W в регистр с тремя состояниями ( f = 1, 2 или 3) (устарело)
0 0 код операции д зарегистрироваться Операции АЛУ: dest ← OP(f,W)
0 0 0 0 0 0 1 ж MOVWF f е ← Вт
0 0 0 0 0 1 д ж ЦЛР ж , д С dest ← 0, обычно пишется CLRW или CLRF f
0 0 0 0 1 0 д ж СУБВФ ж , д С С dest ← f−W (dest ← f+~W+1)
0 0 0 0 1 1 д ж DECF f , d С dest ← f−1
0 0 0 1 0 0 д ж ИОРВФ ф , д С место ← ж | W, логическое включительно или
0 0 0 1 0 1 д ж ANDWF ж , д С dest ← f & W, логические и
0 0 0 1 1 0 д ж XORWF ж , д С dest ← f ^ W, логическое исключение или
0 0 0 1 1 1 д ж АДДВФ ж , д С С место ← f+W
0 0 1 0 0 0 д ж МОДВ ф , д С место ← ж
0 0 1 0 0 1 д ж КОМФ f , d С dest ← ~f, побитовое дополнение
0 0 1 0 1 0 д ж ИНФФ f , d С место ← f+1
0 0 1 0 1 1 д ж DECFSZ f , d dest ← f−1, затем пропустить, если ноль
0 0 1 1 0 0 д ж СБР ф , д С назначение ← CARRY<<7 | f>>1, повернуть вправо через перенос
0 0 1 1 0 1 д ж РЛФ ж , д С место ← f<<1 | CARRY, повернуть влево через перенос
0 0 1 1 1 0 д ж СВАПФ ф , д место ← f<<4 | f>>4, поменять местами полубайты
0 0 1 1 1 1 д ж ИНЦФСЗ ж , д dest ← f+1, затем пропустить, если ноль
0 1 опк кусочек зарегистрироваться Битовые операции
0 1 0 0 кусочек ж КБК f , б Очистить бит b из f
0 1 0 1 кусочек ж ЧФ ж , б Установить бит b из f
0 1 1 0 кусочек ж БТФСК ж , б Пропустить, если бит b в f чист.
0 1 1 1 кусочек ж БТФСС ж , б Пропустить, если установлен бит b в f.
1 0 с к Контрольные передачи
1 0 0 к ЗВОНИТЕ К Вызов подпрограммы
1 0 1 к ПЕРЕЙТИ к Перейти к адресу k
1 1 код операции 8-битный немедленный Операции с W и 8-битным литералом: W ← OP(k,W)
1 1 0 0 х х к MOVLW в Вт ← к
1 1 0 1 х х к РЭТЛВ к W ← k, затем возврат из подпрограммы
1 1 1 0 0 0 к ИОРЛВ к С W ← к | W, побитовое логическое или
1 1 1 0 0 1 к АНДЛВ к С W ← k & W, поразрядно и
1 1 1 0 1 0 к XORLW к С W ← k ^ W, побитовое исключающее или
1 1 1 0 1 1 к (сдержанный)
1 1 1 1 0 х к SUBLW k С С W ← k−W (dest ← k+~W+1)
1 1 1 1 1 х к ADDLW k С С W ← k+W
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника С
?
С
?
Описание

Усовершенствованные базовые устройства среднего класса (14 бит)

[ редактировать ]

Усовершенствованные базовые устройства среднего класса включают более глубокий аппаратный стек, дополнительные методы сброса, 14 дополнительных инструкций и языка программирования C. оптимизацию [10] В частности. есть два INDF registers ( INDF0 и INDF1) и два соответствующих FSR зарегистрировать пары ( FSRnL и FSRnH). Специальные инструкции по использованию FSRn регистры, подобные адресным регистрам, с различными режимами адресации .

Дополнительные инструкции 14-битного расширенного PIC
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника С
?
С
?
Описание
0 0 0 0 0 0 0 код операции Разные инструкции
0 0 0 0 0 0 0 0 0 0 0 0 0 1 ПЕРЕЗАГРУЗИТЬ Программный сброс
0 0 0 0 0 0 0 0 0 0 1 0 1 0 ВЫЗОВАТЬ Нажмите ПК, затем перейдите к PCLATH:W.
0 0 0 0 0 0 0 0 0 0 1 0 1 1 БРВ PC ← PC + W, относительный переход с помощью W
0 0 0 0 0 0 0 0 0 1 0 н 0 0 MOVIW ++ФСР н С Увеличить FSR n , затем W ← INDF n
0 0 0 0 0 0 0 0 0 1 0 н 0 1 MOVIW --FSR n С Уменьшите FSR n , затем W ← INDF n
0 0 0 0 0 0 0 0 0 1 0 н 1 0 МОВИВ ФСР н ++ С W ← INDF n , затем увеличить FSR n
0 0 0 0 0 0 0 0 0 1 0 н 1 1 МОВИВ ФСР n −− С W ← INDF n , затем уменьшите FSR n
0 0 0 0 0 0 0 0 0 1 1 н м MOVWI с использованием FSR n INDF n ← W, те же режимы, что и MOVIW
0 0 0 0 0 0 0 0 1 к МОВЛБ в BSR ← k, переместить литерал в регистр выбора банка
1 1 код операции д зарегистрироваться Операции АЛУ: dest ← OP(f,W)
1 1 0 1 0 1 д ж ЛСЛФ ж , д С С dest ← f << 1, логический сдвиг влево
1 1 0 1 1 0 д ж ЛСРФ f , d С С dest ← f >> 1, логический сдвиг вправо
1 1 0 1 1 1 д ж АСРФ ф , д С С dest ← f >> 1, арифметический сдвиг вправо
1 1 1 0 1 1 д ж СУБВФБ f , d С С dest ← f + ~W + C, вычитание с переносом
1 1 1 1 0 1 д ж ADDWFC ж , д С С dest ← f + W + C, добавить с переносом
1 1 код операции к Действия с литералом k
1 1 0 0 0 1 0 н к АДДФСР ФСР n , k FSR n ← FSR n + k, добавить 6-битное смещение со знаком
1 1 0 0 0 1 1 к МОВЛП к PCLATH ← k, переместить 7-битный литерал в верхнюю защелку PC
1 1 0 0 1 к ХОРОШО к PC ← PC + k, переход относительно с использованием 9-битного смещения со знаком
1 1 1 1 1 1 0 н к MOVIW k [FSR n ] С W ← [FSR n + k ], 6-битное смещение со знаком
1 1 1 1 1 1 1 н к MOVWI в [FSR n ] [FSR n + k ] ← W, 6-битное смещение со знаком
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника С
?
С
?
Описание

Клоны Holtek (14, 15 или 16 бит)

[ редактировать ]

Holtek производит множество 8-битных микроконтроллеров с 14-битным командным словом, эквивалентным (нерасширенному) ядру среднего уровня. Все кодировки инструкций умещаются в 14 бит и обеспечивают 7-битные адреса операндов.

Формат инструкций идентичен формату Microchip, но коды операций назначаются в другом порядке, и производитель использует другую мнемонику инструкций. Аккумулятор называется ACC, а не W, а пункт назначения указывается суффиксом к мнемонике инструкции, а не операндом. (Инструкции, которые по умолчанию не используют аккумулятор, записываются обратно в память и используют суффикс A, чтобы указать, что местом назначения является аккумулятор. Инструкции с двумя операндами по умолчанию записывают в аккумулятор и используют суффикс M для указания места назначения в памяти. )

Помимо различного назначения кода операции, в некоторых инструкциях есть семантические различия:

  • Инструкции вычитания вычитают операнд из аккумулятора, тогда как инструкции вычитания Microchip делают обратное. (Это делает немедленную инструкцию вычитания избыточной, поскольку она эквивалентна сложению отрицательного значения.)
  • Инструкции перемещения в аккумулятор и очистки не изменяют никаких флагов.
  • нуля, переноса и В дополнение к флагам переноса цифры (называемых Holtek AC), существует флаг переполнения , который устанавливается теми же командами сложения и вычитания, которые устанавливают AC.

В 14-битный репертуар PICmicro добавлено несколько операций:

  • Поворот на один бит влево и вправо без переноса,
  • Установите операнд на все единицы,
  • Пропустить, если операнд равен нулю (без предварительного увеличения или уменьшения его),
  • Пропустить, если операнд ненулевой (некоторые модели),
  • Сложение и вычитание с переносом,
  • Десятичная корректировка после сложения для двоично-десятичной арифметики и
  • Чтение из ПЗУ программы для поиска в таблице. При этом регистры TBHP и TBLP используются в качестве 16-битного указателя, извлекается из него слово и сохраняется младший байт в указанном месте. Старшие 6–8 бит выбранного слова сохраняются в регистре TBLH. Вторая форма использует только TBLP и считывает из самой старшей 256-байтовой страницы ПЗУ. Некоторые модели включают вариант, который предварительно увеличивает TBLP.
  • Большинство моделей поддерживают вторую команду сброса сторожевого таймера, которая должна чередоваться с первой; повторы одной инструкции игнорируются. Это позволяет запускать две независимые сторожевые процедуры, и отказ любой из них запускает сторожевой таймер.
  • Holtek предоставляет два регистра косвенной адресации, например расширенный 14-битный PIC. Некоторые модели (например, HT66F70A) имеют три. Первый регистр косвенной адресации (IAR0) использует 8-битный адресный регистр (MP0) и всегда обращается к младшему банку ОЗУ. IAR1 и IAR2 предоставляют дополнительные биты адреса ОЗУ (MP1H и MP2H) и позволяют получить доступ к дополнительным банкам ОЗУ. [11]

15-битные модели используют бит 14 инструкции в качестве 8-го бита адреса операнда и 12-го бита целевого адреса CALL/JMP. В 16-битных моделях добавляется 13-й бит адреса цели CALL/JMP, но не добавляется 9-й бит адреса операнда. [12]

Вместо этого некоторые 16-битные модели поддерживают расширенный набор команд. Это добавляет несколько новых инструкций (пропуск байта без увеличения/уменьшения, немедленное вычитание с переносом, чтение ПЗУ с увеличением адреса), а также добавляет «длинные» варианты из двух слов всех инструкций памяти. Когда установлен бит 15 кода операции, это означает, что 8-битный адрес операнда в битах 0–6 и 14 кода операции расширяется до 16 бит с использованием битов 0–7 следующего командного слова. Такие инструкции записываются с префиксом L (LADD или ADD) и для выполнения требуется дополнительный цикл. [11]

14-битный набор инструкций Holtek [13]
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника ПОС
эквивалент
С
?
С
?
Описание
0 0 0 0 0 0 0 0 0 0 0 код операции Разные инструкции
0 0 0 0 0 0 0 0 0 0 0 0 0 0 НЕТ НЕТ Нет операции (MOV A,A)
0 0 0 0 0 0 0 0 0 0 0 0 0 1 CLR WDT1 CLRWDT Перезапустить сторожевой таймер
0 0 0 0 0 0 0 0 0 0 0 0 1 0 ОСТАНОВКА СПАТЬ Перейти в режим пониженного энергопотребления
0 0 0 0 0 0 0 0 0 0 0 0 1 1 ВЕРНО ВОЗВРАЩАТЬСЯ Возврат из подпрограммы
0 0 0 0 0 0 0 0 0 0 0 1 0 0 РЕДКО РЕТФИ Возврат из прерывания
0 0 0 0 0 0 0 0 0 0 0 1 0 1 CLR WDT2 ≈CLRWDT Перезапустить сторожевой таймер
0 0 0 0 0 0 0 0 0 0 0 1 1 х (сдержанный)
0 0 0 0 0 0 0 ≠0 х х х (сдержанный)
0 0 0 код операции д адрес Операции АЛУ, часть 1: dest ← OP(ACC,[m]) *
0 0 0 0 0 0 1 м ДВИЖЕНИЕ [ м ],А MOVWF м [м] ← АСС
0 0 0 0 0 1 д м CPLA/CPL [ м ] КОМФ м , д С dest ← ~[m], побитовое дополнение
0 0 0 0 1 0 д м СУБ/СУБМ А,[ м ] ≠SUBWF м , д С С dest ← ACC − [m] (dest ← ACC+~[m]+1)
0 0 0 0 1 1 д м АДД/АДДМ А,[ м ] ADDWF м , д С С назначение ← ACC + [м]
0 0 0 1 0 0 д м XOR/XORM [ м ] XORWF м , д С dest ← ACC ^ [m], логическое исключающее или
0 0 0 1 0 1 д м ОР/ОРМ [ м ] ИОРВФ м , д С место ← ACC | [м], логическое включительно или
0 0 0 1 1 0 д м И/АНДМ [ м ] ANDWF м , д С dest ← ACC & [m], логический и
0 0 0 1 1 1 0 м МОВ А,[ м ] ≈MOVF м ,0 АСС ← [м]
0 0 0 1 1 1 1 м ≈MOVF м ,1 [м] ← [м]
0 0 1 код операции 8-битный немедленный Операции с 8-битным литералом: ACC ← OP(ACC,k)
0 0 1 0 0 0 к СБК А, к С С ACC ← ACC + ~[m] + C, вычитание с переносом
0 0 1 0 0 1 к СУД А, к РЭТЛВ к ACC ← k, затем возврат из подпрограммы
0 0 1 0 1 0 к ПОД А, к ≠SUBLW k С С АСС ← АСС − k (ACC ← АСС+~k+1)
0 0 1 0 1 1 к ДОБАВИТЬ А, к ADDLW k С С АСС ← АСС + k
0 0 1 1 0 0 к Исключающее ИЛИ А, к XORLW к С ACC ← ACC ^ k, логическое исключающее или
0 0 1 1 0 1 к ИЛИ А, к ИОРЛВ к С АКК ← АКК | k, логическое включительно или
0 0 1 1 1 0 к И А, к АНДЛВ к С ACC ← ACC & k, логический и
0 0 1 1 1 1 к МОВ А, к MOVLW в АСС ← к
0 1 код операции д адрес Операции ALU, часть 2: dest ← OP(ACC,[m]) *
0 1 0 0 0 0 д м SZA/SW [ м ] dest ← [m], пропустить следующую инструкцию, если ноль
0 1 0 0 0 1 д м СВАПА/СВАП [ м ] СВАПФ м , д место ← [м]<<4 | [m]>>4, поменять местами полубайты
0 1 0 0 1 0 д м SBC/SBCM A,[ м ] ≠SUBWFB м , д С С dest ← ACC + ~[m] + C, вычитание с переносом
0 1 0 0 1 1 д м АЦП/ADCM А,[ м ] ADDWFC м , д С С dest ← ACC + [m] + C, добавить с переносом
0 1 0 1 0 0 д м ИНКА/ИНК [ м ] ИНФФ м , д С наст ← [м] + 1
0 1 0 1 0 1 д м ДЕКА/ДЕКА [ м ] DECF м , сут С наст ← [м] − 1
0 1 0 1 1 0 д м БЕЗ УТЕЧЕК [ м ] ИНЦФСЗ м , д dest ← [m] + 1, затем пропустить, если ноль
0 1 0 1 1 1 д м СДЗА/СДЗ [ м ] DECFSZ м , д dest ← [m] − 1, затем пропустить, если ноль
0 1 1 0 0 0 д м RLA/RL [ м ] наст ← [м] << 1 | [м] >> 7, повернуть влево на 1 бит
0 1 1 0 0 1 д м RRA/RR [ м ] наст ← [м] << 7 | [м] >> 1, повернуть вправо на 1 бит
0 1 1 0 1 0 д м RLCA/RLC [ м ] РЛФ м , д С наст ← [м] << 1 | C, повернуть влево через перенос
0 1 1 0 1 1 д м RRCA/RRC [ м ] РРФ м , д С место ← C << 7 | [м] >> 1, повернуть вправо через перенос
0 1 1 1 код операции адрес Специальные операции: [м] ← специальные *
0 1 1 1 0 0 0 м ИТАБРД [ м ] TBLH:[m] ← ROM[TBHP:++TBLP], с преинкрементом
0 1 1 1 0 0 1 м ИТАБРДЛ [ м ] TBLH:[m] ← ROM[0xff:++TBLP], с преинкрементом
0 1 1 1 0 1 0 м ТАБРД [ м ] TBLH:[m] ← ROM[TBHP:TBLP], поиск по таблице
0 1 1 1 0 1 1 м ТАБРДЛ [ м ] TBLH:[m] ← ROM[0xff:TBLP], чтение с последней страницы ПЗУ
0 1 1 1 1 0 0 м СНЗ [ м ] [m] ← [m], пропустить следующую инструкцию, если не ноль
0 1 1 1 1 0 1 м ДАА [ м ] С [м] ← DAA(ACC), десятичная корректировка после сложения BCD
0 1 1 1 1 1 0 м ЦЛР [ м ] ≈CLRF м [м] ← 0
0 1 1 1 1 1 1 м НАБОР [ м ] [м] ← 255
1 0 с к Контрольные передачи
1 0 0 к ЗВОНИТЕ К ЗВОНИТЕ К Вызов подпрограммы
1 0 1 к СПМ к ПЕРЕЙТИ к Перейти к адресу k
1 1 опк кусочек адрес Битовые операции *
1 1 0 0 кусочек м НАБОР [ м ]. б ЧФ м , б Установить бит b из [m]
1 1 0 1 кусочек м CLR [ м ] . б КБК м , б Очистить бит b из [m]
1 1 1 0 кусочек м СНЗ [ м ]. б БТФСС м , б Пропустить, если установлен бит b в [m]
1 1 1 1 кусочек м СЗ [ м ]. б БТФСК м , б Пропустить, если бит b в [m] сброшен
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника ПОС
эквивалент
С
?
С
?
Описание

*: Инструкции доступны в полной форме на 16-битных моделях с расширенным набором инструкций.
†: Инструкция доступна только на 16-битных моделях с расширенным набором команд.

Микроконтроллеры Padauk (13, 14, 15 или 16 бит)

[ редактировать ]

Padauk Technology производит серию PIC-подобных микроконтроллеров, отличающихся чрезвычайно низкой стоимостью, начиная с 0,033 доллара США в количестве. [14] многие модели стоят менее 0,10 доллара США . [15] [16] [17]

Хотя он явно заимствован из серии Microchip PIC12, [15] [18] есть некоторые существенные различия:

  • Они не используют механизм FSR/INDF для выполнения непрямого доступа к памяти, вместо этого имеют инструкции косвенной загрузки и сохранения, которые используют произвольную ячейку ОЗУ в качестве указателя;
  • они используют стек вызовов на базе ОЗУ с регистром указателя стека;
  • флаг переноса использует соглашение о «битах переноса» для вычитания, а не соглашение о «битах переноса», используемое Microchip;
  • они также включают в себя флаг переполнения со знаком , который, как и перенос цифры, устанавливается инструкциями сложения, вычитания и сравнения (каждая инструкция, которая устанавливает флаг переноса, за исключением инструкций сдвига);
  • они имеют отдельные адресные пространства ОЗУ и регистров ввода-вывода (64 и 32 байта соответственно в 13-битном наборе команд);
  • битовые операции ограничены пространством ввода-вывода и первыми 16 адресами ОЗУ;
  • инструкции с одним операндом с источником памяти и назначением аккумулятора опущены;
  • предусмотрены инструкции с одним операндом с источником и назначением аккумулятора;
  • операции вычитания вычисляют пункт назначения — источник, меняя входные операнды в зависимости от пункта назначения;
  • они работают быстрее, требуя 1 такт для большинства инструкций и 2 такта для передачи управления; и
  • некоторые модели поддерживают временную многопоточность , имея несколько контекстов выполнения, выполнение которых чередуется.
13-битный набор инструкций Падук [19] [20]
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника ПОС
эквивалент
С
?
С
?
Описание
0 0 0 0 0 0 0 0 0 код операции Разные инструкции
0 0 0 0 0 0 0 0 0 0 0 0 0 НЕТ НЕТ Нет операции
0 0 0 0 0 0 0 0 0 0 0 0 1 (сдержанный)
0 0 0 0 0 0 0 0 0 0 0 1 х (сдержанный)
0 0 0 0 0 0 0 0 0 0 1 0 х (сдержанный)
0 0 0 0 0 0 0 0 0 0 1 1 0 ЛДСПТЛ A ← ROM[[SP]], загрузите младший/старший байт слова ROM, используя 16-битный указатель на вершине стека.
0 0 0 0 0 0 0 0 0 0 1 1 1 ЛДСПТХ
0 0 0 0 0 0 0 0 0 1 (сдержанный)
0 0 0 0 0 0 0 0 1 код операции Инструкции с одним операндом для аккумулятора
То же, что и инструкции с одним операндом в памяти (ниже), за исключением
0 0 0 0 0 0 0 0 1 0 1 1 1 ПКАДД А ≈ADDWF PCL,1 PC ← PC + A, добавить к счетчику программ (не XCH A )
0 0 0 0 0 0 0 0 1 1 1 1 0 СВОП А А ← А<<4 | A>>4, поменять местами полубайты (не CEQSN A )
0 0 0 0 0 0 0 1 0 (сдержанный)
0 0 0 0 0 0 0 1 1 код операции Инструкции по управлению системой
0 0 0 0 0 0 0 1 1 0 0 0 0 ВДРЕСЕТ CLRWDT Перезапустить сторожевой таймер
0 0 0 0 0 0 0 1 1 0 0 0 1 (сдержанный)
0 0 0 0 0 0 0 1 1 0 0 1 0 ПУШАФ Нажмите A, затем поставьте флаги на вершину стека.
0 0 0 0 0 0 0 1 1 0 0 1 1 ПОПАФ С С Поставьте флажки, затем A сверху стека.
0 0 0 0 0 0 0 1 1 0 1 0 0 (сдержанный)
0 0 0 0 0 0 0 1 1 0 1 0 1 ПЕРЕЗАГРУЗИТЬ ПЕРЕЗАГРУЗИТЬ Программный сброс
0 0 0 0 0 0 0 1 1 0 1 1 0 СТОПСИС СПАТЬ Перейти в режим ожидания (часы остановлены)
0 0 0 0 0 0 0 1 1 0 1 1 1 СТОПЕКС Перейти в режим ожидания (часы идут)
0 0 0 0 0 0 0 1 1 1 0 0 0 НИЧЕГО ЧФ ИНТКОН,ГИЕ Включить прерывания
0 0 0 0 0 0 0 1 1 1 0 0 1 ОТЧЕТЛИВЫЙ BCF INTCON, GIE Отключить прерывания
0 0 0 0 0 0 0 1 1 1 0 1 0 ВЕРНО ВОЗВРАЩАТЬСЯ Возврат из подпрограммы, немодифицированный
0 0 0 0 0 0 0 1 1 1 0 1 1 РЕДКО РЕТФИ Возврат из прерывания
0 0 0 0 0 0 0 1 1 1 1 0 0 У меня есть MULRH:A ← A × MULOP (не все модели)
0 0 0 0 0 0 0 1 1 1 1 0 1 (сдержанный)
0 0 0 0 0 0 0 1 1 1 1 1 х (сдержанный)
0 0 0 0 0 код операции йоаддр Операции ввода-вывода шириной в байт
0 0 0 0 0 0 1 1 йоаддр XOR ioaddr ,A IO[ioaddr] ← A ^ IO[адрес]
0 0 0 0 0 1 0 0 йоаддр MOV ioaddr ,A I[ioaddr] ← A
0 0 0 0 0 1 0 1 йоаддр MOV A, ioaddr С A ← I[ioaddr]
0 0 0 0 0 1 1 с адрес с 16-битные операции (даже ограничен адрес ОЗУ)
0 0 0 0 0 1 1 0 адрес 0 STT16 адрес Таймер16 ← [адрес]
0 0 0 0 0 1 1 0 адрес 1 LDT16 адрес [адрес] ← Таймер16
0 0 0 0 0 1 1 1 адрес 0 IDXM- адрес , A [[адрес]] ← A, косвенный адрес памяти
0 0 0 0 0 1 1 1 адрес 1 IDXM A, адрес A ← [[адрес]], косвенный адрес памяти
0 0 0 0 1 к Возвращает литеральную константу
0 0 0 0 1 к ПРАВО к РЭТЛВ к A ← k , затем возврат из подпрограммы
0 0 0 1 с кусочек с адрес Битовые операции с оперативной памятью (только первые 16 байт)
0 0 0 1 0 кусочек 0 адрес T0SN адрес . б BTFSC адрес , б Пропустить, если бит b в [ адрес ] сброшен
0 0 0 1 0 кусочек 1 адрес T1SN адрес . б BTFSS адрес , б бит b в [ addr Пропустить, если установлен ]
0 0 0 1 1 кусочек 0 адрес SET0 адрес . б BCF адрес , б Очистить бит b в [ адрес ]
0 0 0 1 1 кусочек 1 адрес SET1 адрес . б BSF адрес , б Установить бит b в [ адрес ]
0 0 1 д код операции адрес Операции ALU между A и памятью
0 0 1 0 0 0 0 адрес ДОБАВИТЬ адрес , A ADDWF Адрес , 1 С С [ адрес ] ← [ адрес ] + A
0 0 1 0 0 0 1 адрес ДОПОЛНИТЕЛЬНЫЙ адрес , A SUBWF Адрес , 1 С С [ адрес ] ← [ адрес ] − A
0 0 1 0 0 1 0 адрес ADDC Адрес , A ADDWFC адрес , 1 С С [ адрес ] ← [ адрес ] + A + C
0 0 1 0 0 1 1 адрес SUBC Адрес , A ≈SUBWFB адрес , 1 С С [ адрес ] ← [ адрес ] − A − C
0 0 1 0 1 0 0 адрес И адрес ANDWF Адрес , 1 С [ адрес ] ← [ адрес ] & A, логический и
0 0 1 0 1 0 1 адрес ИЛИ адрес ,A IORWF Адрес , 1 С [ адрес ] ← [ адрес ] | А, логический включающий или
0 0 1 0 1 1 0 адрес XOR адрес , A XORWF Адрес , 1 С [ адрес ] ← [ адрес ] ^ A, логическое исключающее или
0 0 1 0 1 1 1 адрес MOV адрес , A MOVWF- адрес [ адрес ] ← А
0 0 1 1 0 0 0 адрес ДОБАВИТЬ А, адрес ADDWF адрес , 0 С С A ← A + [ адрес ]
0 0 1 1 0 0 1 адрес СУБ А, адрес ≠SUBWF адрес , 0 С С А ← А - [ адрес ]
0 0 1 1 0 1 0 адрес ADDC A, адрес ADDWFC адрес , 0 С С A ← A + [ адрес ] + C
0 0 1 1 0 1 1 адрес СУБК А, адрес ≠SUBWFB адрес , 0 С С А ← А - [ адрес ] - C
0 0 1 1 1 0 0 адрес И А, адрес ANDWF Адрес , 0 С A ← [A] и [ адрес ], логические и
0 0 1 1 1 0 1 адрес ИЛИ А, адрес IORWF адрес , 0 С А ← А | [ адрес ], логическое включение или
0 0 1 1 1 1 0 адрес XOR A, адрес XORWF адрес , 0 С A ← A ^ [ адрес ], логическое исключающее или
0 0 1 1 1 1 1 адрес MOV A, адрес MOVF Адрес , 0 С А ← [ адрес ]
0 1 0 код операции адрес Однооперандные операции с памятью
0 1 0 0 0 0 0 адрес ADDC адрес С С [ адрес ] ← [ адрес ] + C
0 1 0 0 0 0 1 адрес SUBC адрес С С [ адрес ] ← [ адрес ] − C
0 1 0 0 0 1 0 адрес ИЗСН адрес INCFSZ адрес , 1 С С [ адрес ] ← [ адрес ] + 1, затем пропустить, если ноль
0 1 0 0 0 1 1 адрес ДЗСН адрес DECFSZ адрес , 1 С С [ адрес ] ← [ адрес ] − 1, затем пропустить, если ноль
0 1 0 0 1 0 0 адрес INC Адрес INCF- адрес , 1 С С [ адрес ] ← [ адрес ] + 1
0 1 0 0 1 0 1 адрес декабря адрес DECF- адрес , 1 С С [ адрес ] ← [ адрес ] - 1
0 1 0 0 1 1 0 адрес ОЧИСТИТЬ адрес ≈CLRF адрес [ адрес ] ← 0
0 1 0 0 1 1 1 адрес XCH адрес A ← [ адрес ], [ адрес ] ← A
0 1 0 1 0 0 0 адрес НЕ адрес COMF- адрес , 1 С [ адрес ] ← ~[ адрес ], побитовое дополнение
0 1 0 1 0 0 1 адрес NEG- адрес С [ адрес ] ← −[ адрес ], отрицание
0 1 0 1 0 1 0 адрес SR адрес ≈LSRF адрес , 1 С [ адрес ] ← [ адрес ] >> 1, логический сдвиг вправо
0 1 0 1 0 1 1 адрес SL- адрес ≈LSLF адрес , 1 С [ адрес ] ← [ адрес ] << 1, сдвиг влево
0 1 0 1 1 0 0 адрес SRC- адрес РРФ адрес , 1 С [ адрес ] ← C << 7 | [ адрес ] >> 1, повернуть вправо через перенос
0 1 0 1 1 0 1 адрес SLC- адрес RLF Адрес , 1 С [ адрес ] ← [ адрес ] << 1 | C, повернуть влево через перенос
0 1 0 1 1 1 0 адрес CEQSN- адрес С С Вычислите A − [ addr ], затем пропустите, если ноль.
0 1 0 1 1 1 1 адрес (зарезервировано для CNEQSN)
0 1 1 опк кусочек адрес Битовые операции с вводом/выводом
0 1 1 0 0 кусочек адрес T0SN ioадрес . б BTFSC ioaddr , б Пропустить, если бит b в [ ioaddr ] сброшен
0 1 1 0 1 кусочек адрес T1SN ioадрес . б BTFSS ioaddr , б Пропустить, если бит b в [ ioaddr установлен ]
0 1 1 1 0 кусочек адрес SET0 ioадрес . б BCF ioaddr , б Очистить бит b в [ ioaddr ]
0 1 1 1 1 кусочек адрес SET1 ioадрес . б BSF ioaddr , б Установите бит b в [ ioaddr ]
1 0 код операции буквальный Литеральные операции: A ← OP(A, k )
1 0 0 0 0 к ДОБАВИТЬ А, к ADDLW k С С А ← А + к
1 0 0 0 1 к ПОД А, к ≠SUBLW k С С А ← А - к
1 0 0 1 0 к CEQSN А, к С С Вычислите A − k , затем пропустите, если ноль.
1 0 0 1 1 к (зарезервировано для CNEQSN)
1 0 1 0 0 к И А, к ≈ANDLW k С А ← А и к
1 0 1 0 1 к ИЛИ А, к ≈IORLW k С А ← А | к
1 0 1 1 0 к Исключающее ИЛИ А, к ≈XORLW k С А ← А ^ к
1 0 1 1 1 к МОВ А, к MOVLW в А ← к
1 1 с к Передача управления: ПК ← k
1 1 0 к ПЕРЕЙТИ к ПЕРЕЙТИ к ПК ← к
1 1 1 к ЗВОНИТЕ К ЗВОНИТЕ К Нажмите PC, затем PC ← k
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника ПОС
эквивалент
С
?
С
?
Описание

14-, 15- и 16-битные наборы команд в основном отличаются более широкими адресными полями, хотя в кодировку внесены некоторые изменения, позволяющие использовать несколько дополнительных инструкций (например, CNEQSN, который выполняет сравнение и пропуск, если не равно.)

14-битный набор инструкций Падук [21] [22]
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника ПОС
эквивалент
С
?
С
?
Описание
0 0 0 0 0 0 0 0 0 0 код операции Разные инструкции такие же, как и в 13-битной версии.
0 0 0 0 0 0 0 0 0 1 (сдержанный)
0 0 0 0 0 0 0 0 1 (сдержанный)
0 0 0 0 0 0 0 1 0 (сдержанный)
0 0 0 0 0 0 0 1 1 0 код операции Инструкции с одним операндом для A такие же, как 13-битные.
0 0 0 0 0 0 0 1 1 1 код операции Инструкции управления системой такие же, как и в 13-битной версии.
0 0 0 0 0 0 1 0 (сдержанный)
0 0 0 0 0 код операции адрес Операции ввода-вывода шириной в байты такие же, как и 13-битные, но коды операций изменены.
0 0 0 0 0 0 1 1 йоаддр XOR ioaddr ,A IO[ioaddr] ← A ^ IO[адрес]
0 0 0 0 0 1 0 (сдержанный)
0 0 0 0 0 1 1 0 йоаддр MOV ioaddr ,A I[ioaddr] ← A
0 0 0 0 0 1 1 1 йоаддр MOV A, ioaddr С A ← I[ioaddr]
0 0 0 0 1 0 к Возвращайте литеральную константу, такую ​​же, как 13-битную
0 0 0 0 1 1 с адрес с 16-битные операции аналогичны 13-битным, но диапазон 128 байт.
0 0 0 1 0 кусочек адрес Копировать бит в ввод-вывод
0 0 0 1 0 кусочек адрес SWAPC ioaddr . б С Обмен переноса с битом [ ioaddr ] b
0 0 0 1 1 с д адрес Дополнительные операции с двумя операндами
0 0 0 1 1 0 0 адрес КОМП А, адрес С С A — [ адрес ], флаги установлены, результат отброшен
0 0 0 1 1 0 1 адрес КОМП адрес ,A С С [ адрес ] — A, флаги установлены, результат отброшен
0 0 0 1 1 1 0 адрес НАДД А, адрес SUBWF Адрес , 0 С С A ← [ адрес ] + −A (A ← [ адрес ] + ~A + 1)
0 0 0 1 1 1 1 адрес NADD адрес ,A С С [ адрес ] ← A + −[ адрес ] ([ адрес ] ← A + ~[ адрес ] + 1)
0 0 1 д код операции адрес Инструкции с 2 операндами такие же, как 13-битные
0 1 0 код операции адрес Операции с одним операндом в памяти такие же, как и 13-битные, плюс CNEQSN.
0 1 0 1 1 1 1 адрес CNEQSN Адрес С С Вычислите A − [ addr ], затем пропустите, если не равно нулю.
0 1 1 опк кусочек йоаддр Битовые операции с вводом-выводом такие же, как 13-битные, но диапазон 64 байта.
1 0 0 опк кусочек адрес Битовые операции с памятью такие же, как 13-битные, но диапазон 64 байта.
1 0 1 код операции буквальный Литеральные операции такие же, как 13-битные, плюс CNEQSN.
1 0 1 0 1 1 к CNEQSN А, к С С Вычислите A − k , затем пропустите, если не равно нулю.
1 1 с к Передача управления такая же, как и 13-битная.
1
13
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника ПОС
эквивалент
С
?
С
?
Описание

Устройства с ядром высокого класса PIC18 (16 бит)

[ редактировать ]

В 2000 году Microchip представила архитектуру PIC18. [1] В отличие от серии 17, она оказалась очень популярной, и в настоящее время производится большое количество вариантов устройств. В отличие от более ранних устройств, которые чаще всего программировались на ассемблере, преобладающим языком разработки стал C. [23]

PIC18 имеет 12-битное адресное пространство ОЗУ, разделенное на 16 страниц по 256 байт. 8-битный f поле определяет адрес в сочетании с полем a бит и 4-битный регистр выбора банка ( BSR). Если a=0, BSR игнорируется и f Поле расширяется по знаку до диапазона 0x000–0x07F (глобальное ОЗУ) или 0xF80–0xFFF (регистры специальных функций). Если a=1, f поле расширяется с помощью BSR для генерации 12-битного адреса.

PIC18 расширяет FSR/ INDF механизм, использовавшийся в предыдущих процессорах PICmicro для косвенной адресации двумя способами:

Во-первых, он предоставляет три регистра выбора файла. FSRn регистры имеют длину 12 бит (каждый разделен на две 8-битные части). FSR0L через FSR2H), и доступ к соответствующему INDFn зарегистрироваться ( INDF0 через INDF2) действует как псевдоним адресуемого байта.

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

  • INDFn: Доступ к байту по местоположению FSRn
  • POSTDECn: Доступ к байту по адресу FSRn, затем уменьшите FSRn
  • POSTINCn: Доступ к байту по адресу FSRn, затем увеличьте FSRn
  • PREINCn: Приращение FSRn, затем получите доступ к байту с увеличенной FSRn
  • PLUSWn: Доступ к байту по адресу FSRn + W (индексированная адресация).

Также имеются инструкции для непосредственной загрузки пары FSR с 12-битным адресом и MOVFF инструкция, которая перемещает байт между двумя 12-битными адресами.

16-битный набор команд PIC18 [24]
1
5
1
4
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника С
?
С
?
Н
?
Описание
0 0 0 0 0 0 0 0 код операции Разные инструкции
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 НЕТ Нет операции
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 СПАТЬ Перейти в режим ожидания
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 CLRWDT Перезапустить сторожевой таймер
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 ТОЛКАТЬ Поместите компьютер на вершину стека
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 ПОП Вытолкнуть (и сбросить) верхнюю часть стека
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 ПРОКЛЯТИЕ С Десятичная настройка W
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 TBLRD∗ Читать таблицу: TABLAT ← mem[TBLPTR]
0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 TBLRD∗+ Таблица читается с постинкрементом
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 TBLRD∗− Таблица читается с постдекрементом
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 ТБЛРД+∗ Таблица читается с предварительным приращением
0 0 0 0 0 0 0 0 0 0 0 0 1 1 против ТБЛВР Запись таблицы, те же режимы, что и TBLRD
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 с РЕТФИ [, БЫСТРО] Возврат из прерывания
0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 с ВОЗВРАТ [, БЫСТРО] Возврат из подпрограммы
0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 ВЫЗОВАТЬ * Нажмите ПК, перейдите к PCLATU:PCLATH:W.
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 ПЕРЕЗАГРУЗИТЬ 0 0 0 Программный сброс
0 0 0 0 0 0 0 1 —0— к МОВЛБ Переместить букву k в регистр выбора банка
0 0 0 0 1 код операции буквальный Литеральные операции: W ← OP(k,W)
0 0 0 0 1 0 0 0 к SUBLW k Вт ← к - Вт
0 0 0 0 1 0 0 1 к ИОРЛВ к W ← к | W, логическое включительно или
0 0 0 0 1 0 1 0 к XORLW к W ← k ^ W, исключительный или
0 0 0 0 1 0 1 1 к АНДЛВ к W ← k & W, логические и
0 0 0 0 1 1 0 0 к РЭТЛВ к ВОЗВРАТ W ← k
0 0 0 0 1 1 0 1 к МУЛЛВ к Вт ← к × Вт
0 0 0 0 1 1 1 0 к MOVLW в Вт ← к
0 0 0 0 1 1 1 1 к ADDLW k Вт ← к + Вт
0 код операции д а зарегистрироваться Операции АЛУ: dest ← OP(f,W)
0 0 0 0 0 0 1 а ж MULWF f , а PRODH:PRODL ← W × f (без знака)
0 0 0 0 0 1 д а ж DECF f , d , а С С Н место ← f - 1
0 0 0 1 0 0 д а ж IORWF f , d , а С Н место ← ж | W, логическое включительно или
0 0 0 1 0 1 д а ж ANDWF ж , г , а С Н dest ← f & W, логические и
0 0 0 1 1 0 д а ж XORWF ж , д , а С Н dest ← f ^ W, исключительный или
0 0 0 1 1 1 д а ж КОМФ ж , д , а С Н dest ← ~f, побитовое дополнение
0 0 1 0 0 0 д а ж ADDWFC f , d , а С С Н dest ← f + W + C
0 0 1 0 0 1 д а ж ADDWF ж , г , а С С Н dest ← f + W
0 0 1 0 1 0 д а ж ИНФФ f , d , а С С Н место ← f + 1
0 0 1 0 1 1 д а ж DECFSZ f , d , а dest ← f − 1, пропустить, если 0
0 0 1 1 0 0 д а ж RRCF f , d , а С С Н место ← f>>1 | C<<7, повернуть вправо через перенос
0 0 1 1 0 1 д а ж RLCF f , d , а С С Н место ← f<<1 | C, повернуть влево через перенос
0 0 1 1 1 0 д а ж СВАПФ f , d , а место ← f<<4 | f>>4, поменять местами полубайты
0 0 1 1 1 1 д а ж INCFSZ f , d , а dest ← f + 1, пропустить, если 0
0 1 0 0 0 0 д а ж РРНЦФ ж , г , а С Н место ← f>>1 | f<<7, повернуть вправо (без переноса)
0 1 0 0 0 1 д а ж РЛНКФ ж , д , а С Н место ← f<<1 | f>>7, повернуть влево (без переноса)
0 1 0 0 1 0 д а ж ИНФСНЗ ф , д , а dest ← f + 1, пропустить, если не 0
0 1 0 0 1 1 д а ж ДЦФСНЗ ж , д , а dest ← f − 1, пропустить, если не 0
0 1 0 1 0 0 д а ж МОДВ ф , д , а С Н место ← ж
0 1 0 1 0 1 д а ж SUBFWB f , d , а С С Н dest ← W + ~f + C (dest ← W − f − C̅)
0 1 0 1 1 0 д а ж СУБВФБ f , d , а С С Н dest ← f + ~W + C (dest ← f − W − C̅)
0 1 0 1 1 1 д а ж СУБВФ f , d , а С С Н dest ← f − W (dest ← f + ~W + 1)
0 1 1 0 код операции а зарегистрироваться Операции ALU, не записывайте в W
0 1 1 0 0 0 0 а ж CPFSLT f , а пропустить, если f < W (без знака)
0 1 1 0 0 0 1 а ж CPFSEQ f , а пропустить, если f == W
0 1 1 0 0 1 0 а ж CPFSGT f , а пропустить, если f > W (без знака)
0 1 1 0 0 1 1 а ж ЦТФСЗ ф , а пропустить, если f == 0
0 1 1 0 1 0 0 а ж СЭТФ f , а е ← 0xFF
0 1 1 0 1 0 1 а ж CLRF f , а 1 f ← ​​0, PSR.Z ← 1
0 1 1 0 1 1 0 а ж NEGF f , а С С Н е ← −f
0 1 1 0 1 1 1 а ж MOVWF f , а е ← Вт
0 1 1 1 кусочек а ж БТГ ж , б , а Переключить бит b из f
1 0 опк кусочек а зарегистрироваться Битовые операции
1 0 0 0 кусочек а ж ЧФ ж , б , а Установить бит b из f
1 0 0 1 кусочек а ж КБК f , b , а Очистить бит b из f
1 0 1 0 кусочек а ж БТФСС ж , б , а Пропустить, если установлен бит b в f.
1 0 1 1 кусочек а ж БТФСК ж , б , а Пропустить, если бит b в f чист.
1 1 0 опк адрес Операции с большим адресом
1 1 0 0 источник МОВФФ с , д Переместить абсолютное
1 1 1 1 место назначения
1 1 0 1 0 н ХОРОШО н Ответвление на ПК + 2 n
1 1 0 1 1 н RCALL н Вызов подпрограммы на ПК + 2 n
1 1 1 0 0 состояние н Условный переход (к ПК+2 n )
1 1 1 0 0 0 0 0 н БЖ н Ветвь, если установлен PSR.Z.
1 1 1 0 0 0 0 1 н БНЗ н Переход, если PSR.Z чист.
1 1 1 0 0 0 1 0 н до нашей эры н Переход, если установлен PSR.C
1 1 1 0 0 0 1 1 н BNC н Переход, если PSR.C чист
1 1 1 0 0 1 0 0 н БОВ н Переход, если установлен PSR.V.
1 1 1 0 0 1 0 1 н БНОВ н Переходить, если PSR.V чист.
1 1 1 0 0 1 1 0 н БН нет Переход, если установлен PSR.N.
1 1 1 0 0 1 1 1 н БНН н Переход, если PSR.N чист.
1 1 1 0 1 0 опк к Расширения для использования FSR2 в качестве указателя программного стека *
1 1 1 0 1 0 0 0 н к АДДФСР n , k * ФСРн += к
1 1 1 0 1 0 0 0 1 1 к ДОБАВЛЯЕМ МЫ * FSR2 += k, поп-ПК
1 1 1 0 1 0 0 1 н к СУБФСР н , к * ФСРn −= k
1 1 1 0 1 0 0 1 1 1 к СУБОЛНК к * FSR2 −= k, поп-ПК
1 1 1 0 1 0 1 0 к ПУШЛ к * [FSR2] ← k, уменьшить FSR2
1 1 1 0 1 0 1 1 0 с MOVSF источник , ф * f ← ​​FSR2[s]
1 1 1 1 ж
1 1 1 0 1 0 1 1 1 с МОВСС Исходник , летнее время * FSR2[д] ← FSR2[с]
1 1 1 1 —0— д
1 1 1 0 1 1 опк к инструкции из 2 слов
1 1 1 0 1 1 0 с k (лсбит) ВЫЗОВ k [, БЫСТРО] Вызов подпрограммы (20-битный адрес)
1 1 1 1 k (мбит)
1 1 1 0 1 1 1 0 0 0 ж к (старший бит) ЛФСР f , k Переместить 12-битный литерал в FSR f
1 1 1 1 0 0 0 0 k (лсбит)
1 1 1 0 1 1 1 1 k (лсбит) ПЕРЕЙТИ к Абсолютный переход, PC ← k (20-битный адрес)
1 1 1 1 k (мбит)
1 1 1 1 к Нет операции, второе слово двухсловной инструкции
1
5
1
4
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника С
?
С
?
Н
?
Описание

*: Эти расширенные инструкции доступны только на некоторых моделях и только в том случае, если XINST бит конфигурации установлен.

16-битные микроконтроллеры PIC24 и dsPIC.

[ редактировать ]

В 2001 году Microchip представила серию чипов dsPIC. [25] которые поступили в массовое производство в конце 2004 года. Это первые 16-битные микроконтроллеры Microchip. Устройства PIC24 спроектированы как микроконтроллеры общего назначения. Устройства dsPIC цифровой обработки сигналов дополнительно включают в себя возможности .

Инструкции бывают двух основных разновидностей. Одна из них похожа на классические инструкции PIC с одним операндом: операция между W0 и значением в указанном регистре f (т. е. первые 8 КБ ОЗУ) и выбор бита выбора места назначения, который обновляется с учетом результата. Регистры W отображаются в памяти, поэтому операнд f может указывать регистр W.

Другая форма, новая для PIC24, определяет три операнда W-регистра, два из которых допускают спецификацию 3-битного режима адресации:

Режимы адресации PIC24
исходный операнд операнд назначения Описание
ппп Рег Синтаксис qqq Рег Синтаксис
000 ссссс Вт с 000 дддд Вт д Зарегистрируйтесь напрямую
001 ссссс с ] 001 дддд д ] Косвенный
010 ссссс [Вт с −-] 010 дддд д --] Косвенный с постдекрементом
011 ссссс [W с ++] 011 дддд д ++] Косвенный с постинкрементом
100 ссссс [-- Вт с ] 100 дддд [--W d ] Косвенный с преддекрементом
101 ссссс [++В с ] 101 дддд [++W д ] Косвенный с преинкрементом
11 тыс. хахахаха # и5 (Не используется, незаконно) 5-битный беззнаковый немедленный
11 х ссссс [W с +W ш ] 11 х дддд [W d +W w ] Косвенный со смещением регистра

Режим адресации смещения регистра доступен только для MOV src,dst инструкцию, где регистр Ww может использоваться в качестве смещения регистра для источника, назначения или того и другого. Все остальные инструкции вместо этого используют эту кодировку для беззнакового 5-битного непосредственного источника.

Чтобы операнды TBLRD и TBLWT которые обращаются к памяти программ, разрешены только косвенные режимы и ссылаются на адреса в памяти кода.

Некоторые инструкции состоят из двух слов. Второе слово — это NOP, которое включает в себя до 16 бит дополнительного непосредственного операнда.

24-битный набор инструкций PIC24 [26]
2
3
2
2
2
1
2
0
1
9
1
8
1
7
1
6
1
5
1
4
1
3
1
2
1
1
1
0

9

8

7

6

5

4

3

2

1

0
Мнемоника С
?
С
?
Н
?
Описание
0 0 0 0 код операции компенсировать Контрольные передачи
0 0 0 0 0 0 0 0 НЕТ Нет операции
0 0 0 0 0 0 0 0 —0— н <22:16> ВЫЗОВ/ПЕРЕЙТИ к адресу 23 (второе слово)
0 0 0 0 0 0 0 0 н DO# k , адрес (второе слово)
0 0 0 0 0 0 0 1 0 опк —0— а Вычисленная передача управления (в 16-битный Wa)
0 0 0 0 0 0 0 1 0 0 0 —0— а ПОЗВОНИТЕ Р а Нажмите ПК, прыгните в Wa
0 0 0 0 0 0 0 1 0 0 1 —0— а RCALL R а Нажмите ПК, перейдите на ПК+2×Ва.
0 0 0 0 0 0 0 1 0 1 0 —0— а ПЕРЕЙТИ К Р а Перейти в Ва
0 0 0 0 0 0 0 1 0 1 1 —0— а БРА Р а Перейти на ПК+2×Ва
0 0 0 0 0 0 1 0 н <15:1> 0 ВЫЗОВАТЬ адрес 23 Нажмите ПК, перейдите по абсолютному адресу
—0— —0— н <22:16>
0 0 0 0 0 0 1 1 (Сдержанный)
0 0 0 0 0 1 0 0 н 0 ПЕРЕЙТИ К адресу 23 Перейти к абсолютному адресу
—0— —0— н <22:16>
0 0 0 0 0 1 0 1 0 Б к д RETLW[.B] # k ,W d Wd = k, поп ПК
0 0 0 0 0 1 1 0 0 0 —0— ВОЗВРАЩАТЬСЯ поп-ПК
0 0 0 0 0 1 1 0 0 1 —0— РЕТФИ С С Н поп-СР, ПК
0 0 0 0 0 1 1 1 н RCALL- адрес Нажмите ПК, ПК += 2×s16
0 0 0 0 1 0 0 0 0 0 к DO# k , адрес Цикл с нулевыми издержками: k+1 — счетчик повторений, PC+2×n — последняя инструкция.
—0— н
0 0 0 0 1 0 0 0 0 0 к ПОВТОРИТЬ #k Повторите следующую инструкцию k+1 раз.
0 0 0 0 1 0 0 0 н RCALL- адрес Нажмите ПК, ПК += 2×s16
0 0 0 0 1 0 1 (Сдержанный)
0 0 0 0 1 1 0 а н БРА О а , адрес Если аккумулятор переполнен/насыщен, PC += 2×simm16
0 0 0 0 1 1 1 а н БРА С а , адрес
0 код операции В Б д д п с Обратное вычитание: dest источник − W w
0 0 0 1 0 В Б д д п с SUBR[.B] W w , источник , dst С С Н dst ← источник − Ww = источник + ~Ww + 1)
0 0 0 1 1 В Б д д п с SUBBR[.B] W w , источник , dst С С Н dst ← src − Ww − C̅ = src + ~Ww + C
0 0 1 0 к д MOV # k ,W d Вд ← #imm16
0 0 1 1 состояние н Условный переход на ПК+2× n
0 0 1 1 0 0 0 0 н БРА ОВ, адрес ...если установлен PSR.V
0 0 1 1 0 0 0 1 н БРА C, адрес ...если установлен PSR.C
0 0 1 1 0 0 1 0 н БРА Z, адрес ...если установлен PSR.Z
0 0 1 1 0 0 1 1 н БРА Н, адрес ...если установлен PSR.N
0 0 1 1 0 1 0 0 н БРА ЛЕ, адрес ...если PSR.Z или PSR.N ≠ PSR.V
0 0 1 1 0 1 0 1 н BRA LT, адрес ...если PSR.N ≠ PSR.V
0 0 1 1 0 1 1 0 н БРА НОУ, адрес ...если установлен PSR.Z или PSR.C очищен
0 0 1 1 0 1 1 1 н бюстгальтера Адрес ...безоговорочно
0 0 1 1 1 0 0 0 н БРА НОЯБРЬ, адрес ...если PSR.V ясен
0 0 1 1 1 0 0 1 н БРА НК, адрес ...если PSR.C чист
0 0 1 1 1 0 1 0 н Бюстгальтер Новая Зеландия, адрес ...если PSR.Z ясен
0 0 1 1 1 0 1 1 н БРА НН, адрес ...если PSR.N ясен
0 0 1 1 1 1 0 0 н БРА GT, адрес ...если PSR.Z ясен и PSR.N = PSR.V
0 0 1 1 1 1 0 1 н БРА GE, адрес ...если PSR.N = PSR.V
0 0 1 1 1 1 1 0 н БРА ГТУ, адрес ...если PSR.Z сброшен и установлен PSR.C
0 0 1 1 1 1 1 1 н (Сдержанный)
0 код операции В Б д д п с Операции АЛУ: dest ← OP(W w , source )
0 1 0 0 0 В Б д д п с ADD[.B] W w , источник , dst С С Н dst ← Ww + источник
0 1 0 0 1 В Б д д п с ADDC[.B] W w , источник , dst С С Н dst ← Ww + src + C
0 1 0 1 0 В Б д д п с SUB[.B] W w , источник , dst С С Н dst ← Ww − src
0 1 0 1 1 В Б д д п с SUBB[.B] W w , источник , dst С С Н dst ← Ww − ~src − C̅ = Ww + ~src + C
0 1 1 0 0 В Б д д п с AND[.B] W w , источник , dst С Н летнее время ← Ww и источник
0 1 1 0 1 В Б д д п с XOR[.B] W w , источник , dst С Н dst ← Ww ^ src
0 1 1 1 0 В Б д д п с IOR[.B] W w , источник , dst С Н летнее время ← Ww | источник
0 1 1 1 1 В Б д д п с MOV[.B] источник , dst С Н dst ← src (разрешен режим смещения)
1 0 0 0 0 ж д MOV f ,W d Вд ← f
1 0 0 0 1 ж с MOV W s , f е ← Ws
1 0 0 1 0 к Б к д к с MOV[.B] [W s + s10 ],W d Загрузка с 10-битным смещением
1 0 0 1 1 к Б к д к с MOV[.B] Ws ,[ Wd + s10 ] Хранить с 10-битным смещением
1 0 1 0 0 код операции б С Б —0— п с Битовые операции над источником
1 0 1 0 0 0 0 0 б 0 Б —0— п с BSET[.B] # b , источник Установить бит b в src
1 0 1 0 0 0 0 1 б 0 Б —0— п с BCLR[.B] # b , источник Очистить бит b файла src
1 0 1 0 0 0 1 0 б 0 Б —0— п с BTG[.B] # b , источник Переключить бит b в src
1 0 1 0 0 0 1 1 б 0 0 —0— п с BTST.C# b , источник С Установите PSR.C = бит b источника.
1 0 1 0 0 0 1 1 б 1 0 —0— п с BTST.Z# b , источник С Установите PSR.Z = бит b в src.
1 0 1 0 0 1 0 0 б С 0 —0— п с БТСТС. z # b , источник К/З Проверьте бит b в src (в C или Z), затем установите
1 0 1 0 0 1 0 1 С В 0 —0— п с БЦСТ. z W w , источник К/З Тестовый бит Ww src
1 0 1 0 0 1 1 0 б 0 0 —0— п с БТСС# б , источник Тестовый бит, пропустить, если установлен
1 0 1 0 0 1 1 1 б 0 0 —0— п с БТС# б , источник Тестовый бит, пропустить, если сброшен
1 0 1 0 1 код операции б ж Битовые операции над f
1 0 1 0 1 0 0 0 б ж б BSET[.B] f ,# b Установить бит b из f
1 0 1 0 1 0 0 1 б ж BCLR.B f ,# b Очистить бит b из f
1 0 1 0 1 0 1 0 б ж БТГ.Б f ,# b Переключить бит b из f
1 0 1 0 1 0 1 1 б ж БЦТ.Б ж ,# б С Тестовый бит b из f
1 0 1 0 1 1 0 0 б ж БЦТС.Б ж ,# б С Проверьте бит b в f, затем установите
1 0 1 0 1 1 0 1 С В 0 —0— п с БСВ. z src ,W w Скопируйте PSW.C или PSW.Z в бит Ww файла src.
1 0 1 0 1 1 1 0 б ж БТСС ж ,# б Тестовый бит, пропустить, если установлен
1 0 1 0 1 1 1 1 б ж BTSC f ,# b Тестовый бит, пропустить, если сброшен
1 0 1 1 0 0 код операции Б к д Непосредственные регистровые операции: W d ← OP(W d , k )
1 0 1 1 0 0 0 0 0 Б к д ADD[.B] # u10 ,W d С С Н Wd ← Wd + k
1 0 1 1 0 0 0 0 1 Б к д АЦП[.B] # u10 ,W d С С Н Wd ← Wd + k + C
1 0 1 1 0 0 0 1 0 Б к д SUB[.B] # u10 ,W d С С Н Wd ← Wd − k
1 0 1 1 0 0 0 1 1 Б к д SUBB[.B] # u10 ,W d С С Н Wd ← Wd − k − C̅
1 0 1 1 0 0 1 0 0 Б к д AND[.B] # u10 ,W d С Н Wd ← Wd & k
1 0 1 1 0 0 1 0 1 Б к д XOR[.B] # u10 ,W d С Н Wd ← Wd ^ k
1 0 1 1 0 0 1 1 0 Б к д IOR[.B] # u10 ,W d С Н Вд ← Вд | к
1 0 1 1 0 0 1 1 1 Б к д MOV[.B] # u10 ,W d Вд ← к
1 0 1 1 0 1 код операции Б Д ж Операции АЛУ: dest ← OP( f ,W0)
1 0 1 1 0 1 0 0 0 Б Д ж ADD[.B] f [,WREG] С С Н dest ← f + W0
1 0 1 1 0 1 0 0 1 Б Д ж АЦП[.B] f [,WREG] С С Н dest ← f + W0 + C
1 0 1 1 0 1 0 1 0 Б Д ж SUB[.B] f [,WREG] С С Н dest ← f − W0
1 0 1 1 0 1 0 1 1 Б Д ж SUBB[.B] f [,WREG] С С Н dest ← f − W0 + C̅
1 0 1 1 0 1 1 0 0 Б Д ж И[.B] f [,WREG] С Н dest ← f и W0
1 0 1 1 0 1 1 0 1 Б Д ж XOR[.B] f [,WREG] С Н dest ← f ^ W0
1 0 1 1 0 1 1 1 0 Б Д ж IOR[.B] f [,WREG] С Н место ← ж | П0
1 0 1 1 0 1 1 1 1 Б 1 ж MOV[.B] WREG, f е ← W0
1 0 1 1 1 0 0 опк В д 0 п с Умножение 16×16→32
1 0 1 1 1 0 0 0 0 В д 0 п с MUL.UU W w , источник ,W d Wd+1:Wd ← Ww × src (без знака)
1 0 1 1 1 0 0 0 1 В д 0 п с MUL.US W w , src ,W d Wd+1:Wd ← Ww × src (источник со знаком)
1 0 1 1 1 0 0 1 0 В д 0 п с МУЛ.СУ W w , src ,W d Wd+1:Wd ← Ww × src (Ww со знаком)
1 0 1 1 1 0 0 1 1 В д 0 п с MUL.SS W w , src ,W d Wd+1:Wd ← Ww × src (со знаком)
1 0 1 1 1 0 1 опк Б д д п с Доступ к памяти программы (только косвенные режимы)
1 0 1 1 1 0 1 0 0 Б д д п с TBLRDL[.B] источник , dst dst ← ROM[TBLPAG:src] (биты 15:0)
1 0 1 1 1 0 1 0 1 Б д д п с TBLRDH[.B] источник , dst dst ← ROM[TBLPAG:src] (биты 23:16)
1 0 1 1 1 0 1 1 0 Б д д п с TBLWTL[.B] источник , dst ROM[TBLPAG:dst] ← источник (биты 15:0)
1 0 1 1 1 0 1 1 1 Б д д п с TBLWTH[.B] источник , dst ROM[TBLPAG:dst] ← src (биты 23:16)
1 0 1 1 1 1 0 0 0 Б 0 ж MUL[.B] f W3:W2 ← f × W0 (без знака)
1 0 1 1 1 1 0 0 0 Б 1 (Сдержанный)
1 0 1 1 1 1 0 0 1 (Сдержанный)
1 0 1 1 1 1 0 1 (Сдержанный)
1 0 1 1 1 1 1 0 0 0 —0— д 0 п с MOV.D источник ,W d Загрузить пару регистров
1 0 1 1 1 1 1 0 1 0 д д —0— с 0 MOV.DW с , дневное время Пара регистров магазина
1 0 1 1 1 1 1 1 (Сдержанный)
1 1 0 0 0 м А С х и я дж а DSP MAC (только dsPIC)
1 1 0 0 1 Другие инструкции DSP (только dsPIC)
1 1 0 0 1 1 1 1 0 0 —0— д п с FF1R источник ,W d С Найдите первый справа (младший бит)
1 1 0 0 1 1 1 1 1 0 —0— д п с FF1L источник ,W d С Найдите первый слева (старший бит)
1 1 0 1 0 0 код операции Б д д п с Сдвиг/поворот общего операнда
1 1 0 1 0 0 0 0 0 Б д д п с SL[.B] источник , dst С С Н dst ← src << 1, сдвиг влево (перенос)
1 1 0 1 0 0 0 1 0 Б д д п с LSR[.B] источник , dst С С Н dst ← src >> 1, логический сдвиг вправо
1 1 0 1 0 0 0 1 1 Б д д п с ASR[.B] источник , dst С С Н dst ← src >> 1, арифметический сдвиг вправо
1 1 0 1 0 0 1 0 0 Б д д п с RLNC[.B] источник , dst С Н dst ← src <<< 1, повернуть влево (без переноса)
1 1 0 1 0 0 1 0 1 Б д д п с RLC[.B] источник , dst С С Н C:dst ← src:C << 1, повернуть влево посредством переноса
1 1 0 1 0 0 1 1 0 Б д д п с RRNC[.B] источник , dst С Н dst ← src >>> 1, повернуть вправо (без переноса)
1 1 0 1 0 0 1 1 1 Б д д п с RRC[.B] источник , dst С С Н dst:C ← C:src >> 1, повернуть вправо через перенос
1 1 0 1 0 1 код операции Б Д ж Сдвиг/поворот f
1 1 0 1 0 1 0 0 0 Б Д ж SL[.B] f [,WREG] С С Н dest ← f << 1, сдвиг влево (перенос)
1 1 0 1 0 1 0 1 0 Б Д ж LSR[.B] f [,WREG] С С Н dest ← f >> 1, логический сдвиг вправо
1 1 0 1 0 1 0 1 1 Б Д ж ASR[.B] f [,WREG] С С Н dest ← f >> 1, арифметический сдвиг вправо
1 1 0 1 0 1 1 0 0 Б Д ж RLNC[.B] f [,WREG] С Н dest ← f <<< 1, повернуть влево (без переноса)
1 1 0 1 0 1 1 0 1 Б Д ж RLC[.B] f [,WREG] С С Н C:dest ← f:C << 1, повернуть влево посредством переноса
1 1 0 1 0 1 1 1 0 Б Д ж RRNC[.B] f [,WREG] С Н dest ← f >>> 1, повернуть вправо (без переноса)
1 1 0 1 0 1 1 1 1 Б Д ж RRC[.B] f [,WREG] С С Н dest:C ← C:f >> 1, повернуть вправо через перенос
1 1 0 1 1 0 0 0 В т д Д 0 0 с Шаг разделения (префикс с REPEAT #17)
1 1 0 1 1 0 0 0 0 —0— д 0 0 0 с DIV.SW d ,W с С С Н W0 ← Wd/Ws, W1 ← остаток
1 1 0 1 1 0 0 0 0 т д 1 0 0 с DIV.SD W d ,W s С С Н W0 ← Wt:Wd/Ws, W1 ← остаток
1 1 0 1 1 0 0 0 1 —0— д 0 0 0 с DIV.UW d ,W с С С Н W0 ← Wd/Ws, W1 ← остаток
1 1 0 1 1 0 0 0 1 т д 1 0 0 с DIV.UD W d ,W s С С Н W0 ← Wt:Wd/Ws, W1 ← остаток
1 1 0 1 1 0 0 1 0 т —0— 0 0 0 с DIVF Вт т ,Вт с С С Н W0 ← Wt:0/Ws, W1 ← остаток
1 1 0 1 1 0 0 1 1 (Сдержанный)
1 1 0 1 1 0 1 (Сдержанный)
1 1 0 1 1 1 код операции В д я 0 0 с Сдвинуть/повернуть несколько
1 1 0 1 1 1 0 0 0 В д 0 0 0 с SL W w ,W s ,W d С Н Wd ← Ww << Ws
1 1 0 1 1 1 0 0 0 В д 1 0 0 к SL W v ,# u4 ,W d С Н Wd ← Ww << k
1 1 0 1 1 1 1 0 0 В д 0 0 0 с ЛСР W w ,W s ,W d С Н Wd ← Ww >> Ws, логический сдвиг вправо
1 1 0 1 1 1 1 0 0 В д 1 0 0 к LSR W v ,# u4 ,W d С Н Wd ← Ww >> k, логический сдвиг вправо
1 1 0 1 1 1 1 0 1 В д 0 0 0 с ASR W w ,W s ,W d С Н Wd ← Ww >> Ws, арифметический сдвиг вправо
1 1 0 1 1 1 1 0 1 В д 1 0 0 к АСР W v , # u4 , W d С Н Wd ← Ww >> k, арифметический сдвиг вправо
1 1 0 1 1 1 1 1 0 —0— д п с FBCL источник ,W d С Найдите допустимый арифметический сдвиг нормализации
1 1 1 0 0 0 0 0 0 —0— Б 0 0 0 п с CP0[.B] источник С С Н Сравнить с нулем, src − 0
1 1 1 0 0 0 0 1 0 В Б 0 0 0 п с CP[.B] W w , источник С С Н Сравните, Ww − src (Ww + ~src + 1)
1 1 1 0 0 0 0 1 1 В Б 0 0 0 п с CPB[.B] W w , источник С С Н Сравните с заимствованием, Ww − src − C̅ (Ww + ~src + C)
1 1 1 0 0 0 1 0 0 Б 0 ж CP0[.B] f С С Н Сравните с нулем, f − 0
1 1 1 0 0 0 1 1 0 Б 0 ж CP[.B] f С С Н Сравните, f − W0
1 1 1 0 0 0 1 1 1 Б 0 ж CPB[.B] f С С Н Сравните с заимствованием, f − W0 − C̅ (f + ~W0 + C)
1 1 1 0 0 1 0 (Сдержанный)
1 1 1 0 0 1 1 опк В Б —0— с Сравните и пропустите
1 1 1 0 0 1 1 0 0 В Б —0— с CPSGT[.B] W w ,W s ...если Ww > Ws, подписано
1 1 1 0 0 1 1 0 1 В Б —0— с CPSLT[.B] W w ,W s ...если Ww < Ws, со знаком
1 1 1 0 0 1 1 1 0 В Б —0— с CPSNE[.B] W w ,W s ... если Ww ≠ Ws
1 1 1 0 0 1 1 1 1 В Б —0— с CPSNE[.B] W w ,W s ...если Ww = Ws
1 1 1 0 1 0 0 0 0 Б д д п с INC[.B] источник , dst С С Н dst ← источник+1
1 1 1 0 1 0 0 0 1 Б д д п с INC2[.B] источник , dst С С Н летнее время ← источник+2
1 1 1 0 1 0 0 1 0 Б д д п с DEC[.B] источник , летнее время С С Н dst ← источник-1
1 1 1 0 1 0 0 1 1 Б д д п с DEC2[.B] источник , dst С С Н dst ← источник-2
1 1 1 0 1 0 1 0 0 Б д д п с NEG[.B] источник , dst С С Н dst ← ~src+1
1 1 1 0 1 0 1 0 1 Б д д п с COM[.B] источник , dst С Н dst ← ~src
1 1 1 0 1 0 1 1 0 Б д д —0— CLR[.B] dst летнее время ← 0
1 1 1 0 1 0 1 1 1 Б д д —0— SETM[.B] день летнее время ← ~0
1 1 1 0 1 1 0 0 0 Б Д ж INC[.B] f [,WREG] С С Н место ← f+1
1 1 1 0 1 1 0 0 1 Б Д ж INC2[.B] f [,WREG] С С Н место ← f+2
1 1 1 0 1 1 0 1 0 Б Д ж DEC[.B] f [,WREG] С С Н dest ← f−1
1 1 1 0 1 1 0 1 1 Б Д ж DEC[.B] f [,WREG] С С Н dest ← f−2
1 1 1 0 1 1 1 0 0 Б Д ж NEG[.B] f [,WREG] С С Н место ← ~f+1
1 1 1 0 1 1 1 0 1 Б Д ж COM[.B] f [,WREG] С Н место ← ~f
1 1 1 0 1 1 1 1 0 Б Д ж CLR[.B] f [,WREG] рука ← 0
1 1 1 0 1 1 1 1 1 Б Д ж SETM[.B] f [,WREG] начало ← ~0
1 1 1 1 0 0 м А 1 х и я дж опк DSP MPY/MAC/ED/EDAC (только dsPIC)
1 1 1 1 0 1 (Сдержанный)
1 1 1 1 1 0 0 0 ж 0 НАЖМИТЕ f Нажмите f на вершину стека
1 1 1 1 1 0 0 1 ж 0 ПОП ф Вытащить f из верхней части стека
1 1 1 1 1 0 1 0 0 0 к ЛНК# u14 Нажмите W14, W14 ← W15, W15 += k
1 1 1 1 1 0 1 0 1 0 —0— УЛНК W15 ← W14, поп W14
1 1 1 1 1 0 1 1 0 0 000 д п с ЮВ исходник , летнее время С С Н dst ←sign_extend(src), копировать бит 7 в биты 15:8
1 1 1 1 1 0 1 1 1 0 000 д п с ZE исходный код , летнее время 1 С 0 dst ← zero_extend(src), сбросить биты 15:8
1 1 1 1 1 1 0 0 0 0 к ЧТО-ТО # u14 Запретить прерывание на k +1 цикл
1 1 1 1 1 1 0 1 0 0 000 д 000 с EXCH W s ,W d Поменять содержимое регистров Ws, Wd
1 1 1 1 1 1 0 1 0 1 000 0000 000 с DAW.BW с С Десятичная настройка на основе C, DC
1 1 1 1 1 1 0 1 1 Б 000 0000 000 с SWAP[.B] Вт с Поменяйте местами половинки Ws
1 1 1 1 1 1 1 0 0 0 —0— ПЕРЕЗАГРУЗИТЬ Программный сброс
1 1 1 1 1 1 1 0 0 1 0 —0— к PWRSAV # u1 Перейти в спящий режим или режим ожидания
1 1 1 1 1 1 1 0 0 1 1 —0— CLRWDT Очистить сторожевой таймер
1 1 1 1 1 1 1 0 1 0 0 —0— ПОП.С Поп-теневые регистры (W0–3, часть PSR)
1 1 1 1 1 1 1 0 1 0 1 —0— НАЖМИТЕ.С Push теневые регистры (W0–3, часть PSR)
1 1 1 1 1 1 1 0 1 1 (Сдержанный)
1 1 1 1 1 1 1 1 НОПР Нет операции (версия №2)
  1. ^ Технический паспорт PIC10F200/202/204/206 (PDF) . Микрочиповая технология. 2007. с. 52. Архивировано из оригинала (PDF) 11 августа 2015 г. Проверено 15 января 2015 г.
  2. ^ «Elan Electronics Co., Ltd. Elan Electronics снова создает будущее! »
  3. ^ ELAN Microelectronics Corp. (26 апреля 2016 г.), 8-битный микроконтроллер EM78P157N с OTP ROM. Спецификация продукта (PDF) , версия 1.3, заархивировано (PDF) из оригинала 04 марта 2016 г. , получено 6 июня 2020 г.
  4. ^ Перейти обратно: а б ELAN Microelectronics Corp. (25 апреля 2016 г.), 8-битный микропроцессор EM78P143 с OTP ROM. Спецификация продукта (PDF) , версия 1.7, стр. 77 , получено 6 июня 2020 г.
  5. ^ ELAN Microelectronics Corp. (апрель 2016 г.), 8-битный микропроцессор EM78P346N с OTP ROM. Спецификация продукта (PDF) , версия 1.5, стр. 77 , получено 11 июля 2019 г.
  6. ^ ELAN Microelectronics Corp. (17 апреля 2000 г.), 8-битный микроконтроллер EM78860 (PDF) , стр. 17 , получено 11 июля 2019 г.
  7. ^ ELAN Microelectronics Corp. (15 марта 2013 г.), EM78F648/644/642/641N/548/544/542/541N Спецификация продукта 8-битного микроконтроллера серии Flash (PDF) , версия 1.2, стр. 162–165 , получено в 2019-07 гг. -11
  8. ^ Получено из таблиц кодировки инструкций в Elan eUIDE II v2.19.60.14 , выпущено 1 мая 2019 г., по состоянию на 13 июля 2019 г. В частности Bin/*.cfg файлы.
  9. ^ ELAN Microelectronics Corp. (14 января 2014 г.), 15-битный набор инструкций EM78XXX (PDF) , получено 13 июля 2019 г.
  10. ^ «Представляем улучшенную архитектуру среднего уровня» (PDF) . Микрочип .
  11. ^ Перейти обратно: а б Holtek Semiconductor Inc. (11 декабря 2016 г.), Приложения с расширенным набором команд HT8 MCU (PDF) (примечания по применению), AN0407E , получено 9 февраля 2024 г.
  12. ^ Holtek Semiconductor Inc. (26 ноября 2019 г.), 8-битный Flash RF TX/RX MCU 2,4 ГГц BC66F840/BC66F850/BC66F860 (PDF) (технические данные), версия 1.60, стр. 32 , получено 9 февраля 2024 г. Обратите внимание, что адреса операндов переходят только в 0xFF, а дополнительная ОЗУ адресуется банком.
  13. ^ Вольф, Эш «Ниндзи» (12 декабря 2018 г.). «Мышиные приключения №3: Написание дизассемблера» . Проверено 8 июля 2019 г.
  14. ^ Карлсон, Джей (6 сентября 2019 г.). «Что там с этими 3-центовыми микроконтроллерами? (Обзор Padauk PMS150C и друзей)» . Проверено 18 мая 2020 г.
  15. ^ Перейти обратно: а б «Ужасный» микроконтроллер за 3 цента — краткий обзор микроконтроллеров стоимостью менее 0,10 доллара» . Блог Тима . 12 августа 2019 года . Проверено 18 мая 2020 г.
  16. ^ «Бесплатная документация PDK» . Микросхемы Padauk имеют интересную архитектуру, которую можно рассматривать как расширение архитектуры Microchip PIC.
  17. ^ «Чиптюны на ATtiny4 и 3 Cent Micro: портирование на Падук» . По мнению некоторых, набор команд Падаука во многом основан на старых PIC, при этом большинство операций выполняется в одном аккумуляторном регистре.
  18. ^ Дженни Лист «Все, что вы хотите знать о самых дешевых процессорах» .2019.
  19. ^ Вольф, Эш «Ниндзи» (12 декабря 2018 г.). «Документация к микроконтроллерам PADAUK FPPA» . Гитхаб . Проверено 18 мая 2020 г.
  20. ^ Padauk Technology Co. Ltd. (11 декабря 2018 г.). «8-битный контроллер ввода-вывода типа OTP PMC150/PMS150» (PDF) (техническое описание). Версия 1.8. стр. 38–51. PDK-DS-PMX150-EN-V108 . Проверено 8 июня 2020 г.
  21. ^ Вольф, Эш «Ниндзи» (23 мая 2020 г.). «Набор инструкций основных устройств PADAUK FPPA (14 бит)» . Проверено 8 июня 2020 г.
  22. ^ Padauk Technology Co. Ltd. (18 июня 2019 г.). «Технические данные контроллера ввода-вывода типа MTP PFS154» (PDF) . Версия 1.04. стр. 71–84. ПДК-ДС-ПФС154_РН_В104 . Проверено 9 июня 2020 г.
  23. ^ «Микрочипы PIC и C — исходный код и пример кода» .
  24. ^ Microchip Technology, Inc. (2007), Лист данных PIC18F1220/1320 (PDF) , получено 2 апреля 2012 г.
  25. ^ «Microchip Technology представляет самые производительные в мире 16-разрядные микроконтроллеры: dsPIC» . Архивировано из оригинала 13 декабря 2004 г.
  26. ^ Справочное руководство программиста dsPIC30F (PDF) , Microchip Technology, 2008, DS70157C , получено 2 июля 2012 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2af4391b80652669e5fae60cc0d5d6e3__1709212800
URL1:https://arc.ask3.ru/arc/aa/2a/e3/2af4391b80652669e5fae60cc0d5d6e3.html
Заголовок, (Title) документа по адресу, URL1:
PIC instruction listings - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)