Лекция. Микроконтроллеры подгруппы pic16F8X


Лекция. Микроконтроллеры подгруппы PIC16F8X ПЛАН ЛЕКЦИИ
1. Главные свойства

2. Особенности архитектуры

3. Схема тактирования и цикл выполнения команды

4. Организация памяти программ и стека

5. Организация памяти данных

6. Регистры специального предназначения

7. Счетчик команд

8. Ровная и косвенная адресации

9. Порты ввода/вывода

10. Модуль таймера и регистр Лекция. Микроконтроллеры подгруппы pic16F8X таймера

11. Память данных в РПЗУ (EEPROM)

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


1. Главные свойства
Микроконтроллеры подгруппы PIC16F8X относятся к семейству 8-разрядных КМОП микроконтроллеров группы PIC16CXXX, для которых свойственны низкая цена, стопроцентно статическая КМОП-технология и Лекция. Микроконтроллеры подгруппы pic16F8X высочайшая производительность.

В состав подгруппы входят МК PIC16F83, PIC16CR83, PIC16F84 и PIC16CR84. Главные свойства МК подгруппы PIC16F8X приведены в табл. 1.

Все микроконтроллеры подгруппы PIC16F8X употребляют Лекция. Микроконтроллеры подгруппы pic16F8X гарвардскую архитектуру с RISC-процессором, владеющую последующими основными особенностями:

Таблица 5.1. Главные свойства МК подгруппы PIC16F8X

Параметр

PIC Лекция. Микроконтроллеры подгруппы pic16F8X16F83

PIC16CR83

PIC16F84

PIC16CR84

Наибольшая частота, МГц

10

10

10

10

Flash-память программ, слов

512

-

1K

-

ПЗУ программ, слов

-

512

-

1K

Память данных, б

36

36

68

68

Память данных в РПЗУ (EEPROM), б

64

64

64

64

Таймеры

TMR0

TMR0

TMR0

TMR0

Число источников прерываний Лекция. Микроконтроллеры подгруппы pic16F8X

4

4

4

4

Число линий ввода/вывода

13

13

13

13

Спектр напряжений питания, В

2,0 – 6,0

2,0 – 6,0

2,0 – 6,0

2,0 – 6,0

Число выводов и тип корпуса

18 DIP, SOIC

18 DIP, SOIC

18 DIP, SOIC

18 DIP, SOIC


Микроконтроллеры подгруппы PIC16F8X владеют развитыми способностями ввода/вывода:

Спец микроконтроллерные функции включают последующие способности:

КМОП разработка обеспечивает Лекция. Микроконтроллеры подгруппы pic16F8X МК подгруппы PIC16F8X дополнительные достоинства:

Микроконтроллеры подгруппы PIC16F8X различаются меж собой только объемом ОЗУ данных, также объемом и типом памяти программ. Наличие в составе подгруппы МК с Flash-памятью Лекция. Микроконтроллеры подгруппы pic16F8X программ упрощает создание и отладку прототипов промышленных образцов изделий.
^ 2. Особенности архитектуры
Облегченная структурная схема МК подгруппы PIC16F8X приведена на рис. 1.




Рис. 1.  Структурная схема МК подгруппы PIC16F8X


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

Микроконтроллеры PIC16F83 и Лекция. Микроконтроллеры подгруппы pic16F8X PIC16CR83 адресуют 512х14 памяти программ, а PIC16F84 и PIC16CR84 – 1Кх14 памяти программ. Вся память программ является внутренней.

Микроконтроллер может прямо либо косвенно обращаться к регистрам либо памяти данных. Все Лекция. Микроконтроллеры подгруппы pic16F8X регистры особых функций, включая счетчик команд, показываются на память данных. Ортогональная (симметричная) система команд позволяет делать всякую команду над хоть каким регистром с внедрением случайного способа адресации. Ортогональная архитектура и отсутствие особых Лекция. Микроконтроллеры подгруппы pic16F8X исключений делает программирование МК группы PIC16F8X обычным и действенным.

Предназначение выводов МК подгруппы PIC16F8X приведено в табл. 2.

Таблица 2. Предназначение выводов МК подгруппы PIC16F8X

Обозначение

Тип

Буфер

Описание

OSC1/CLKIN

I

ТШ/КМОП1)

Вход кристалла Лекция. Микроконтроллеры подгруппы pic16F8X генератора, RC-цепочки либо вход наружного тактового сигнала

OSC2/CLKOUT

O

-

Выход кристалла генератора. В RC-режиме – выход 1/4 частоты OSC1

/MCLR

I/P

ТШ

