 
        
        Организация памяти семейства микроконтроллеров 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.
Рис
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).
Рис.
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 программирования МК программатором | 
