Описание МК PIC16F84

 

PIC16F84 относится к семейству КМОП микроконтроллеров. Отличается  тем, что имеет внутреннее 1K x 14 бит EEPROM для программ,  8-битовые  данные  и 64байт EEPROM памяти  данных.  При  этом  отличаются  низкой  стоимостью  и  высокой производительностью. Пользователи,  которые  знакомы  с  семейством PIC16F5X могут посмотреть подробный список отличий нового  от  производимых ранее контроллеров. Все команды состоят из одного слова (14 бит шириной)  и исполняются за один цикл (400  нс  при  10  МГц),  кроме  команд  перехода, которые выполняются за два  цикла  (800  нс).  PIC16F84  имеет  прерывание, срабатывающее от четырех источников,  и  восьмиуровневый  аппаратный  стек. Периферия   включает   в   себя   8-битный   таймер/счетчик   с    8-битным программируемым предварительным делителем

(фактически 16 - битный таймер) и 13 линий двунаправленного ввода/вывода. Высокая нагрузочная способность (25 мА макс. втекающий ток, 20 мА  макс.  вытекающий  ток)  линий  ввода/вывода упрощают  внешние  драйверы  и,  тем  самым,  уменьшается  общая  стоимость системы.  Разработки   на   базе   контроллеров   PIC16F84   поддерживается ассемблером,  программным  симулятором,  внутрисхемным  эмулятором  (только фирмы Microchiр) и программатором.

Серия  PIC16F84  подходит  для  широкого  спектра  приложений  от  схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, показывающих приборов  и  связных процессоров. Наличие ПЗУ  позволяет  подстраивать  параметры  в  прикладных программах (коды  передатчика,  скорости  двигателя,  частоты  приемника  и т.д.).

Малые размеры корпусов, как для  обычного,  так  и  для  поверхностного монтажа, делает  эту  серию  микроконтроллеров  пригодной  для  портативных приложений.   Низкая   цена,   экономичность,   быстродействие,    простота использования и гибкость ввода/вывода делает PIC16F84 привлекательным даже в тех  областях,  где  ранее  не  применялись  микроконтроллеры.  Например, таймеры, замена жесткой логики в больших системах, сопроцессоры.

Cледует  добавить,  что  встроенный  автомат  программирования   EEPROM кристалла PIC16F84 позволяет легко  подстраивать  программу  и  данные  под конкретные требования даже после завершения ассемблирования и тестирования. Эта возможность может быть использована как для тиражирования,  так  и  для занесения калибровочных данных уже после окончательного тестирования.

Обзор характеристик

Высокоскоростной RISC процессор

и  только 35 простых команд;

и  все команды выполняются за один цикл(400ns), кроме команд перехода, выполняющихся за два цикла;

и  рабочая частота 0 Гц ... 10 МГц (min 400 нс цикл команды);

и  14- битовые команды;

и  8- битовые данные;

и  1024 х 14  электрически  перепрограммируемой  программной  памяти  на кристалле (EEPROM);

и  36х 8 регистров общего использования;

и  64 x 8 электрически перепрограммируемой EEPROM памяти для данных;

и  восьмиуровневый аппаратный стек;

и  прямая, косвенная и относительная адресация данных и команд;

и  четыре источника прерывания:

     внешний вход INT,

     переполнение таймера RTCC,

     прерывание при изменении сигналов на линиях порта B,

     по завершению записи данных в память EEPROM.

Периферия и Ввод/Вывод

и  13 линий ввода-вывода с индивидуальной настройкой;

и  втекающий/вытекающий ток для управления светодиодами.

      макс. вытекающий ток - 20 мА. ,

     макс. втекающий ток - 25 мА.,

и  TMR0: 8 -  битный  таймер/счетчик   RTCC   с   8-битным   программируемым предварительным делителем.

Специальные свойства

и  автоматический сброс при включении;

и  таймер включения при сбросе;

и  таймер запуска генератора;

и  Watchdog  таймер   WDT   с   собственным   встроенным   генератором, обеспечивающим повышенную надежность;

и  EEPROM бит секретности для защиты кода;

и  экономичный режим SLEEP;

и  выбираемые  пользователем  биты  для  установки  режима  возбуждения встроенного генератора:

     RC генератор                                                 : RC;

     обычный кварцевый резонатор                     : XT;

     высокочастотный кварцевый резонатор       : HS;

     экономичный низкочастотный кристалл      : LP;