Сигнал сброса/вход программирующего напряжения. Сброс низким уровнем.

RA0

I/O

ТТЛ

PORTA – двунаправленный порт Лекция. Микроконтроллеры подгруппы pic16F8X ввода/вывода

RA4/T0CKI может быть избран как тактовый вход таймера/счетчика TMR0. Выход с открытым стоком.

RA1

I/O

ТТЛ

RA2

I/O

ТТЛ

RA3

I/O

ТТЛ

RA4

I/O

ТШ

/T0CKI







RB0/INT Лекция. Микроконтроллеры подгруппы pic16F8X

I/O

ТТЛ/ТШ2)

PORTB – двунаправленный порт ввода/вывода. Может быть запрограммирован в режиме внутренних активных нагрузок на линию питания по всем выводам. Вывод RB0/INT может быть избран как наружный вход прерывания Лекция. Микроконтроллеры подгруппы pic16F8X. Выводы RB4...RB7 могут быть программно настроены как входы прерывания по изменению состояния на любом из входов. При программировании МК RB6 употребляется как тактовый, а RB7 как вход/выход данных.

RB1

I/O

ТТЛ

RB2

I Лекция. Микроконтроллеры подгруппы pic16F8X/O

ТТЛ

RB3

I/O

ТТЛ

RB4

I/O

ТТЛ

RB5

I/O

ТТЛ

RB6

I/O

ТТЛ/ТШ3)

RB7

I/O

ТТЛ/ТШ4)
















Vdd

P

-

Положительное напряжение питания

Vss

P

-

Общий провод (земля)

В таблице применены последующие обозначения: I — вход; O — выход; I/O — вход Лекция. Микроконтроллеры подгруппы pic16F8X/выход; P — питание; – — не употребляется; ТТЛ — ТТЛ вход; ТШ — вход триггера Шмитта.


Микроконтроллер содержит 8-разрядное АЛУ и рабочий регистр   W. АЛУ является арифметическим модулем общего предназначения и делает арифметические и Лекция. Микроконтроллеры подгруппы pic16F8X логические функции над содержимым рабочего регистра и хоть какого из регистров контроллера. АЛУ может делать операции сложения, вычитания, сдвига и логические операции. Если не обозначено другое, то арифметические операции производятся в дополнительном двоичном Лекция. Микроконтроллеры подгруппы pic16F8X коде.

Зависимо от результата операции, АЛУ может изменять значения бит регистра   STATUS: C (Carry), DC (Digit carry) и Z (Zero).
^ 3. Схема тактирования и цикл выполнения команды
Входная тактовая частота, поступающая с вывода Лекция. Микроконтроллеры подгруппы pic16F8X OSC1/CLKIN, делится снутри на четыре, и из нее формируются четыре циклические не перекрывающиеся тактовые последовательности Q1, Q2, Q3 и Q4. Счетчик команд возрастает в такте Q1, команда считывается из памяти программки и Лекция. Микроконтроллеры подгруппы pic16F8X защелкивается в регистре команд в такте Q4. Команда декодируется и производится в течение следующего цикла в тактах Q1...Q4. Схема тактирования и выполнения команды изображена на рис. 2.

Цикл выполнения команды состоит из Лекция. Микроконтроллеры подгруппы pic16F8X 4 тактов: Q1...Q4. Подборка команды и ее выполнение совмещены по времени таким макаром, что подборка команды занимает один цикл, а выполнение – последующий цикл. Действенное время выполнения команды составляет один цикл Лекция. Микроконтроллеры подгруппы pic16F8X. Если команда изменяет счетчик команд (к примеру, команда GOTO), то для ее выполнения будет нужно два цикла, как показано на рис. 5.3.




Рис. 2.  Схема тактирования и выполнения команды




Рис. 3.  Подборка команд

Цикл подборки начинается с Лекция. Микроконтроллеры подгруппы pic16F8X роста счетчика команд в такте Q1. В цикле выполнения команды избранная команда защелкивается в регистр команд в такте Q1. В течение тактов Q2, Q3 и Q4 происходит декодирование и выполнение команды Лекция. Микроконтроллеры подгруппы pic16F8X. В такте Q2 считывается память данных (чтение операнда), а запись происходит в такте Q4.
^ 4. Организация памяти программ и стека
Счетчик команд в МК PIC16F8Х имеет ширину 13 бит и способен адресовать Лекция. Микроконтроллеры подгруппы pic16F8X 8Кх14бит объема программной памяти. Но на физическом уровне на кристаллах PIC16F83 и PIC16CR83 имеется только 512х14 памяти (адреса 0000h-01FFh), а в МК PIC16F84 и PIC16CR84 – 1Кх14 памяти Лекция. Микроконтроллеры подгруппы pic16F8X (адреса 0000h-03FFh). Воззвание к адресам выше 1FFh (3FFh) практически есть адресация в те же 1-ые 512 адресов (1-ые 1К адресов).

