| |
Краткая информация
по 12 битным инструкциям для
семейства микроконтроллеров
PIC16C5X
Длина каждой из инструкций PIC16c5x составляет 12-ти битное слово, разделенное на
OPCODE (часть кода команды), которая указывает на тип исполняемой команды,
и один или несколько операндов, которые в свою очередь в дальнейшем определяют
дальнейшее выполнение инструкции. Краткая информация о командах дана в
таблице 1-2
Команды подразделяются на байт-ориентированные, бит-ориентированные, символьные
и команды управления. В таблице 1-1, приведено из каких составных частей состоит
код команды в зависисмотси от ее принадлежности к выше определенным группам.
Для байт-ориентированных команд, 'f' - это обозначение файлового регистра,
а 'd' обозначает место назначения. Обозначение файлового регистра используется
для указания одного из 32 файловых регистов используемых в командах.
Обозначение места назначения используется для указания места где сохраняется
результат выполнения команды. Если 'd' равно 0, тогда результат помещается в
регистре W. Если 'd' равно 1, тогда результат помещается в
файловом регистре указанном в описании к команде.
Для бит-ориентированных команд, 'b' обозначает номер бита, который
указывает изменяемый в результате исполнения команды бит, 'f' указывает файл,
в котором находится этот бит.
Для символьных команд и команд управления 'k' обозначает 8-ми или 9-ти битную
константу или символное значение.
| Поле | Описание |
| |
| f | Адрес файлового регистра (от 0x00 до 0x7F) |
| W | Рабочий регистр (аккумулятор) |
| b | Адрес бита внутри 8-ми битного регистра |
| k | Символьное поле, константа или метка |
| x |
Любое значение(=0 или 1)
Компилятор сгенерирует код с x=0 -это нужно для совместимости со всеми
программными продуктами Microchip.
|
| d |
Выбор где сохранять результат:
d=0 (сохранять в W)
d=1 (сохранять в f)
По умолчанию d=1
|
| label | Имя метки |
| TOS | Вершина стека |
| PC | Счетчик команд (программный счетчик) |
| WDT | Сторожевой таймер |
| TO | бит Таймаута (Time-out bit) |
| PD | бит понижения питания (Power-Down bit) |
| dest | Назначение, либо регистр W либо другой регистр указанный в описании команды |
| [ ] | Опционально, т.е. необязательное использование записи, которая заключена в квадратные скобки |
| ( ) | Содержимое |
| -> | Занести в |
| < > | Битовое поле в регистре |
| E | принадлежит |
| italic | определяется пользователем |
|
Все команды выполняются за один командный цикл, кроме тех,
которые проверяют различные условия или изменяющие програмный счетчик.
В этом случае выполнение команды разтягивается на два командных цикла.
Один командный цикл состоит из 4-х периодов тактового генератора.
Т.е. если частота тактового генератора равна 4МГц, то обычная команда
выполнится за 1 мкс, команда проверяющая условия или изменяющая программный счетчик
выполнится за 2 мкс.
В таблице 1-1 показаны три формата, которые может принимать команда. Во всех примерах
для обозначения шестнадцатеричного числа используется формат: 0xhhh,
где h - шестнадцатеричное число.
| Таблица 1-1
|
Байт-ориентированные операции с файловым регистром
| 11 |
6 |
5 |
4 |
0 |
| OPCODE |
d | f(FILE #) |
|
d = 0 для записи результата в W
d = 1 для записи результата в f
f = 5-ти битный адрес файлового регистра
|
Бит-ориентированные операции с файловым регистром
| 11 |
8 |
7 |
5 |
4 |
0 |
| OPCODE |
b (BIT #) | f(FILE #) |
|
b = 3-х битный адрес
f = 5-ти битный адрес файлового регистра
|
Символьные команды и команды ветвления (кроме GOTO)
| 11 |
8 |
7 |
0 |
| OPCODE |
k (символ) |
|
k = 8-ми битное непосредственное значение
|
Символьные команды и команды ветвления - команда GOTO
| 11 |
9 |
8 |
0 |
| OPCODE |
k (символ) |
|
k = 9-ти битное непосредственное значение
|
|
|
Сводная таблица команд
|
 |