и  встроенное  устройство  программирования  EEPROM  памяти  программ  и данных; используются только две ножки.

КМОП технология

и  экономичная высокоскоростная КМОП EPROM технология;

и  статический принцип в архитектуре;

и  широкий диапазон напряжений питания и температур:

     коммерческий:          2.0 ... 6.0 В,          0...+70С,

     промышленный:       2.0 ... 6.0 В,          -40...+70С,

     автомобильный:       2.0 ... 6.0 В,          40...+125С;

и  низкое потребление:

     2 мА типично для     5В, 4МГц,

     15 мкА типично для           2В, 32КГц,

     1 мкА типично для SLEEP режима при 2В.

 Tипы корпусов и исполнений

Обозначения корпусов для кристаллов PIC16F84. Тип корпуса указывается в Маркировке при заказе микросхем. Корпуса бывают только с 18 Выводами.

PDIP - Обычный пластмассовый двухрядный корпус

SOIC - Малогабаритный DIP корпус для монтажа на поверхность

Mаркировка при заказе

Обозначение микросхем складывается из следующих полей:

Фирм.номер/Частота генератора/Темпер.диапазон/Корпус/Примеч

Фирм.номер    :         PIC16F84     Vdd range 4...6 V,

                                  PIC16LC84  Vdd range 2...6 V;

Частота генератора: 04 ---> 4 mHz   (большинство 4 МГц. приборов работает до 10 МГц.!),

10 ---> 10mHz;

Температурный диапазон бывает:

                                  -        от 0С   до   +70С,

                                  I        от-40С  до   +85С,

                                  E       от-40С  до  +125С;

Корпус обозначается:

                                  P     - обычный пластмассовый DIP,

                                  SO    -300 mil SOIC.

 

Рисунок  - Структурная схема PIC16F84

 

Архитектура основана на концепции раздельных шин и областей памяти  для данных и для команд (Гарвардская архитектура). Шина данных и память  данных (ОЗУ) - имеют ширину 8 бит, а программная шина и программная  память  (ПЗУ)  имеют ширину 14  бит.  Такая  концепция  обеспечивает  простую,  но  мощную систему команд, разработанную так,  что  битовые, 

байтовые  и  регистровые операции работают с высокой скоростью и с перекрытием  по  времени  выборок команд  и  циклов  выполнения.  14-  битовая  ширина   программной   памяти обеспечивает  выборку  14-битовой  команды  в  один  цикл.  Двухступенчатый конвейер  обеспечивает  одновременную  выборку  и  исполнение   команды. Все команды выполняются за один цикл, исключая команды  переходов.  В  PIC16F84 программная  память  объемом  1К  х  14   расположена   внутри   кристалла. Исполняемая программа может находиться только во встроенном ПЗУ.


 

Разводка ножек

 

Функциональное  назначение   выводов   см.ФОбозначения   ВыводовФ   или Структурную Схему. Типы корпусов PDIP и др. см. УКорпусаФ.

Рисунок  Ц Обозначение ножек

 

Назначение ножек

Обозначения ножек и их функциональное назначение

 

Обозначение

Нормальный режим

Режим записи EEPROM

RA0 - RA3

Двунаправленные линии ввода/вывода. Входные уровни ТТЛ

 

RA4/RTCC

Вход через триггер Шмитта. Ножка порта ввода/вывода с открытым стоком  или вход частоты для таймера/счетчика RTCC

 

RB0/INT

Двунаправленная линия порта ввода/ вывода или внешний вход прерывания Уровни ТТЛ

 

RB1 - RB5

Двунаправленные линии ввода/ вывода. Уровни ТТЛ

 

RB6

Двунаправленные линии ввода/ вывода. Уровни ТТЛ.

Вход тактовой частоты для EEPROM

RB7

Двунаправленные линии ввода/ вывода. Уровни ТТЛ.

Вход/выход EEPROM данных.

MCLR/Vрр

Низкий уровень на этом входе генерирует сигнал сброса для контроллера. Активный низкий.

Сброс контроллера Для режима EEPROM- подать Vрр.

OSC1/CLKIN

Для подключения кварца, RC или вход внешней тактовой частоты

 

OSC2/CLKOUT

Генератор,  выход тактовой частоты в режиме RC генератора, в остальных случаях - для подкл.кварц

 

Vdd

Напряжение питания

Напряжение питания

Vss

Общий(земля)

Общий

 

Обзор регистров и ОЗУ

