Организация памяти семейства микроконтроллеров pic16f87x
У семейства PIC16F87X существует три вида памяти:
FLASH.До 14336 байт программной памяти (PIC16F876/877). Так как PICmicro “среднего звена” имеют 14-бит архитектуру и, соответственно, 14-бит команды, память организована в виде 8Кґ14 бит. Организация памяти страничная, 4 страницы по 2Кґ14. Типовое время записи одного слова составляет 4 мс. Количество циклов стирания/записи — не менее 1000;
EEPROM.До 256 байт (PIC16F876/877) EEPROM энергонезависимой памяти данных. Доступ к ней организован побайтно через служебные регистры. Типовое время записи составляет 4 мс, количество циклов стирания/записи — не менее 100000.
RAM.До 368 байт RAM данных (PIC16F876/877). Страничная организация: 4 страницы с возможностью прямого доступа к 16 байтам из любой страницы. Предусмотрены режимы прямой и косвенной адресации.
Данное семейство характеризуется тем, что вся память доступна для записи и чтения во всём диапазоне тактовых частот, температур и питающих напряжений. Выпускаются две версии кристалла:
“F” — стандартная версия. Предназначена для работы на частотах 0–20 МГц в диапазоне питающих напряжений от 4,5 до 5,5 В;
“LF” — маломощная версия, работает в расширенном диапазоне питающих напряжений от 2,0 до 5,5 В на частотах до 4 МГц. Потребляет 20 мкА @ 32 кГц (типовое значение).
Для удобства работы с массивами после цикла записи в EEPROM устанавливается флаг прерывания.
Структурная схема мк
Рис 2.3. Обобщенная структурная схема микроконтроллера PIC16 Основные особенности архитектуры микроконтроллеров PIC.
Раздельные память и шины для команд и для данных. Разрядность ПП и шины команд - 14, ПД, регистров АЛУ и шины данных - 8.
В арсенале всего 35 простых и компактных команд. Все команды выполняются за 1 машинный цикл, кроме команд ветвления, которые выполняются за 2 машинных цикла.
Все регистры МК делятся на две группы: специальные регистры и регистры общего назначения. Обе группы составляют единое пространство - память данных, поэтому для управления функциями и настройками МК не требуются специальные команды.
Ортогональная система команд позволяет выполнить любую операцию с любым регистром, используя любой метод адресации.
В состав разных типов МК входят различные стандартные периферийные модули, выполняющие типичные для цифровых систем функции. Они освобождают ресурсы МК, упрощают программу и удешевляют изделие.
Все выводы МК, кроме выводов питания и сброса, используются как порты общего назначения. Периферийные модули не занимают монопольно выводы МК. Все коммуникации осуществляются через альтернативные функции портов. Т.е. программа может подключать модуль к внешнему выводу МК только когда это необходимо. Если модуль не используется, то он и не использует никакие выводы МК.
Несколько типов тактовых генераторов. Тактовая частота 0…20МГц.
Диапазон напряжения питания не является архитектурной особенностью, и все-таки: 2…5,5В - для низковольтных вариантов МК (LC, LF) и 3,5(4,5)…5,5В - для остальных.
Неотъемлемая составная часть микроконтроллера - это АЛУ (Арифметико-логическое устройство). АЛУ выполняет арифметические и логические операции с участием одного или двух операндов (байтов), а также битовые операции. В последнем случае операндом является байт, но операция выполняется только над одним из его битов. В состав ядра МК входит и занимает центральное место особый 8-разрядный регистр, он называется рабочим и обозначается как W (от слова Work - работа). Регистр W не имеет адреса и не отображается на адресное пространство памяти данных, поэтому его нельзя адресовать или обратиться к нему прямо или косвенно. Он участвует в операциях непосредственно. С его участием выполняются все двухоперандные операции, операции с константой и операции пересылки, в нем можно сохранить результат операции. Иногда интересует не сам результат операции, а лишь некий его признак, например, знак результата, или равен-ли результат операции нулю или нет. Эти признаки называют флагами состояния АЛУ. Таких флагов три и доступны они в виде битов регистра STATUS: бит Z: 1 - результат арифметической или логической операции равен нулю, 0 - результат операции не равен нулю; бит C: 1 - результат арифметической операции отрицательный, 0 - не отрицательный; бит DC: 1 - в результате арифметической операции был перенос единицы из младшей тетрады в старшую, 0 - переноса не было Не каждая операция влияет на тот или иной флаг. Например операция пересылки байта из регистра W в регистр памяти данных не влияет на флаги. А операция пересылки байта из регистра памяти данных в регистр W влияет на флаг Z: если пересылаемый байт равен нулю, флаг Z будет установлен, иначе сброшен. Прежде чем проверять флаг, как результат операции, загляните в таблицу операций и убедитесь, что операция воздействует на интересующий флаг.
Рис. 2.5. Цоколевка микроконтроллеров PIC16F873/876 (корпус DIP28).
Вывод |
функция |
I – вход, O - выход |
Тип входа |
Описание |
1 |
-MKLR/ Vpp/THV |
I |
ST |
Внешний сброс / напряжение программирования / тестирования МК программатором |
2 |
RA0/AN0 |
I/O |
TTL |
RA0 / аналоговый вход_0 АЦП |
3 |
RA1/AN1 |
I/O |
TTL |
RA1/ аналоговый вход_1 АЦП |
4 |
RA2/AN2/REF- |
P/O |
TTL |
RA2 / аналоговый вход_2 АЦП / вход “-” образцового напряжения для АЦП |
5 |
RA3/AN3/REF+ |
P/O |
TTL |
RA3 / аналоговый вход_3 АЦП / вход “+” образцового напряжения для АЦП |
6 |
RA4/T0CKI |
I/O |
ST |
RA4 / вход внешнего сигнала для TMR0 |
7 |
RA5/AN4/-SS |
I/O |
TTL |
RA5 / аналоговый вход_4 АЦП / Slave Select - Выбор Ведомого для синхронного параллельного порта (SSP) |
8,19 |
Vss |
P |
- |
Общий |
20 |
Vdd |
P |
- |
Питание |
9 |
OSC1/CLKIN |
I |
ST/ SMOS |
Вход генератора для кристаллического, кварцевого или RC резонатора / вход внешнего тактового сигнала |
10 |
OSC2/CLKOUT |
O |
- |
Выход генератора для кристаллического или кварцевого резонатора / выход внешнего тактового сигнала. В режиме RC генератора выход ¼ Fosc |
11 |
RC0/T1OSO /T1CKI |
I/O |
ST |
RC0 / выход осциллятораTMR1 / вход внешнего сигнала TMR1 |
12 |
RC1/T1OSI /CCP2 |
I/O |
ST |
RC1 / вход осциллятораTMR1 / или вход ЗАХВАТ/выход СРАВНЕНИЕ/выход ШИМ модуля CCP2 |
13 |
RC2/CCP1 |
I/O |
ST |
RC2 / вход ЗАХВАТ/выход СРАВНЕНИЕ/выход ШИМ модуля CCP1 |
14 |
RC3/SCK/SCL |
I/O |
ST |
RC3 / SCK SPI-шины / SCL I2C-шины (clock) |
15 |
RC4/SDI/SDA |
I/O |
ST |
RC4 / SDI (data in) SPI-шины/ SDA (data) I2C-шины |
16 |
RC5/SDO |
I/O |
ST |
RC5 / SDO (data out) SPI-шины |
17 |
RC6/TX/CK |
I/O |
ST |
RC6 / выход USARTв асинхронном режиме / тактовый сигнал USART в синхронном режиме |
18 |
RC7/RX/DT |
I/O |
ST |
RC7 / вход USARTв асинхронном режиме / данные USART в синхронном режиме |
21 |
RB0/INT |
I/O |
TTL/ST |
RB0 / внешнее прерывание |
22 |
RB1 |
I/O |
TTL |
RB1 |
23 |
RB2 |
I/O |
TTL |
RB2 |
24 |
RB3/PGM |
I/O |
TTL |
RB3 / вход разрешения низковольтного программирования |
25 |
RB4 |
I/O |
TTL |
RB4 |
26 |
RB5 |
I/O |
TTL |
RB5 |
27 |
RB6/PRG |
I/O |
TTL/ST |
RB6 / сигнал CLK программирования МК программатором |
28 |
RB7/PGD |
I/O |
TTL/ST |
RB7 / шина для внутрисхемной отладки / сигнал DATA программирования МК программатором |