
- •1.1. Что такое микропроцессор?
- •1.2. Шинная структура связей
- •1.4. Архитектура микропроцессорных систем
- •1.5. Типы микропроцессорных систем
- •2.1. Шины микропроцессорной системы
- •2.2. Циклы обмена информацией
- •2.2.1. Циклы программного обмена
- •2.2.2. Циклы обмена по прерываниям
- •2.2.3. Циклы обмена в режиме пдп
- •2.3. Прохождение сигналов по магистрали
- •2.4. Функции устройств магистрали
- •2.4.1. Функции процессора
- •2.4.2. Функции памяти
- •2.4.3. Функции устройств ввода/вывода
- •3.1. Адресация операндов
- •3.1.1. Методы адресации
- •3.1.2. Сегментирование памяти
- •3.1.3. Адресация байтов и слов
- •3.2. Регистры процессора
- •3.3. Система команд процессора
- •3.3.1. Команды пересылки данных
- •3.3.2. Арифметические команды
- •3.3.3. Логические команды
- •3.3.4. Команды переходов
- •3.4. Быстродействие процессора
- •4.1. Классификация и структура микроконтроллеров
- •4.2. Процессорное ядро микроконтроллера
- •4.2.1. Структура процессорного ядра мк
- •4.2.2. Система команд процессора мк
- •4.2.3. Схема синхронизации мк
- •4.3. Память программ и данных мк
- •4.3.1. Память программ
- •4.3.2. Память данных
- •4.3.3. Регистры мк
- •4.3.4. Стек мк
- •4.3.5. Внешняя память
- •4.4. Порты ввода/вывода
- •4.5. Таймеры и процессоры событий
- •4.6. Модуль прерываний мк
- •4.7. Минимизация энергопотребления в системах на основе мк
- •4.8. Тактовые генераторы мк
- •4.9. Аппаратные средства обеспечения надежной работы мк
- •4.9.1. Схема формирования сигнала сброса мк
- •4.9.2. Блок детектирования пониженного напряжения питания
- •4.9.3. Сторожевой таймер
- •4.10. Дополнительные модули мк
- •4.10.1. Модули последовательного ввода/вывода
- •4.10.2. Модули аналогового ввода/вывода
- •5.1. Основные особенности микроконтроллеров серии pic
- •5.1.1. Состав и назначение семейств pic-контроллеров
- •5.1.2. Микроконтроллеры семейств pic16cxxx и pic17cxxx
- •5.1.3. Особенности архитектуры микроконтроллеров семейства pic16cxxx
- •5.2. Микроконтроллеры подгруппы pic16f8x
- •5.2.1. Основные характеристики
- •5.2.2. Особенности архитектуры
- •5.2.3. Схема тактирования и цикл выполнения команды
- •5.2.4. Организация памяти программ и стека
- •5.2.5. Организация памяти данных
- •5.2.6. Регистры специального назначения
- •5.2.7. Счетчик команд
- •5.2.8. Прямая и косвенная адресации
- •5.2.9. Порты ввода/вывода
- •5.2.10. Модуль таймера и регистр таймера
- •5.2.11. Память данных в рпзу (eeprom)
- •5.2.12. Организация прерываний
- •5.2.13. Специальные функции
- •5.3. Система команд микроконтроллеров подгруппы pic16f8x
- •5.3.1. Перечень и форматы команд
- •5.3.2. Команды работы с байтами
- •5.3.3. Команды работы с битами
- •5.3.4. Команды управления и работы с константами
- •5.3.5. Особенности программирования и отладки
- •6.1. Разработка микропроцессорной системы на основе микроконтроллера
- •6.1.1. Основные этапы разработки
- •6.1.2. Разработка и отладка аппаратных средств
- •6.1.3. Разработка и отладка программного обеспечения
- •6.1.4. Методы и средства совместной отладки аппаратных и программных средств
5.3. Система команд микроконтроллеров подгруппы pic16f8x
5.3.1. Перечень и форматы команд
Микроконтроллеры подгруппы PIC16F8X имеют простую и эффективную систему команд, состоящую всего из 35 команд.
Каждая команда МК подгруппы PIC16F8X представляет собой 14-битовое слово, разделенное на код операции (OPCODE), и поле для одного и более операндов, которые могут участвовать или не участвовать в этой команде. Система команд PIC16F8X является ортогональной и включает в себя команды работы с байтами, команды работы с битами и операции с константами и команды управления. В таблице 5.10 приведены описания полей команд.
Таблица 5.10. Описания полей команд МК семейства PIC16CXXX. | |
Поле |
Описание |
f |
Адрес регистра |
w |
Рабочий регистр |
b |
Номер бита в 8-разрядном регистре |
k |
Константа |
x |
Не используется. Ассемблер формирует код с x=0 |
d |
Регистр назначения: d=0– результат в регистреw d=1– результат в регистреf По умолчанию d=1 |
label |
Имя метки |
TOS |
Beршина стека |
PC |
Счетчик команд |
PCLATH |
Регистр PCLATH |
GIE |
Бит разрешения всех прерываний |
WDT |
Сторожевой таймер |
/TO |
Тайм-аут |
/PD |
Выключение питания |
dest |
Регистр назначения: рабочий регистр wили регистр, заданный в команде |
[ ] |
Необязательные параметры |
( ) |
Содержание |
→ |
Присвоение |
< > |
Поле номера бита |
∈ |
Из набора |
Для команд работы с байтами f обозначает регистр, с которым производится действие; d – бит, определяющий, куда положить результат. Если d =0, то результат будет помещен в регистр w, при d=1 результат будет помещен в регистр " f ", упомянутый в команде.
Для команд работы с битами b обозначает номер бита, участвующего в команде, а f – это регистр, в котором данный бит расположен.
Для команд передачи управления и операций с константами, k обозначает восьми- или одиннадцатибитную константу.
Почти все команды выполняются в течение одного командного цикла. В двух случаях исполнение команды занимает два командных цикла:
проверка условия и переход;
изменение программного счетчика как результат выполнения команды.
Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время исполнения командного цикла будет 1 мкс.
Основные форматы команд МК изображены на рис. 5.15.
Система команд МК подгруппы PIC16F8X приведена в табл. 5.11.
Рис. 5.15. Основные форматы команд.
Таблица 5.11. Система команд МК подгруппы PIC16F8X. | ||||
Мнемоника |
Описание команды |
Циклы |
Биты состояния |
Прим. |
ADDWF f, d |
Сложение Wсf |
1 |
C,DC,Z |
1, 2 |
ANDWF f, d |
Логическое И Wиf |
1 |
Z |
1, 2 |
CLRF f |
Сбросрегистраf |
1 |
Z |
2 |
CLRW |
СбросрегистраW |
1 |
Z |
|
COMF f, d |
Инверсия регистра f |
1 |
Z |
1, 2 |
DECF f, d |
Декремент регистра f |
1 |
Z |
1, 2 |
DECFSZ f, d |
Декремент f, пропустить команду, если 0 |
1(2) |
|
1, 2, 3 |
INCF f, d |
Инкремент регистра f |
1 |
Z |
1, 2 |
INCFSZ f, d |
Инкремент f, пропустить команду, если 0 |
1(2) |
|
1, 2, 3 |
IORWF f, d |
Логическое ИЛИ Wиf |
1 |
Z |
1, 2 |
MOVF f, d |
Пересылка регистра f |
1 |
Z |
1, 2 |
MOVWF f |
Пересылка Wвf |
1 |
|
|
NOP - |
Холостая команда |
1 |
|
|
RLF f, d |
Сдвиг fвлево через перенос |
1 |
C |
1, 2 |
RRF f, d |
Сдвиг fвправо через перенос |
1 |
C |
1, 2 |
SUBWF f, d |
Вычитание Wизf |
1 |
C,DC,Z |
1, 2 |
SWAPF f, d |
Обмен местами тетрад в f |
1 |
|
1, 2 |
XORWF f, d |
Исключающее ИЛИ Wиf |
1 |
Z |
1, 2 |
| ||||
BCF f, b |
Сбросбита в регистреf |
1 |
|
1, 2 |
BSF f, b |
Установка бита в регистре f |
1 |
|
1, 2 |
BTFSC f, b |
Пропустить команду, если бит в fравен нулю |
1(2) |
|
3 |
BTFSS f, b |
Пропустить команду, если бит в fравен единице |
1(2) |
|
3 |
| ||||
ADDLW k |
Сложение константы и W |
1 |
C,DC,Z |
|
ANDLW k |
Логическое И константы и W |
1 |
Z |
|
CALL k |
Вызов подпрограммы |
2 |
|
|
CLRWDT - |
Сброс сторожевого таймераWDT |
1 |
/TO,/P |
|
GOTO k |
Переход по адресу |
2 |
|
|
IORLW k |
Логическое ИЛИ константы и W |
1 |
Z |
|
MOVLW k |
Пересылка константы в W |
1 |
|
|
RETFIE - |
Возврат из прерывания |
2 |
|
|
RETLW k |
Возврат из подпрограммы с загрузкой константы в W |
2 |
|
|
RETURN - |
Возврат из подпрограммы |
2 |
|
|
SLEEP - |
Переход в режим SLEEP |
1 |
/TO,/P |
|
SUBLW k |
Вычитание Wиз константы |
1 |
C,DC,Z |
|
XORLW k |
Исключающее ИЛИ константы и W |
1 |
Z |
|
| ||||
Примечания к таблице:
|