Организация памяти программ и стека приведена на рис. 4.

В памяти программ есть выделенные адреса Лекция. Микроконтроллеры подгруппы pic16F8X. Вектор сброса находится по адресу 0000h, вектор прерывания – по адресу 0004h. Обычно по адресу 0004h размещается подпрограмма идентификации и обработки прерываний, а по адресу 0000h – команда перехода на метку, расположенную за подпрограммой Лекция. Микроконтроллеры подгруппы pic16F8X обработки прерываний.




Рис. 4.  Организация памяти программ и стека
^ 5. Организация памяти данных
Память данных МК разбита на две области. 1-ые 12 адресов – это область регистров особых функций (SFR), а 2-ая – область регистров Лекция. Микроконтроллеры подгруппы pic16F8X общего предназначения (GPR). Область SFR управляет работой прибора.

Обе области разбиты в свою очередь на банки 0 и 1. Банк 0 выбирается обнулением бита RP0   регистра статуса (STATUS). Установка бита RP0 в единицу выбирает банк 1. Каждый банк Лекция. Микроконтроллеры подгруппы pic16F8X имеет протяженность 128 б. Но для PIC16F83 и PIC16CR83 память данных существует только до адреса 02Fh, а для PIC16F84 и PIC16CR84 – до адреса 04Fh.

На рис. 5 изображена организация памяти данных Лекция. Микроконтроллеры подгруппы pic16F8X.




Рис. 5.  Организация памяти данных


Некие регистры специального предназначения продублированы в обоих банках, а некие размещены в банке 1 раздельно.

Регистры с адресами 0Ch-4Fh могут употребляться как регистры общего предназначения, которые Лекция. Микроконтроллеры подгруппы pic16F8X представляют собой статическое ОЗУ. Адреса регистров общего предназначения банка 1 показываются на банк 0. Как следует, когда установлен банк 1, то воззвание к адресам 8Ch-CFh практически адресует банк 0.

В регистре статуса кроме бита RP0 еще есть Лекция. Микроконтроллеры подгруппы pic16F8X бит RB1, что позволяет обращаться к четырем страничкам (банкам) будущих модификаций этого кристалла.

К ячейкам ОЗУ можно адресоваться прямо, используя абсолютный адресок каждого регистра, либо косвенно, через регистр указатель FSR. Косвенная Лекция. Микроконтроллеры подгруппы pic16F8X адресация употребляет текущее значение разрядов RP1:RP0 для доступа к банкам. Это относится и к EEPROM памяти данных. В обоих случаях можно адресовать до 512 регистров.
^ 6. Регистры специального предназначения
Регистр статуса (STATUS Лекция. Микроконтроллеры подгруппы pic16F8X) содержит признаки операции (арифметические флаги) АЛУ, состояние контроллера при сбросе и биты выбора страничек для памяти данных.

Тут и дальше: R — читаемый бит; W — записываемый бит; S — устанавливаемый бит; U — неиспользуемый бит (читается Лекция. Микроконтроллеры подгруппы pic16F8X как "0"); -n = 0 либо 1 — значение бита после сброса.

^ Регистр статуса доступен для хоть какой команды так же, как хоть какой другой регистр. Но если регистр   STATUS является регистром предназначения для команды, влияющей на биты Лекция. Микроконтроллеры подгруппы pic16F8X Z, DC либо C, то запись в эти три бита воспрещается. Не считая того, биты /TO и /PD инсталлируются аппаратно и не могут быть записаны в статус программно. Это следует Лекция. Микроконтроллеры подгруппы pic16F8X подразумевать при выполнении команды с внедрением регистра статуса. К примеру, команда CLRF STATUS обнулит все биты, не считая битов /TO и /PD, а потом установит бит Z=1. После выполнения этой команды регистр статуса может Лекция. Микроконтроллеры подгруппы pic16F8X и не иметь нулевого значения (из-за битов /TO и /PD) STATUS=000uu1uu, где u – неизменяемое состояние. Потому рекомендуется для конфигурации регистра статуса использовать только команды битовой установки BCF, BSF, MOVWF Лекция. Микроконтроллеры подгруппы pic16F8X, которые не изменяют другие биты статуса. Воздействие всех команд на биты статуса рассматривается в разделе "Описание системы команд".

