Файл: Архитектура и основы программирования однокристальных микроконтроллеров.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 10.11.2023
Просмотров: 1042
Скачиваний: 7
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
1. АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРА PIC16F84
Особенности программирования портов
Использование TMR0 с внешним сигналом
Сохранение состояния при прерываниях
Режим пониженного энергопотребления (SLEEP)
Защита программы от копирования
ОСНОВЫ ПРОГРАММИРОВАНИЯ PIC16F84 НА АССЕМБЛЕРЕ
Пример простейшей программы управления портами
АРХИТЕКТУРА И ОСНОВЫ ПРОГРАММИРОВАНИЯ ОДНОКРИСТАЛЬНЫХ МИКРОКОНТРОЛЛЕРОВ PIC16F84
при установленном бите защиты невозможно допрограммировать контроллер.
- 1 2 3 4 5 6 7 8 9 ... 27
Структурная организация
СтруктурнаясхемаPIC16F84показананарис.1.1.Архитектурамикроконтроллера основана на концепции раздельных шин и областей памятидляданныхидляпрограмм(гарвардскаяархитектура).Этоувеличиваетскорость обмена по сравнению с традиционной принстонской архитектурой, вкоторой команды и данные передаются по одной и той же шине. Разделениешин команд и данных позволяет увеличить разрядность команды по сравнениюсразрядностьюданных.Шинаданныхипамятьданных(ОЗУ)имеютширину8бит,апрограммная шинаи программнаяпамять (ПЗУ)- ширину 14 бит.Такаяконцепцияобеспечиваетпростую,номощнуюсистемуоднословныхкоманд,разработаннуютак,чтобитовые, байтовыеирегистровыеоперации13
Память программы ЭППЗУ 1Кх14
Шина
Программный счетчик
13
-
уровневый стек
8
Регистры общего назначения
(ОЗУ) 68х8
Шина данных
ЭППЗУ
Память данных
64х8
14 команд
(13 бит)
7
EEADR
Регистр команд
7 Прямой адрес
Мультиплексор адреса
7
Косвенный адрес
RA4/TOCKI
FSR
Регистр состояния
STATUS
8
Счетчик
TMR0
PORT B
RA3 RA0
| Таймер включения питания PWRT |
| Таймер запуска генератора OST |
| Схема сброса POR |
| Сторожевой таймер WDT |
6
Декодер команд и схема управления
Тактовый генератор
OSC2/CLKOUT
OSC1/CLKIN MCLR VDD, VSS
Регистр
TRIS A
PORT A
Мультиплексор
АЛУ
Регистр W
Регистр
TRIS B
OPTION
INTCON
RB7 RB0
Рис. 1.1. Структурная схема PIC16F84
илогическиеоперации.Вкомандах,обрабатывающихдваоперанда,одинизоперандовсодержитсяврабочемрегистре W. Второй операнд может быть константой или содержимым любогорегистраОЗУ.Вкомандахсоднимоперандомоперандможетбытьсодержимым рабочего регистра илилюбого регистра ОЗУ. Длявыполнениявсех операций АЛУ используется рабочий регистр W, который не может бытьпрямоадресован.РезультатоперациивАЛУпомещаетсялибоврабочийрегистр W,либов регистр ОЗУ.В зависимости от результата выполнения операции изменяются значениябитов переноса (С), десятичного переноса (DC) и нулевого результата (Z) врегистре состояния STATUS. При вычитании биты С и DC работают как битызаемаидесятичногозаемасоответственно.Условноеграфическоеизображениемикроконтроллерапоказанонарис.1.2,аназначениевыводов приведено в табл.1.1.Таблица 1.1
| Наименование | Номер | Тип | Логические уровни | Назначение |
| 1 | 2 | 3 | 4 | 5 |
| | | | | PORTA является двунаправленным |
| | | | | портом ввода/вывода |
| RA0 | 17 | I/O | TTL | |
| RA1 | 18 | I/O | TTL | |
| RA2 | 1 | I/O | TTL | |
| RАЗ | 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(2) | Прерывание по изменению состояния, данные при программировании |
| MCLR/VPP | 4 | I | ST | Вход сброса/напряжение программирования. Сброс низким уровнем |
| OSC1/CLKIN | 16 | I | ST/CMOS(3) | Вход генератора/внешняя тактовая частота |
| OSC2/CLKOUT | 15 | 0 | ___ | Выход генератора. Подключается к резонатору. В режиме RC-генератора выход 1/4 тактовой частоты OSC1 |
Окончаниетабл. 1.1
| 1 | 2 | 3 | 4 | 5 |
| VDD | 14 | Р | — | Положительное напряжение питания |
| VSS | 5 | Р | ___ | Общий вывод |
-
I - вход, О - выход, I/O - вход/выход, Р - питание, — - не используется, TTL - вход ТТЛ, ST - вход с триггером Шмитта. -
Буфер является триггером Шмитта при использовании в режиме внешних прерываний. -
Буфер является триггером Шмитта при использовании в режиме последовательного программирования. -
Буфер является триггером Шмитта при использовании в режиме RC-генератора и КМОП-входом — в остальных случаях.
-
MC
RA2 RA3 RA4
MCLR
VSS RB RB1
RB2
RB3
RA1 -
RA -
OSC1 -
OSC2
V 5
PIC16F84
DD
-
RB7 -
RB6 -
RB5 -
RB4
18
17
16
15
14
13
12
11
10
Рис. 1.2. Условное графическое изображение PIC16F84
Входная тактовая частота, поступающая с вывода OSC1/CLKIN, внутри делится на четыре, и из нее формируются четыре циклические неперекрывающиеся тактовые последовательности Q1, Q2, Q3 и Q4. Счетчик команд увеличивается в такте Q1, команда считывается из памяти программы и защелкивается в регистре команд в такте Q4. Команда декодируется и выполняется в течение последующего цикла в тактах Q1...Q4. Временная диаграмма тактирования и выполнения команд изображена на рис. 1.3.