Область ОЗУ организована как 128 х 8. К ячейкам ОЗУ можно  адресоваться прямо или косвенно, через регистр указатель FSR (04h). Это также  относится и к EEPROM памяти данных-констант.

 

Page 0

Page 1

 

00

Indirect add.

80

01

RTCC

OPTION

81

02

PCL

82

03

STATUS

83

04

FSR

84

05

PORT A

TRISA

85

06

PORT B

TRISB

86

 

 

07

 

 

87

08

EEDATA

EECON1

88

09

EEADR

EECON2

89

0A

PCLATH

8A

0B

INTCON

8B

0C

2F

36 регистров общего назначения

 

       тоже

8C

AF

30

7F

не существует

 

B0

FF

 

В регистре статуса (03h) есть биты выбора  страниц,  которые  позволяют обращаться к четырем страницам будущих модификаций этого кристалла.  Однако для PIC16F84 память данных существует только  до  адреса  02Fh.  Первые  12 адресов используются  для  размещения  регистров  специального  назначения. Регистры с адресами 0Ch-2Fh могут быть использованы,  как  регистры  общего назначения, которые представляют собой статическое ОЗУ. Некоторые  регистры специального назначения  продублированы  на  обеих  страницах,  а  некоторые расположены на странице  1  отдельно.  Когда  установлена  страница  1,  то обращение к адресам 8Ch-AFh фактически адресует  страницу  0.  К  регистрам можно адресоваться прямо или косвенно. В обоих случаях можно адресовать  до 512 регистров.

 

Прямая адресация

Когда производится прямая 9-битная адресация, младшие 7 бит берутся как прямой адрес из кода операции, а два бита указателя  страниц  (RP1,RP0)  из регистра статуса (03h).

Рисунок  Ц Прямая адресация

Косвенная адресация

f4 - Указатель косв.адресации

Любая команда, которая использует f0 (адрес  00)  в  качестве  регистра фактически обращается к указателю, который хранится  в  FSR  (04h).  Чтение косвенным образом самого регистра f0 даст результат 00h. Запись  в  регистр f0 косвенным образом будет выглядеть как Noр, но биты  статуса  могут  быть изменены. Необходимый 9 - битный адрес формируется объединением содержимого 8 - битного FSR регистра и бита IRP из регистра статуса.


Рисунок  Ц Косвенная адресация

 

        Данные в EEPROM

Долговременная Память данных EEPROM.

Память данных EEPROM позволяет прочитать и  записать  байт  информации. При записи байта автоматически стирается предыдущее значение и записываются новые  данные  (стирание  перед  записью).  Все  эти  операции   производит встроенный автомат записи EEPROM. Содержимое ячеек этой памяти  сохраняется при выключении питания.     Кристалл  PIC16F84  имеет  память  данных  64х8  EEPROM  бит,   которая позволяет запись и чтение во время нормальной  работы  (во  всем  диапазоне питающих напряжений).

Эта память  не  принадлежит  области  регистров  ОЗУ. Доступ к ней осуществляется  через  два  регистра:  EEDATA  <08h>,  который содержит в себе восьмибитовые  данные  для  чтения/записи  и  EEADR  <09h>, который  содержит  в  себе  адрес  ячейки   к   которой   идет   обращение. Дополнительно имеется два  управляющих  регистра:  EECON1  <88h>  и  EECON2 <89h>.

При считывании данных из памяти EEPROM  необходимо  записать  требуемый адрес в EEADR регистр и затем установить бит RD EECON1<0> в единицу. Данные появятся в следующем  командном  цикле  в  регистре  EEDATA  и  могут  быть прочитаны. Данные в регистре EEDATA защелкиваются.

При записи в память EEPROM, необходимо сначала записать требуемый адрес в EEADR регистр и данные в  EEDATA  регистр.  Затем  выполнить  специальную последовательность команд, производящую непосредственную запись:

      movlv                   55h

      movwf        EECON2

      movlv                   AAh

      movwf        EECON2

      bsf              EECON1,WR       ;установить WR бит, начать запись

