PIC - это programmable integrated circuit, "программируемая интегральная схема" - так фирма Microchip преподносит свои микроконтроллеры.
Фирма микрочип на данный момент выпускает несколько семейств КМОП микроконтроллеров с внутренним ПЗУ, ОЗУ, таймерами, АЦП, ШИМ и другими периферийными модулями. Самые маленькие это PIC10 -3–6 вывода, PIC12 - 8 выводов, PIC16- 14-68 выводов, PIC17- 40-84 вывода, PIC18- 28-84 вывода, dsPIC30-28-64 вывода, rfPIC12- 18-20 выводов, со встроенным радиоканалом. Каждое семейство имеет свое назначение и область применения.
Идентифицируют тип микроконтроллера согласно коду, следующему за семейством. То есть в обозначении идут буквы указывающие на тип памяти программ : EPROM- обозначается индексом “С”, ROM- обозначается индексом “CR”, FLASH- обозначается индексом «F». Если перед этими буквами стоит индекс “L” то это означает что данный микроконтроллер работает в расширенном диапазоне питания .
Например, PIC16LF
Далее идет порядковый номер разработки, 2-4 цифры.
Например, 84 - вроде как модель.
Буква A после номера - модификация (улучшенный вариант)
Следующие 2 цифры после номера через дефис обозначают максимальную частоту кварцевого генератора в мГц.
Например, 04 - максимальная паспортная тактовая частота (4MHz)
Последующая буква за тактовой частотой - означает рабочую температуру кристалла
I=-40°C...+85°C,
E=-40°C...+125°C,
при отсутствии буквы = 0°C...+70°C.
И, наконец, последние буквы через косую черту - обозначают тип корпуса табл1.
Например, PIC16F873-20/P - означает микроконтроллер фирмы микрочип среднего семейства, с FLASH памятью программ (многократное перепрограммирование порядка 1000 циклов), максимальная частота кварца 20мГц, рабочий диапазон температур 0°C...+70°C, корпус пластиковый типа DIP.
L | PLCC (пластиковый выводной кристаллоноситель) |
P | пластиковый DIP |
S | кристалл в ячеистой упаковке |
W | кристалл в форме пластины |
MR | микромодуль на ленте, 8 контактный, 35 мм |
MT | микромодуль на подносе, 8 контактный |
OT | SOT-23, 5 контактный |
SL | SO 150 mil, 14 выводный |
SM | SO 207 mil, 8 выводный |
SN | SO 150 mil, 8 выводный |
SO | SOIC 300 mil |
SS | пластиковый узкий SSOP |
ST | тонкий узкий SO (4.4 мм) |
TO | пластиковый транзисторный, 3 выводный |
TS | тонкий SO (8x20 мм) |
TT | маленький пластиковый транзисторный, 3 выводный |
VS | очень маленький SO (8x12 мм) |
WF | нарезанная пластина |
CL | CERQUAD с окошком |
JW | CERDIP с окошком для УФ стирания |
PQ | PQFP (пластиковый, квадратный, плоский) |
PT | TQFP (тонкий, пластиковый, квадратный, плоский) |
SP | пластиковый DIP |
SB | COB (кристалл на плате) |
СИСТЕМА КОМАНД PIC МИКРОКОНТРОЛЛЕРОВ
- содержит 35 инструкций, полный список приведен в табл.2. Команды разделены на три группы: байт ориентированные, бит ориентированные, команды управления и операций с константами.
Табл.2
Мнемоника команды | Описание | Циклов | Изм. флаги |
Байт ориентированные команды | |||
ADDWF f,d | Сложение W и f | 1 | C,DC,Z |
ANDWF f,d | Побитное 'И' W и f | 1 | z |
CLRF f | Очистить f | 1 | z |
CLRW> | Очистить W | 1 | z |
COMF f,d | Инвертировать f | 1 | z |
DECF f,d | Вычесть 1 из f | 1 | z |
DECFSZ f,d | Вычесть 1 из f и пропустить если 0 | 1(2) | |
INCF f,d | Прибавить 1 Kf | 1 | z |
INCFSZ f,d | Прибавить 1 к f и пропустить если 0 | 1(2) | |
IORWF f,d | Побитное 'ИЛИ' W и f | 1 | z |
MOVF f,d | Переслать f | 1 | z |
MOVWF f | Переслать W в f | 1 | |
NOP | Нет операции | 1 | |
RLF f,d | Циклический сдвиг f влево через перенос | 1 | с |
RRF f,d | Циклический сдвиг f вправо через перенос | 1 | с |
SUBWF f,d | Вычесть W из f | 1 | C.DC.Z |
SWAPF f,d | Поменять местами полубайты в регистре f | 1 | |
XORWF f,d | Побитное исключающее ИЛИ1 W и f | 1 | z |
Бит ориентированные команды | |||
BCF f,b | Очистить бит b в регистре f | 1 | |
BSF f,b | Установить бит b в регистре f | 1 | |
BTFSC f,b | Проверить бит b в регистре f, пропустить если 0 | 1(2) | |
BTFSS f,b | Проверить бит b в регистре f, пропустить если 1 | 1(2) | |
Команды управления и операций с константами | |||
ADDLW k | Сложить константу с W | 1 | C,DC,Z |
ANDLW k | Побитное 'И' константы и W | 1 | Z |
CALL k | Вызов подпрограммы | 2 | |
CLRWDT | Очистить WDT | 1 | -TO,-PD |
GOTO k | Безусловный переход | 2 | |
IORLW k | Побитное 'ИЛИ' константы и W | 1 | Z |
MOVLW k | Переслать константу в W | 1 | |
RETFIE | Возврат из подпрограммы с разрешением прерываний | 2 | |
RETLW k | Возврат из подпрограммы с загрузкой константы в W | 2 | |
RETURN | Возврат из подпрограммы | 2 | |
SLEEP | Перейти в режим SLEEP | 1 | -TO.-PD |
SUBLW k | Вычесть W из константы | 1 | C,DC,Z |
XORLW k | Побитное 'исключающее ИЛИ' константы и W | 1 | Z |
В таблице:
w -означает рабочий регистр, в некоторых микроконтроллерах данный регистр называют аккумулятором. Например при выполнении команды над регистром w и константой результат будет помещен в w (аккумулятор).
f – означает адрес регистра.
d –указатель адресата результата операции, при d=0 –результат сохраняется в регистре w, при d=1 –результат сохраняется в регистре f. В кодах программы вместо d иногда напрямую указывают регистр f или w.
b – номер бита в 8 –разрядном регистре.
k – константа, под которой понимается метка или 8 –разрядные данные.
C – флаг признака переноса.
DC- флаг признака вспомогательного переноса из младшего полубайта в старший.
Z – флаг признака нулевого результата, выполненной арифметической или логической операции.
–TO=1 – флаг выполнения команды clrwdt, sleep или включено питание,
–TO=0 – сработал wdt .
–PD=1 - флаг выполнения команды clrwdt или включено питание,
–PD=0 – выполнена команда sleep .