^ Регистр конфигурации (OPTION) является легкодоступным по чтению и записи регистром, который содержит управляющие биты Лекция. Микроконтроллеры подгруппы pic16F8X для конфигурации подготовительного делителя (пределителя), наружных прерываний, таймера, также резисторов "pull-up" на выводах PORTB.

В этом случае, когда предделитель обслуживает сторожевой таймер   WDT, таймеру   TMR0 назначается коэффициент подготовительного деления Лекция. Микроконтроллеры подгруппы pic16F8X 1:1.

^ Регистр критерий прерывания (INTCON) является легкодоступным по чтению и записи регистром, который содержит биты доступа для всех источников прерываний. Бит разрешения всех прерываний   GIE сбрасывается автоматом при последующих обстоятельствах:

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

Сброс битов – запросов прерываний – должен осуществляться соответственной программкой обработки.
^ 7. Счетчик команд
Счетчик команд PCL и PCLATH имеет разрядность 13 бит. Младший б счетчика (PCL) доступен для чтения и записи и находится в регистре Лекция. Микроконтроллеры подгруппы pic16F8X   02h. Старший б счетчика команд не может быть впрямую записан либо считан и берется из регистра   PCLATH (PC latch high), адресок которого 0Ah. Содержимое PCLATH передается в старший б счетчика команд Лекция. Микроконтроллеры подгруппы pic16F8X, когда он загружается новым значением.

Зависимо от того, загружается ли в счетчик команд новое значение во время выполнения команд CALL, GOTO, либо в младший б счетчика команд (PCL) делается запись, – старшие биты Лекция. Микроконтроллеры подгруппы pic16F8X счетчика команд загружаются из PCLATH различными методами, как показано на рис. 6.




Рис. 5.6.  Загрузка старших бит счетчика команд


Команды CALL и GOTO оперируют 11-разрядным адресным спектром, достаточным для смещения в границах странички программной памяти объемом Лекция. Микроконтроллеры подгруппы pic16F8X 2К слов. Для МК подгруппы PIC16F8X этого хватает. С целью обеспечения способности расширения памяти команд для будущих моделей МК предусмотрена загрузка 2-ух старших бит счетчика команд из регистра   PCLATH. При Лекция. Микроконтроллеры подгруппы pic16F8X использовании команд CALL и GOTO юзер должен убедиться в том, что эти страничные биты запрограммированы для выхода на подходящую страничку. При выполнении команды CALL либо выполнении прерывания весь 13-битный Лекция. Микроконтроллеры подгруппы pic16F8X счетчик команд помещается в стек, потому для возвращения из подпрограммы не необходимы манипуляции с разрядами PCLATH.

Микроконтроллеры подгруппы PIC16F8X игнорируют значения бит PCLATH, которые употребляются для воззвания к страничкам 1, 2 и 3 программной Лекция. Микроконтроллеры подгруппы pic16F8X памяти. Но использовать биты PCLATH в качестве ячеек памяти общего предназначения не рекомендуется, потому что это может воздействовать на сопоставимость с будущими поколениями изделий.

Возможность делать арифметические операции конкретно над счетчиком команд позволяет Лекция. Микроконтроллеры подгруппы pic16F8X очень стремительно и отлично производить табличные преобразования в PIC-контроллерах.

Микроконтроллеры подгруппы PIC16F8X имеют восьмиуровневый аппаратный стек шириной 13 бит (см. рис. 4). Область стека не принадлежит ни к программной области Лекция. Микроконтроллеры подгруппы pic16F8X, ни к области данных, а указатель стека юзеру недоступен. Текущее значение счетчика команд посылается в стек, когда производится команда CALL либо делается обработка прерывания. При выполнении процедуры возврата из подпрограммы (команды RETLW Лекция. Микроконтроллеры подгруппы pic16F8X, RETFIE либо RETURN) содержимое счетчика команд восстанавливается из стека. Регистр   PCLATH при операциях со стеком не меняется.

Стек работает как повторяющийся буфер. Как следует, после того как стек был загружен 8 раз Лекция. Микроконтроллеры подгруппы pic16F8X, девятая загрузка перепишет значение первой. Десятая загрузка перепишет вторую и т.д. Если стек был выгружен 9 раз, счетчик команд становится таким же, как после первой выгрузки.

Признаков положения стека в контроллере не предвидено, потому юзер Лекция. Микроконтроллеры подгруппы pic16F8X должен без помощи других смотреть за уровнем вложения подпрограмм.
^ 8. Ровная и косвенная адресации
Когда делается ровная 9-битная адресация, младшие 7 бит берутся как прямой адресок из кода операции, а два бита указателя страничек Лекция. Микроконтроллеры подгруппы pic16F8X (RP1, RP0) из регистра статуса, как показано на рис. 7.