Во время выполнения этого участка программы, все прерывания должны быть запрещены для  точного  выполнения  временной  диаграммы.  Время  записи  - примерно 10мс. Фактическое время записи будет изменяться в  зависимости  от напряжения, температуры и индивидуальных свойств кристалла. В конце  записи бит WR автоматически обнуляется, а  флаг  завершения  записи  EEIF,  он  же запрос на прерывание, устанавливается.     Для предотвращения  случайных  записей  в  память  данных  предусмотрен специальный бит WREN в регистре  EECON1.  Рекомендуется  держать  бит  WREN выключенным, кроме тех случаев, когда нужно обновить память  данных.  Более того, кодовые сегменты,  которые  устанавливают  бит  WREN  и  те,  которые выполняют запись должны храниться  на  различных  адресах, чтобы  избежать случайного выполнения их обоих при сбое программы.

 

Управление EEPROM

Управляющие регистры для EEPROM

Название

Функция

Адрес

Значение после включения

EEDATA

EEPROM регистр данных

08h

XXXX XXXX

EEADR

EEPROM регистр адреса

09h

XXXX XXXX

EECON1

EEPROM 1 управляющий регистр

88h

0000 X000

EECON2

EEPROM 2 управляющий регистр

89h

-

 

Регистры EECON1 и EECON2.

Регистр EECON1 (адрес 88h) - это управляющий регистр шириной пять  бит. Младшие пять бит физически существуют, а старшие три бита  читаются  всегда как  У0Ф

Регистр EECON1     Адрес 88h   Сброс при включении 0000X000

-

-

-

EEIF

WRERR

WREN

WR

RD

7

6

5

4

3

2

1

0

 

Управляющие биты RD и WR запускают соответственно чтение и запись.  Они могут  быть  установлены  только  программно.  Сбрасываются-  аппаратно  по завершения операций  чтения/записи.  Запрет  программного  сброса  бита  WR предотвращает преждевременное окончание записи.

  RD  - Бит чтения.

RD =1 : Запускает чтение памяти данных EEPROM. Чтение занимает

один цикл. Устанавливается программно. Обнуляется аппаратно.

  WR   - Бит записи.

WR  =1  :   Запускает   запись   в   память   данных   EEPROM.

 

Устанавливается программно. Обнуляется аппаратно.

 WREN  - Бит разрешения записи в память данных EEPROM.

WREN = 1: Разрешена запись.

WREN = 0: Запрещена запись.

После включения питания WREN обнуляется.

Флаг ошибки WRERR устанавливается,  когда  процесс  записи  прерывается сигналом сброса /MCLR или  сигналом  сброса  от  WDT  таймера.  Рекомендуем проверять этот  флаг  WRERR  и  при  необходимости  производить  перезапись данных, данные и адрес которых сохраняются в регистрах EEDATA и EEADR.

WRERR  -  Флаг ошибки записи.

WRERR  =  1:  Флаг  устанавливается,  когда  операция   записи

преждевременно прерывается сигналом  сброса  /MCLR  (во  время

обычного режима или режима SLEEP) или сигналом сброса  WDT  во

время обычного режима.

EEIF - Флаг завершения записи.

EEIF = 1: Флаг устанавливается, когда завершена запись.

Соответствующий бит разрешения прерывания - EEIE в

регистре INTCON.

Организация прерываний

Прерывания в PIC16F84 могут быть от четырех источников:

внешнее прерывание с ножки RB0/INT,

прерывание от переполнения счетчика/таймера RTCC,

прерывание по окончании записи данных в EEPROM,

прерывание от изменения сигналов на ножках порта RB<7:4>.

Все прерывания имеют один и тот же  вектор/адрес  -  0004h.  Однако,  в управляющем регистре прерываний  INTCON  записывается:-  от  какого  именно источника  поступил   запрос   прерывания.   Записывается   соответствующим битом-флагом. Такое прерывание может быть замаскировано 

индивидуально  или общим битом. Единственным исключением является прерывание по концу записи в EEPROM. Этот флаг находится в другом регистре EECON1.  Бит общего разрешения/запрещения прерывания GIE (INTCON <7>)  разрешает  (если=1)  все  индивидуально  незамаскированные  прерывания  или  запрещает (если=0) их. Каждое  прерывание  в  отдельности  может  быть  дополнительно разрешено/запрещено установкой/сбросом  соответствующего  бита  в  регистре INTCON.

