- •Конспект лекцій з дисципліни “Мікропроцесорні пристрої”
- •1 Основи теорії мікропроцесорних пристроїв
- •Класифікація мікропроцесорів. Варіанти архітектури
- •Базова структура мікропроцесорної системи
- •Основні характеристики мп
- •Типова структура мікропроцесора
- •Система команд мп і режими адресації
- •Організація передачі інформації в мпс. Інтерфейс
- •1.6.1 Способи передачі інформації
- •Методи обміну інформацією в мікропроцесорній системі
- •2 Мікроконтролери
- •Структура мк
- •Процесорне ядро мк
- •Резидентна пам'ять мк
- •Порти уведення/виводу
- •Таймери і процесори подій
- •Аналогово-цифрові й цифро-аналогові перетворювачі
- •Мінімізація споживання енергії в мп-системах
- •Моніторинг напруги живлення мк
- •Апаратні і програмні рішення по підвищенню надійності роботи мк
- •Контролери Intel mcs-51
- •3.1 Структурна організація Intel 8051
- •3.1.1 Арифметично-логічний пристрій
- •Зовнішня пам'ять
- •Пристрій керування і синхронізації
- •Програмна модель омк
- •Система команд Intel 8051
- •Арифметичні операції:
- •Логічні команди:
- •Бітові команди:
- •Периферійні присторої омк
- •Порти введення/виводу
- •Звертання до портів можливе тільки за прямою адресою.
- •Лічильники/таймери
- •Послідовний порт
- •Примітка
- •Мікроконтролер pic16f877
- •Характеристика мікроконтролера
- •Cтруктурна схема мікроконтролера pic16f877
- •Організація пам'яті
- •Пам’ять програм
- •Організація пам'яті даних
- •Регістр стану status
- •Лічильник команд
- •Порти введення/виводу
- •Регістри portа і trisa
- •Регістри portb і trisb
- •Регістри portc і trisc
- •Регістри portd і trisd
- •Регістри porte і trise
- •Таймери
- •Модуль таймера tmr0
- •Модуль таймера tmr1
- •Модуль таймера tmr2
- •Модуль 10-розрядного ацп
- •Adcon0 (адреса 1Fh)
- •Adcon1 (адреса 9Fh)
- •Переривання
- •Сторожовий таймер wdt
- •Біти конфігурації
- •Слово конфігурації (адреса 2007h)
- •Система команд
- •Література
Організація пам'яті
У мікроконтролерах PIC16F87X існує два види пам'яті. Пам'ять програм і пам'ять даних мають роздільні шини даних і адреси, що дозволяє виконувати паралельний доступ.
Пам’ять програм
Мікроконтролери PIC16F87X мають 13-розрядний лічильник команд PC, здатний адресувати 8К х 14 слів пам'яті програм. Фізично реалізовано FLASH пам'яті програм 8К х 14 у PIC16F877. Адреса вектора скидання – 0000h. Адреса вектора переривань – 0004h.
Пам'ять програм (ППЗП) має сторінкову організацію (рис. 4.2). Об'єм однієї сторінки 2048 14-розрядних слів. Мікроконтролер PIC 16F877 має чотири сторінки пам'яті програм для зберігання 14-розрядних кодів команд.
..................
.........
РС < 12: 0>
-
Стік, рівень 1
Стік, рівень 2
Стік, рівень 8
Вектор скиду (0000h) |
|
|
|
Вектор переривань |
|
Сторінка 0 |
0005h 07FFh |
Сторінка 1 |
0800h 0FFFh |
Сторінка 2 |
1000h 17FFh |
Сторінка 3 |
1800h 1FFFh |
Внутрішня
пам’ять програм
Рисунок 4.2 – Структура пам’яті програм
Усі мікроконтролери PIC16F87X здатні адресувати 8К слів пам'яті програм. Інструкції переходів (CALL і GOTO) мають 11-разрядне поле для вказівки адреси, що дозволяє безпосередньо адресувати 2К слів пам'яті програм. Для адресації верхніх сторінок пам'яті програм використовуються 2 біта в регістрі PCLATH<4:3>. Перед виконанням команди переходу (CALL або GOTO) необхідно запрограмувати біти регістра PCLATH<4:3> для адресації необхідної сторінки.
При виконанні інструкцій повернення з підпрограми, 13-розрядне значення для лічильника програм РС береться з вершины стека, тому маніпуляція бітами регістра PCLATH<3:4> не потрібна.
Організація пам'яті даних
Пам'ять даних поділена на чотири банки, які містять регістри загального і спеціального (SFR) призначення. Біти RP1 (STATUS<6>) і RP0 (STATUS<5>) призначені для управління банками даних. У таблиці 4.1 показаний стан керуючих бітів при зверненні до банків пам'яті даних. Карта пам'яті даних показана на рисунку 4.3.
Таблиця 4.1 – Адресація банків даних
-
RP1:RPO
Банк
00
0
01
1
10
2
11
3
Об'єм банків пам'яті даних до 128 байтів (7Fh). На початку банку розміщуються регістри спеціального призначення, потім регістри загального призначення виконані як статичний ОЗП. Усі реалізовані банки містять регістри спеціального призначення. Деякі, часто використовувані регістри спеціального призначення, можуть відображатися і в інших банках пам'яті.
Регістри можуть бути адресовані прямо або побічно з використанням регістра непрямої адресації FSR. Безпосередня адресація підтримується спеціальними командами, що завантажують дані з пам'яті програми в робочий регістр W.
Регістри спеціального призначення використовуються для керування функціями мікроконтролера і можуть бути розділені на два набори: регістри базових функцій і регістри периферійних пристроїв. Регістри базових функцій містять у собі регістр-перемикач непряму адресації (INDF), програмний лічильник (РС), представлений двома регістрами PCL і PCLATH, регістр слова стану (STATUS), регістр-покажчик непряму адресації (FSR), робочий регістр (W), регістр переривань (INTCON), а також регістр режимів роботи та конфігурації попереднього дільника і таймера (OPTION). Регістри периферійних пристроїв містять у собі регістри (RA,RB,RC,RD,RE-порти А,B,C,D,E), регістри даних (EEDATA) і адреси (EEADR) пам'яті даних-констант, регістри таймерів-лічильників (TMR0,1,2) і регістри керування конфігурацією портів вводу/виводу (TRISA, TRISB, TRISC, TRISD, TRISE).
Регістри загального призначення використовуються для зберігання даних по розсуду користувача.
|
Адреса |
Адреса |
Адреса |
Адреса
180h
181h 182h 183h 184h 185h 186h 187h 188h 189h 18Ah 18Bh 18Ch 18Dh 18Eh 18Fh
19Fh 1A0h
1EFh 1F0h |
||||||||
|
Регістр * непрямої адресації |
00h |
Регістр * непрямої адресації |
80h |
Регістр * непрямої адресації |
100h |
Регістр * непрямої адресації |
|||||
|
TMR0 |
01h |
OPTION |
81h |
TMR0 |
101h |
OPTION REG |
|||||
|
PCL |
02h |
PCL |
82h |
PCL |
102h |
PCL |
|||||
|
STATUS |
03h |
STATUS |
83h |
STATUS |
103h |
STATUS |
|||||
|
FSR |
04h |
FSR |
84h |
FSR |
104h |
FSR |
|||||
|
PORTA |
05h |
TRISA |
85h |
|
105h |
х |
|||||
|
PORTB |
06h |
TRISB |
86h |
PORTB |
106h |
TRISB |
|||||
|
PORTC |
07h |
TRISC |
87h |
х |
107h |
х |
|||||
|
PORTD(1) |
08h |
TRISD(1) |
88h |
х |
108h |
х |
|||||
|
PORTEP) |
09h |
TRISEP) |
89h |
х |
109h |
х |
|||||
|
PCLATH |
0Ah |
PCLATH |
8Ah |
PCLATH |
10Ah |
PCLATH |
|||||
|
INTCON |
0Bh |
INTCON |
8Bh |
INTCON |
10Bh |
INTCON |
|||||
|
PIR1 |
0Ch |
PIE1 |
8Ch |
EEDATA |
10Ch |
EECON1 |
|||||
|
PIR2 |
0Dh |
PIE2 |
8Dh |
EEADR |
10Dh |
EECON2 |
|||||
|
TMR1L |
0Eh |
PCON |
8Eh |
EEDATH |
10Eh |
Резерв^' |
|||||
|
TMR1H |
0Fh |
x |
8Fh |
EEADRH |
10Fh |
Резерв^' |
|||||
|
T1CON |
10h |
x |
90h |
|
110h |
|
|||||
|
TMR2 |
11h |
SSPCON2 |
91h |
Регістри |
11Fh |
Регістри |
|||||
|
T2CON |
12h |
PR2 |
92h |
|
|
||||||
|
SSPBUF |
13h |
SSPADD |
93h |
|
|
||||||
|
SSPCON |
14h |
SSPSTAT |
94h |
загального |
загального |
||||||
|
CCPR1L |
15h |
x |
95h |
|
|
||||||
|
CCPR1 H |
16h |
x |
96h |
призна- |
призна- |
||||||
|
CCP1CON |
17h |
x |
97h |
чення |
чення |
||||||
|
RCSTA |
18h |
TXSTA |
98h |
16 байтів |
16 байтів |
||||||
|
TXREG |
19h |
SPBRG |
99h |
||||||||
|
RCREG |
1Ah |
x |
9Ah |
||||||||
|
CCPR2L |
1Bh |
x |
9Bh |
||||||||
|
CCPR2H |
1Ch |
x |
9Ch |
||||||||
|
CCP2CON |
1Dh |
x |
9Dh |
||||||||
|
ADRESH |
1Eh |
ADRESL |
9Eh |
||||||||
|
ADCONO |
1Fh |
ADCON1 |
9Fh |
||||||||
|
Регістри загаль- ного призна- чення 96 байтів |
20h
7Fh |
Регістри загаль- ного призна- чення 80 байтів |
A0h
EFh F0h FFh |
Регістри загаль- ного призна- чення 80 байтів |
120h
16Fh 170h 17Fh |
Регістри загаль- ного призна- чення 80 байтів |
|||||
Доступ до 70h- 7Fh |
Доступ до 70h- 7Fh |
Доступ до 70h- 7Fh |
||||||||||
Банк 0 Банк 1 Банк 2 БанкЗ *- нефізичний регистр х – не реалізовані, значення при читанні 00h |
||||||||||||
Рисунок 4.3 – Карта пам'яті даних мікроконтролерів PIC16F876/877
Для виконання непрямої адресації необхідно звернутися до фізично не реалізованого регістра INDF. Звернення до регістра INDF фактично викличе дію з регістром, адреса якого вказана в FSR. Непряме читання регістра INDF (FSR=0) дасть результат 00h. Непрямий запис в регістр INDF не викличе ніяких дій (викликає дії на прапори АЛП в регістрі STATUS). 9-й біт непрямої адреси IRP зберігається в регістрі STATUS<7>. Приклад 9-розрядної непрямої адресації показаний на рисунку 4.4.
Рисунок 4.4 – Приклад 9-розрядної непрямої адресації