Рис. 5.7.  Способы адресации данных


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

Направьте внимание, что некие регистры особых функций размещаются в банке 1. Чтоб адресоваться Лекция. Микроконтроллеры подгруппы pic16F8X к ним, необходимо дополнительно установить в единицу бит RP0 в регистре статуса.
^ 9. Порты ввода/вывода
Контроллеры подгруппы PIC16F8X имеют два порта: PORTA (5 бит) и PORTB (8 бит) с побитовой персональной настройкой Лекция. Микроконтроллеры подгруппы pic16F8X на ввод либо на вывод.

Порт   A (PORTA) представляет собой 5-битовый фиксатор, соответственный выводам контроллера RA. Линия RA4 имеет вход триггера Шмитта и выход с открытым стоком. Все другие полосы порта имеют Лекция. Микроконтроллеры подгруппы pic16F8X ТТЛ входные уровни и КМОП выходные буферы. Адресок регистра порта   А – 05h.

Каждой полосы порта поставлен в соответствие бит направления передачи данных, который хранится в управляющем регистре   TRISA, расположенном по адресу 85h. Если Лекция. Микроконтроллеры подгруппы pic16F8X бит управляющего TRISA   регистра имеет значение 1, то соответственная линия будет устанавливаться на ввод. Ноль переключает линию на вывод и сразу выводит на нее содержимое соответственного регистра-фиксатора порта. При Лекция. Микроконтроллеры подгруппы pic16F8X включении питания все полосы порта по дефлоту настроены на ввод.

На рис. 8 дана схема линий RA   порта   A.




Рис. 8.  Схема линий RA <3:0 порта А. Выводы порта имеют защитные диоды к Vdd и Vss

Операция чтения порта Лекция. Микроконтроллеры подгруппы pic16F8X   А считывает состояние выводов порта, в то время как запись в него изменяет состояние триггеров порта. Все операции с портом являются операциями типа "чтение-модификация-запись". Потому запись в порт Лекция. Микроконтроллеры подгруппы pic16F8X подразумевает, что состояние выводов порта сначала считывается, потом модифицируется и записывается в триггер-фиксатор. Вывод RA4 мультиплексирован с тактовым входом таймера   TMR0. Схема полосы RA4   порта   А приведена на рис. 9.

^ Порт   В Лекция. Микроконтроллеры подгруппы pic16F8X (PORTB) – это двунаправленный 8-битовый порт, соответственный выводам RB контроллера и расположенный по адресу 06h. Относящийся к порту В управляющий регистр   TRISB размещен на первой страничке регистров по адресу 86h. Если бит управляющего Лекция. Микроконтроллеры подгруппы pic16F8X TRISB   регистра имеет значение 1, то соответственная линия будет устанавливаться на ввод. Ноль переключает линию на вывод и сразу выводит на нее содержимое соответственного регистра защелки. При включении питания все полосы порта Лекция. Микроконтроллеры подгруппы pic16F8X по дефлоту настроены на ввод.




Рис. 9.  Схема полосы RA4 порта А. Вывод порта имеет защитный диодик только к Vss

У каждой ножки порта   В имеется маленькая активная нагрузка (около 100мкА) на линию питания (pull-up Лекция. Микроконтроллеры подгруппы pic16F8X). Она автоматом отключается, если эта ножка запрограммирована как вывод. Более того, управляющий бит /RBPU   регистра   OPTION может отключить (при RBPU=1) все нагрузки. Сброс при включении питания также отключает все нагрузки.

Четыре Лекция. Микроконтроллеры подгруппы pic16F8X полосы порта   В (RB) могут вызвать прерывание при изменении значения сигнала на хоть какой из их. Если эти полосы настроены на ввод, то они опрашиваются и защелкиваются в цикле чтения Q1. Новенькая Лекция. Микроконтроллеры подгруппы pic16F8X величина входного сигнала сравнивается со старенькой в каждом командном цикле. При несовпадении значения сигнала на ножке и в фиксаторе генерируется высочайший уровень. Выходы сенсоров "несовпадений" RB4, RB5, RB6, RB7 соединяются воединыжды по Лекция. Микроконтроллеры подгруппы pic16F8X Либо и генерируют прерывание   RBIF (запоминаемое в регистре   INTCON). Неважно какая линия, настроенная как вывод, в этом сопоставлении не участвует. Прерывание может вывести кристалл из режима SLEEP. В подпрограмме обработки прерывания следует скинуть Лекция. Микроконтроллеры подгруппы pic16F8X запрос прерывания одним из последующих методов:

При всем этом нужно подразумевать, что условие "несовпадения" будет продолжать устанавливать признак Лекция. Микроконтроллеры подгруппы pic16F8X RBIF. Только чтение порта   В может убрать "несовпадение" и позволит обнулить бит RBIF.

Прерывание по несовпадению и программно устанавливаемые внутренние активные нагрузки на этих 4 линиях могут обеспечить обычной интерфейс, к примеру Лекция. Микроконтроллеры подгруппы pic16F8X, с клавиатурой, с выходом из режима SLEEP по нажатию кнопок.

Схемы линий порта   B приведены на рис. 10 и 11.




Рис. 10.  Схема линий RB <7:4 порта B. Выводы порта имеют защитные диоды к Vdd и Vss




Рис Лекция. Микроконтроллеры подгруппы pic16F8X. 11.  Схема линий RB <3:0 порта B. Выводы порта имеют защитные диоды к Vdd и Vss

При организации двунаправленных портов нужно учесть особенности организации ввода/вывода данных МК. Неважно какая команда, которая производит запись, делает Лекция. Микроконтроллеры подгруппы pic16F8X ее снутри как "чтение-модификация-запись". К примеру, команды BCF и BSF считывают порт полностью, видоизменят один бит и выводят итог назад. Тут нужна осторожность. А именно, команда BSF PORTB, 5 (установить в Лекция. Микроконтроллеры подгруппы pic16F8X единицу бит 5 порта   B) поначалу считывает все реальные значения сигналов, присутствующие на этот момент на выводах порта. Потом производятся деяния над битом 5, и новое значение б полностью записывается в Лекция. Микроконтроллеры подгруппы pic16F8X выходные фиксаторы. Если другой бит регистра   PORTB употребляется в качестве двунаправленного ввода/вывода (скажем, бит 0), и на этот момент он определен как входной, то входной сигнал на этом выводе будет считан и записан назад в Лекция. Микроконтроллеры подгруппы pic16F8X выходной триггер-фиксатор этого же вывода, стирая предшествующее состояние. До того времени, пока эта ножка остается в режиме ввода, никаких заморочек не появляется. Но если позже линия 0 переключится в режим вывода Лекция. Микроконтроллеры подгруппы pic16F8X, ее состояние будет неопределенным.

На ножку, работающую в режиме вывода, не должны нагружаться наружные источники токов ("монтажное И", "монтажное Либо"). Огромные результирующие токи могут разрушить кристалл.

Нужно выдерживать определенную последовательность Лекция. Микроконтроллеры подгруппы pic16F8X воззвания к портам ввода/вывода. Запись в порт вывода происходит в конце командного цикла. Но при чтении данные должны быть размеренны сначала командного цикла. Будьте внимательны в операциях чтения, последующих сходу за записью в тот Лекция. Микроконтроллеры подгруппы pic16F8X же порт. Тут нужно учесть инерционность установления напряжения на выводах. Может потребоваться программная задержка, чтоб напряжение на ножке (которое находится в зависимости от нагрузки) успело стабилизироваться до начала выполнения последующей команды чтения Лекция. Микроконтроллеры подгруппы pic16F8X.
^ 10. Модуль таймера и регистр таймера
Структура модуля таймера/счетчика TIMER0 и его связь с регистрами   TMR0 и OPTION показаны на рис. 12. TIMER0 является программируемым модулем и содержит последующие составляющие Лекция. Микроконтроллеры подгруппы pic16F8X:

Режим таймера выбирается методом сбрасывания в ноль бита T0CS   регистра   OPTION . В режиме таймера   TMR0 инкрементируется каждый командный цикл (без пределителя Лекция. Микроконтроллеры подгруппы pic16F8X). После записи инфы в TMR0 инкрементирование его начнется после 2-ух командных циклов. Это происходит со всеми командами, которые создают запись либо чтение-модификацию-запись TMR0 (к примеру, MOVF TMR0, CLRF TMR0). Избежать этого Лекция. Микроконтроллеры подгруппы pic16F8X можно с помощью записи в TMR0 скорректированного значения. Если TMR0 необходимо проверить на равенство нулю без останова счета, следует использовать аннотацию MOVF TMR0,W.

Режим счетчика выбирается методом установки в Лекция. Микроконтроллеры подгруппы pic16F8X единицу бита T0CS   регистра   OPTION. В этом режиме регистр   TMR0 будет инкрементироваться или нарастающим, или спадающим фронтом на выводе RA4/T0CKI от наружных событий. Направление фронта определяется управляющим битом Лекция. Микроконтроллеры подгруппы pic16F8X T0SE в регистре   OPTION. При T0SE = 0 будет избран нарастающий фронт.

