- •Цифровые и микропроцессорные устройства
- •Часть 5 Принципы организации однокристальных микроконтроллеров. Организация памяти микропроцессорных систем
- •15 Января 2008 г., протокол № 4
- •Общие сведения о микроконтроллерах
- •Микроконтроллер pic16f84 Общие сведения
- •Структурная организация
- •Организация памяти
- •Организация памяти программы
- •Организация памяти данных
- •Регистр состояния status
- •Регистр option
- •Регистр intcon
- •Счетчик команд
- •Косвенная адресация данных
- •Порты ввода/вывода
- •Особенности программирования портов
- •Модуль таймера
- •Прерывание от таймера
- •Использование tmr0 с внешним сигналом
- •Предварительный делитель
- •Специальные функции
- •Биты конфигурации
- •Типы генераторов
- •Кварцевый генератор
- •Прерывания
- •Сохранение состояния при прерываниях
- •Сторожевой таймер wdt
- •Режим пониженного энергопотребления (sleep)
- •Защита программы от копирования
- •Индивидуальная метка
- •Внутрисхемное программирование
- •Система команд микроконтроллера pic16f84
- •Общие сведения и основные параметры запоминающих устройств
- •Классификация зу
- •Основные структуры адресных запоминающих устройств
- •Запоминающие элементы оперативных зу
- •Запоминающие элементы постоянных зу
- •Цифровые и микропроцессорные устройства
- •Часть 5 Принципы организации однокристальных микроконтроллеров. Организация памяти микропроцессорных систем
Структурная организация
Структурная схема микроконтроллера PIC16F84 показана на рисунке 1. Архитектура микроконтроллера основана на концепции раздельных шин и областей памяти для данных и для программ (гарвардская архитектура). Это увеличивает скорость обмена по сравнению с традиционной принстонской архитектурой, в которой команды и данные передаются по одной и той же шине. Разделение шин команд и данных позволяет увеличить разрядность команды по сравнению с разрядностью данных. Шина данных и память данных (ОЗУ) имеют разрядность 8 бит, а программная шина и программная память (ПЗУ) – 14 бит. Такая концепция обеспечивает простую, но мощную систему однословных команд, разработанную так, что битовые, байтовые и регистровые операции работают с высокой скоростью и перекрытием по времени выборок команд и циклов выполнения. 14-битовая разрядность программной памяти обеспечивает выборку 14-битовой команды за один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку следующей и исполнение текущей команды. Все команды выполняются за один машинный цикл, исключая команды переходов, которые выполняются за два цикла. В PIC16F84 программная память объемом 1 К×14 расположена внутри кристалла. Исполняемая программа может находится только во внутреннем ПЗУ.
Регистры PIC16F84 разделяются на две функциональные группы: специальные и общего назначения. Специальные регистры используются для управления режимами работы функциональных блоков микроконтроллера, регистры общего назначения (память данных) – для хранения переменных.
Микроконтроллер PIC16F84 использует прямую и косвенную адресацию всех регистров и ячеек памяти. Все специальные регистры и счетчик команд также адресуются как память данных. Симметричная система команд позволяет выполнять любую операцию с любым регистром, используя любой из названных выше методов адресации. Это облегчает программирование для PIC16F84.
В микроконтроллерах PIC16F84 имеется 8-разрядное арифметико-логическое устройство (АЛУ) и рабочий регистр W. АЛУ выполняет сложение, вычитание, сдвиг, битовые и логические операции. В командах, обрабатывающих два операнда, один из операндов содержится в рабочем регистре W. Второй операнд может быть константой или содержимым любого регистра ОЗУ. В командах с одним операндом операнд может быть содержимым рабочего регистра или любого регистра ОЗУ. Для выполнения всех операций АЛУ используется рабочий регистр W, который не может быть прямо адресован. Результат операции в АЛУ помещается либо в рабочий регистр W, либо в регистр ОЗУ.
В зависимости от результата выполнения операции изменяются значения битов переноса (С), десятичного переноса (DC) и нулевого результата (Z) в регистре состояния STATUS. При вычитании биты C и DC работают как биты заема и десятичного заема соответственно.
Условное графическое обозначение микроконтроллера PIC16F84 показано на рисунке 2, а назначение выводов приведено в таблице 1.
Таблица 1 – Назначение выводов ОМК PIC16F84
Наименование |
№ |
Тип |
Логические уровни |
Назначение |
|
|
|
|
PORTA является двунаправленным портом ввода/вывода |
RA0 |
17 |
I/O |
TTL |
|
RA1 |
18 |
I/O |
TTL |
|
RA2 |
1 |
I/O |
TTL |
|
RA3 |
2 |
I/O |
TTL |
|
RA4/T0CKI |
3 |
I/O |
ST |
Выход с открытым стоком/вход таймера TMR0 |
|
|
|
|
PORTB является двунаправленным портом ввода/вывода. Имеет на всех выводах программно включаемые подтягивающие резисторы |
RB0/INT |
6 |
I/O |
TTL/ST 1) |
Вход внешних прерываний |
RB1 |
7 |
I/O |
TTL |
|
RB2 |
8 |
I/O |
TTL |
|
RB3 |
9 |
I/O |
TTL |
|
RB4 |
10 |
I/O |
TTL |
Прерывание по изменению состояния |
RB5 |
11 |
I/O |
TTL |
Прерывание по изменению состояния |
RB6 |
12 |
I/O |
TTL/ST 2) |
Прерывание по изменению состояния, тактирование при программировании |
RB7 |
13 |
I/O |
TTL/ST 3) |
Прерывание по изменению состояния, данные при программировании |
|
4 |
I |
ST |
Вход сброса/напряжение программирования. Сброс низким уровнем |
OSC1/CLKIN |
16 |
I |
ST/CMOS 4) |
Вход генератора/внешняя тактовая частота |
Окончание таблицы 1
OSC2/CLKOUT |
15 |
0 |
– |
Выход генератора. Подключается к резонатору. В режиме RC-генератора выход 1/4 тактовой частоты OSC1 |
|
14 |
P |
– |
Положительное напряжение питания |
|
5 |
P |
– |
Общий вывод |
Примечания 1) – I – вход, O – выход, I/O – вход/выход, P – питание, TTL – вход TTL, ST – вход с триггером Шмитта; 2) – буфер является триггером Шмитта при использовании в режиме внешних прерываний; 3) – буфер является триггером Шмитта при использовании в режиме последовательного программирования; 4) – буфер является триггером Шмитта при использовании в режиме RC-генератора и КМОП-входом в остальных случаях. |
Рисунок 2 – Условное графическое обозначение микроконтроллера PIC16F84
Входная тактовая частота, поступающая с вывода OSC1/CLKIN, внутри делится на четыре, и из нее формируются четыре циклические неперекрывающиеся тактовые последовательности Q1, Q2, Q3 и Q4. Содержимое счетчика команд PC увеличивается в такте Q1, команда считывается из памяти программы и защелкивается в регистре команд в такте Q4. Команда декодируется и выполняется в течение последующего цикла в тактах Q1…Q4. Временная диаграмма тактирования и выполнения команд изображена на рисунке 3.
Рисунок 3 – Временные диаграммы тактирования и выполнения команд