Бит  GIE  обнуляется  при   сбросе.   Когда   начинает   обрабатываться прерывание, бит GIE  обнуляется,  чтобы  запретить  дальнейшие  прерывания, адрес возврата посылается в стек, а в программный счетчик загружается адрес 0004h.  Время  реакции  на  прерывание  для  внешних  событий,  таких   как прерывание от ножки INT или порта B, составляет приблизительно пять циклов. Это на один цикл меньше, чем для внутренних событий, таких  как  прерывание по переполнению от таймера RTCC. Время реакции всегда одинаковое.  В подпрограмме обработки  прерывания  источник  прерывания  может  быть определен по соответствующему биту в регистре флагов. Этот флаг-бит  должен быть программно сброшен внутри подпрограммы. Флаги запросов  прерываний  не зависят от соответствующих маскирующих битов  и  бита  общего  маскирования GIE.

Команда   возврата   из   прерывания   RETFIE   завершает   прерывающую подпрограмму и устанавливает бит GIE, чтобы опять разрешить прерывания.

 

Регистр запросов и масок

Управляющий регистр прерываний и его биты

Адрес: 0Bh  Значение при сбросе  - 0000 0000

GIE

EEIE

RTIE

INIE

RBIE

RTIF

INTF

RBIF

 

RBIF   -Флаг прерывания от изменения на порту RB.

Флаг устанавливается, когда сигнал на входе RB<7:4> изменяется.

Флаг сбрасывается программным способом.

     NTF  - Флаг прерывания INT.

             Флаг устанавливается, когда на ножке INT появляется сигнал от

внешнего источника прерывания. Сбрасывается программным             способом.

RTIF  - Флаг прерывания от переполнения RTCC.

Флаг устанавливается, когда RTCC переполняется.

Флаг сбрасывается программным способом.

RBIE   - Бит разрешения/запрещения RBIF прерывания.

RBIE = 0 : запрещает RBIE прерывание.

RBIE = 1 : разрешает RBIE прерывание.

INTE  - Бит разрешения/запрещения INT прерывания.

INTE = 0 : запрещает INT прерывание.

INTE = 1 : разрешает INT прерывание.

 RTIE Бит разрешения/запрещения RTIF прерывания.

RTIE = 0 : запрещает RTIE прерывание.

RTIE = 1 : разрешает RTIE прерывание.

EEIE -  Бит разрешения/запрещения  прерывания EEPROM записи.

EEIE = 0 : запрещает EEIF прерывание.

EEIE = 1 : разрешает EEIF прерывание.

GIE   Бит разрешения/запрещения всех прерываний.

GIE = 0 : запрещает прерывания

GIE = 1 : разрешает прерывания

Он сбрасывается автоматически при следующих обстоятельствах:

по включению питания,

по внешнему сигналу /MCLR при нормальной работе,

по внешнему сигналу /MCLR в режиме SLEEP,

по окончанию задержки таймера WDT при нормальной работе,

по окончанию задержки таймера WDT в режиме SLEEP.

Внешнее прерывание

Внешнее прерывание на ножке RB0/INT осуществляется по фронту:  либо 

по нарастающему (если бит INTEDG=1 в регистре  OPTION),  либо  по  спадающему фронту (если INTEDG=0). Когда фронт обнаруживается на  ножке  INT,  то  бит запроса INTF  устанавливается  (INTCON  <1>).  Это  прерывание  может  быть замаскировано установкой управляющего бита INTE в ноль  (INTCON  <4>).  Бит запроса INTF должен быть очищен прерывающей программой перед тем, как опять разрешить это прерывание. Прерывание INT может вывести процессор из  режима SLEEP, если перед входом в этот режим

бит INTE был  установлен  в  единицу. Состояние бита GIE также  определяет:  будет  ли  процессор  переходить  на подпрограмму прерывания после просыпания из режима SLEEP.

Прерывание от RTCC

Переполнение  счетчика  RTCC  (FFh->00h)  установит  бит  запроса  RTIF (INTCON<2>).    Это    прерывание    может     быть     разрешено/запрещено установкой/сбросом бита маски RTIE (INTCON<5>).

Сброс запроса RTIF - дело программы обработки.

Прерывание от порта RB

Любое изменение сигналов на четырех входах порта RB<7:4> установит  бит RBIF   (INTCON<0>).   Это   прерывание   может   быть   разрешено/запрещено установкой/сбросом бита маски RBIE (INTCON<3>). Сброс запроса RBIF - дело программы обработки.

Прерывание от EEPROM

Флаг запроса прерывания по окончании записи в EEPROM, EEIF  (EECON1<4>) устанавливается по окончании автоматической записи  данных  в  EEPROM.  Это прерывание может быть замаскировано сбросом бита EEIE (INTCON<6>).

Сброс запроса EEIF - дело программы обработки.


 
Hosted by uCoz