Предделитель может употребляться либо вместе с TMR0, либо со сторожевым (Watchdog) таймером. Вариант подключения делителя контролируется битом PSA регистра   OPTION. При Лекция. Микроконтроллеры подгруппы pic16F8X PSA=0 делитель будет подсоединен к TMR0. Содержимое делителя программке труднодоступно. Коэффициент деления пределителя программируется битами PS2…PS0   регистра   OPTION.




Рис. 12.  Структурная схема таймера/счетчика TMR0


Прерывание по TMR0 вырабатывается тогда, когда происходит переполнение регистра Лекция. Микроконтроллеры подгруппы pic16F8X   таймера/счетчика при переходе от FFh к 00h. Тогда устанавливается бит запроса T0IF в регистре   INTCON. Данное прерывание можно замаскировать битом T0IE в регистре   INTCON. Бит запроса T0IF должен Лекция. Микроконтроллеры подгруппы pic16F8X быть сброшен программно при обработке прерывания. Прерывание по TMR0 не может вывести микропроцессор из режима SLEEP поэтому, что таймер в этом режиме не работает.

При PSA=1 делитель будет подсоединен к Лекция. Микроконтроллеры подгруппы pic16F8X сторожевому таймеру как постделитель (делитель на выходе). Вероятные варианты использования пределителя показаны на рис. 13.

При использовании пределителя вместе с TMR0, все команды, изменяющие содержимое TMR0, обнуляют предделитель. Если предделитель употребляется вместе с WDT, команда Лекция. Микроконтроллеры подгруппы pic16F8X CLRWDT обнуляет содержимое пределителя совместно с WDT.

При использовании модуля TIMER0 в режиме счетчика наружных событий нужно учесть то, что наружный тактовый сигнал синхронизируется внутренней частотой Fosc. Это приводит Лекция. Микроконтроллеры подгруппы pic16F8X к возникновению задержки во времени фактического инкрементирования содержимого TMR0.

Синхронизация происходит по окончании 2-го и 4-го тактов работы МК, потому, если предделитель не употребляется, то для фиксации входного действия нужно, чтоб продолжительности высочайшего Лекция. Микроконтроллеры подгруппы pic16F8X и низкого состояний сигнала на входе RA4/T0CKI могли быть более 2 периодов тактовой частоты Tosc плюс некая задержка ( ~ 20 нс).

Если модуль TIMER0 употребляется вместе с пределителем, то частота входного сигнала делится Лекция. Микроконтроллеры подгруппы pic16F8X асинхронным счетчиком так, что сигнал на выходе пределителя становится симметричным. При всем этом нужно, чтоб продолжительности высочайшего и низкого уровней сигнала на входе RA4/T0CKI могли быть более 10 нс. Синхронизация сигнала происходит Лекция. Микроконтроллеры подгруппы pic16F8X на выходе пределителя, потому существует маленькая задержка меж фронтом наружного сигнала и временем фактического инкремента таймера/счетчика. Эта задержка находится в спектре от 3 до 7 периодов колебаний тактового генератора. Таким макаром Лекция. Микроконтроллеры подгруппы pic16F8X, измерение интервала меж событиями будет выполнено с точностью ±4 · Tosc.




Рис. 13.  Структура и вероятные варианты использования пределителя

^ 11. Память данных в РПЗУ (EEPROM)
Микроконтроллеры подгруппы PIC6F8X имеют энергонезависимую память данных 64х8 EEPROM бит, которая Лекция. Микроконтроллеры подгруппы pic16F8X допускает запись и чтение во время обычной работы (во всем спектре питающих напряжений). Эта память не принадлежит области регистровой памяти ОЗУ. Доступ к ней осуществляется средством косвенной адресации через регистры особых функций: EEDATA , который Лекция. Микроконтроллеры подгруппы pic16F8X содержит 8-битовые данные для чтения/записи и EEADR , включающий адресок ячейки, к которой идет воззвание. Для управления процессом чтения/записи употребляются два регистра: EECON1 и EECON2 .

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

Регистр   EEADR может адресовать до 256 б Лекция. Микроконтроллеры подгруппы pic16F8X данных EEPROM. В МК подгруппы PIC6F8X употребляются только 1-ые 64 б, адресуемые шестью младшими битами EEADR. Но старшие два бита также декодируются. Потому эти два бита должны быть установлены в Лекция. Микроконтроллеры подгруппы pic16F8X ‘0’, чтоб адресок попал в доступные 64 бита адресного места.

^ Регистр   EECON2 не является физическим регистром. Он употребляется только при организации записи данных в EEPROM. Чтение регистра   EECON2 дает нули.

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

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

movlw 55h

movwf EECON2

movlw AAh

movwf Лекция. Микроконтроллеры подгруппы pic16F8X EECON2

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

Во время выполнения этого участка программки все прерывания должны быть запрещены, для четкого выполнения временной диаграммы. Время записи – приблизительно 10 мс. Фактическое время записи Лекция. Микроконтроллеры подгруппы pic16F8X может изменяться зависимо от напряжения, температуры и личных параметров кристалла. В конце записи бит WR автоматом обнуляется, а флаг окончания записи EEIF, он же запрос на прерывание, устанавливается.

Для предотвращения случайных Лекция. Микроконтроллеры подгруппы pic16F8X записей в память данных предусмотрен особый бит WREN в регистре   EECON1. Рекомендуется держать бит WREN выключенным, не считая тех случаев, когда необходимо обновить память данных. Более того, кодовые сегменты, которые устанавливают бит WREN, и Лекция. Микроконтроллеры подгруппы pic16F8X те, которые делают запись, следует хранить на разных адресах, чтоб избежать случайного выполнения их обоих при нарушении программки.
^ 12. Организация прерываний
МК подгруппы PIC16F8X имеют четыре источника прерываний:

Все прерывания имеют один и Лекция. Микроконтроллеры подгруппы pic16F8X тот же вектор/адресок – 0004h. Но в управляющем регистре   прерываний   INTCON подходящим битом-признаком записывается, от какого конкретно источника поступил запрос прерывания. Исключение составляет прерывание по окончании записи в EEPROM, признак которого находится в регистре Лекция. Микроконтроллеры подгруппы pic16F8X   EECON1.

Бит общего разрешения/воспрещения прерывания   GIE (INTCON ) разрешает (если = 1) все персонально незамаскированные прерывания либо воспрещает их (если = 0). Каждое прерывание в отдельности может быть дополнительно разрешено/запрещено установкой/сбросом Лекция. Микроконтроллеры подгруппы pic16F8X соответственного бита в регистре   INTCON.

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

В подпрограмме обработки прерывания источник прерывания может быть определен по соответственному биту в регистре признаков. Этот флаг-признак должен быть программно сброшен снутри подпрограммы Лекция. Микроконтроллеры подгруппы pic16F8X. Признаки запросов прерываний не зависят от соответственных маскирующих битов и бита общего комуфлирования GIE.

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

Логика Лекция. Микроконтроллеры подгруппы pic16F8X прерываний контроллера изображена на рис. 14.




Рис. 5.14.  Логика прерываний микроконтроллера

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

Переполнение счетчика TMR0 (FFh->00h) устанавливает в единицу бит запроса T0IF (INTCON). Это прерывание может быть разрешено/запрещено установкой/сбросом Лекция. Микроконтроллеры подгруппы pic16F8X бита маски T0IE (INTCON). Сброс запроса T0IF – дело программки обработки.

Хоть какое изменение сигнала на одном из 4 входов порта   RB устанавливает в единицу бит RBIF (INTCON). Это прерывание может быть разрешено/запрещено установкой Лекция. Микроконтроллеры подгруппы pic16F8X/сбросом бита маски RBIE (INTCON). Сброс запроса RBIF – дело программки обработки.

Признак запроса прерывания по окончании записи в EEPROM, EEIF (EECON1) устанавливается в единицу по окончании автоматической записи данных в EEPROM. Это Лекция. Микроконтроллеры подгруппы pic16F8X прерывание может быть замаскировано сбросом бита EEIE (INTCON). Сброс запроса EEIF – дело программки обработки.

  1)   Этот буфер имеет вход триггера Шмитта, когда изменяется в режиме RC-генератора и КМОП-вход Лекция. Микроконтроллеры подгруппы pic16F8X в других случаях.
  2)   Этот буфер имеет вход триггера Шмитта, когда изменяется в качестве входа наружного прерывания.
  3)   Этот буфер имеет вход триггера Шмитта, когда употребляется в режиме поочередного программирования.
  4)   Этот буфер имеет вход триггера Шмитта, когда Лекция. Микроконтроллеры подгруппы pic16F8X употребляется в режиме поочередного программирования.



lekciya-po-teme-upravlenie-konfliktami-i-stressami-v-organizacii.html
lekciya-podgotovka-k-sochineniyu-otbor-materiala.html
lekciya-ponyatie-subd-funkcii-subd-stranica-4.html