- •Конспект лекцій з дисципліни “Мікропроцесорні пристрої”
- •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)
- •Система команд
- •Література
Програмна модель омк
ОМК виконує дії над 8-розрядними операндами. Програмна модель центрального процесора 8051 (рис. 3.6) містить шість регістрів. Усі регістри, крім програмного лічильника (лічильника команд) PC, є частиною об'єднаного адресного простору ОЗП даних. Для звертання до них можуть бути використані як символьні імена регістрів - АСС, В, PSW, SP, DPH, DPL, так і їхні абсолютні адреси - 0E0h, 0F0h, 0D0h, 81h, 82h, 83h відповідно.
-
7
0
Акумулятор ACС
7
0
Регістр B
15
8
7
0
Регістр непрямої адресації DPTR
15 8 7 0
7 0
7 0
Регістр ознак PSW
-
C
A C
F 0
RS 1
RS 0
O V
P
Рисунок 3.6 – Програмна модель центрального процесора
Акумулятор (ACС) є джерелом операнда і місцем фіксації результату при виконанні арифметичних, логічних операцій і низки операцій передачі даних. Крім того тільки з використанням акумулятора можуть бути виконані операції зсуву, перевірка на нуль, формування прапора паритету і т. п.
Регістр B - додатковий 8-розрядний регістр. Використовується в операціях множення і ділення. В інших командах може інтерпретуватися як регістр загального призначення.
Регістр-покажчик даних DPTR - 16-розрядний регістр (DPH - старший байт, DPL - молодший байт). Використовується як регістр непрямої адресації при звертанні до пам'яті команд і зовнішньої пам'яті даних. Система команд передбачає можливість звертання до окремих байтів (DPH чи DPL) регістра DPTR, що дозволяє використовувати ці регістри для збереження проміжних результатів чи обчислень як джерело одного з операндів.
Програмний лічильник PC - 16-розрядний регістр, містить адресу поточної команди або адресу операнда, використовуваного в поточній команді. Після скидання мікроконтролера (МК) програмний лічильник автоматично встановлюється в «0». Тому в МК із процесорним ядром MCS-
51 будь-яка програма користувача повинна починатися з адреси 0000h. Команди звертання до РС відсутні. Однак він програмно доступний за допомогою спеціальних процедур.
Покажчик стека SP - 8-розрядний регістр, містить адресу вершини стека. Архітектура процесорного ядра MCS-51 припускає розміщення ділянки стекової пам'яті тільки в ділянці внутрішнього ОЗП даних. Глибина стека обмежена обсягом резидентного ОЗП. При скиданні ОМК покажчик стека встановлюється в положення 07h, призначаючи ділянку стека до першого банку регістрів. Тому при використанні стека після скидання необхідно задавати необхідне значення SP. Звичайно вершина стека розміщається в старших адресах вільної зони.
При запису в стек (команда PUSH) зміст покажчика SP збільшується на 1, а при читанні (команда POP) – зменшується на 1. Покажчик стека апаратно збільшується на 2 при виконанні команд виклику підпрограми (CALL) і звертанні до підпрограми обробки переривань і зменшується на 2 при виконанні команд повернення RET, RETI. У стек при цьому відповідно записується чи витягається вміст РС.
Слово стану процесора ССП (PSW). При виконанні більшості команд в АЛП формується низка ознак операції (прапорів), що фіксуються в регістрі ССП. У таблиці 3.2 наводиться перелік прапорів ССП, даються їхні символічні імена й описуються умови їхнього формування.
Таблиця 3.2 – Формат слова стану процесора PSW
Символ |
Позиція |
Ім'я і призначення |
1 |
2 |
3 |
C |
PSW.7 |
Прапор переносу зі старшого розряду. Установлюється і скидається при виконанні арифметичних і логічних операцій апаратно. Можлива зміна значення з програмними засобами |
AC |
PSW.6 |
Прапор допоміжного переносу з третього розряду в четвертий. Установлюється і скидається тільки апаратними засобами при виконанні команд додавання і вирахування |
F0 |
PSW.5 |
Прапор 0. Може бути встановлений, скинутий чи перевірений програмою як прапор, встановлений користувачем |
RS1 RS0 |
PSW.4 PSW.3 |
Вибір банку регістрів. Установлюється і скидається програмою для вибору робочого банку регістрів (див. примітку) |
OV |
PSW.2 |
Прапор арифметичного переповнення. Установлюється і скидається апаратно при виконанні арифметичних операцій |
- |
PSW.1 |
Не використовується |
Продовження таблиці 3.2
1 |
2 |
3 |
|||
P |
PSW.0 |
Прапор паритету. Установлюється і скидається в кожному циклі команди тільки апаратно. Набуває значення 1 при парному числі одиничних бітів в акумуляторі |
|||
Примітка |
RS1 |
RS0 |
Банк |
Межі адрес |
|
0 |
0 |
0 |
00…07H |
||
0 |
1 |
1 |
08…0FH |
||
1 |
0 |
2 |
10…17H |
||
1 |
1 |
3 |
18…1FH |
||
Найбільше «активним» прапором ССП є прапор переносу, що бере участь і модифікується в процесі виконання багатьох операцій, включаючи додавання, вирахування і зсув. Крім того, прапор переносу (C) виконує функції «булевого аккумулятора» у командах, що маніпулюють з бітами.
Прапор арифметичного переповнення (OV) фіксує перевищення довжини розрядної сітки при операціях над цілими числами зі знаком.
Прапор АС використовується в процедурі корекції результату при виконанні двійково-десяткового додавання.
Прапор паритету Р забезпечує контроль переданої інформації. Значення біта паритету змінюється при будь-якій операції, у якій АСС є приймачем результату. При прийомі інформації виконується повторне формування Р, а потім порівнюються біти паритету, обчислених при прийомі і передачі інформації.
АЛП не керує прапорами селекції банку регістрів (RS0, RS1) і F0.
Їхні значення цілком визначаються прикладною програмою.
У регістрі ознак відсутні прапори нульового Z і негативного N результатів. Ознака нульового стану акумулятора формується апаратно у всіх командах, у яких акумулятор є приймачем результату. У регістрі ознак дорівненість нулю не відображається. Команди умовного переходу за ознакою Z (JZ і JNZ) варто використовувати після виконання команд, у яких результат операції записується в акумулятор.
Ознака знака результату фіксується в старшому біті АСС, який доступний за допомогою бітових команд умовних переходів (JB, JNB).
Призначення і функції регістрів спеціальних функцій докладно розглянуті в розділі 3.4.
РПД розподілена на 3 зони, кожна з якої має свої функціональні особливості.
Зона
регістрів загального призначення (РЗП)
(таблиця 3.3) складається
з 4-х банків, розташованих з адреси 00h
до
1Fh. Кожен
банк складається з 8 комірок РПД. Після
скидання, активним є нульовий банк.
Номер банку встановлюється у слові
стану процесора. Перевагою цієї зони є
можливість використання прямої
регістрової адресації. Команди роботи
з регістрами однобайтові і виконуються
за мінімальний час (1 мкс). Звичайно в
цій зоні розташовують регістри тимчасового
збереження інформації. Виключення
складають регістри R0, R1
кожного банку, що можуть використовуватися
як регістри непрямої адресації при
звертанні до РПД чи як індексні регістри
при звертанні до зовнішньої пам'яті
даних.
Таблиця 3.3 – Структура внутрішньої пам'яті даних
Адреса |
Бітові адреси |
Адреса |
Бітові адреси |
Регістр |
|||||||||||||||||
7Fh
30h |
|
|
|
|
|||||||||||||||||
Комірки резидентного ОЗП |
0FFh |
Комірки резидентного |
|
||||||||||||||||||
(вільна зона) |
|
ОЗП |
|
|
|||||||||||||||||
|
|
|
|
||||||||||||||||||
2Fh |
7F |
7E |
7D |
7C |
7B |
7A |
79 |
78 |
0F0h |
F7 |
F6 |
F5 |
F4 |
F3 |
F2 |
F1 |
F0 |
B |
|||
2Eh |
77 |
76 |
75 |
74 |
73 |
72 |
71 |
70 |
|
|
|
||||||||||
2Dh |
6F |
6E |
6D |
6C |
6B |
6A |
69 |
68 |
0E0h |
E7 |
E6 |
E5 |
E4 |
E3 |
E2 |
E1 |
E0 |
A |
|||
2Ch |
67 |
66 |
65 |
64 |
63 |
62 |
61 |
60 |
|
|
|
||||||||||
2Bh |
5F |
5E |
5D |
5C |
5B |
5A |
59 |
58 |
0D0h |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
PSW |
|||
2Ah |
57 |
56 |
55 |
54 |
53 |
52 |
51 |
50 |
|
|
|
||||||||||
29h |
4F |
4E |
4D |
4C |
4B |
4A |
49 |
48 |
0B8h |
- |
- |
- |
BC |
BB |
BA |
B9 |
B8 |
IP |
|||
28h |
47 |
46 |
45 |
44 |
43 |
42 |
41 |
40 |
|
|
|
||||||||||
27h |
3F |
3E |
3D |
3C |
3B |
3A |
39 |
38 |
0B0h |
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
B1 |
B0 |
P3 |
|||
26h |
37 |
36 |
35 |
34 |
33 |
32 |
31 |
30 |
|
|
|
||||||||||
25h |
2F |
2E |
2D |
2C |
2B |
2A |
29 |
28 |
0A8h |
AF |
- |
- |
AC |
AB |
AA |
A9 |
A8 |
IE |
|||
24h |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
|
|
|
||||||||||
23h |
1F |
1E |
1D |
1C |
1B |
1A |
19 |
18 |
0A7h |
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
P2 |
|||
22h |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
99h |
|
SBUF |
||||||||||
21h |
0F |
0E |
0D |
0C |
0B |
0A |
09 |
08 |
98h |
9F |
9E |
9D |
9C |
9B |
9A |
99 |
98 |
SCON |
|||
20h |
07 |
06 |
05 |
04 |
03 |
02 |
01 |
00 |
|
|
|
||||||||||
1Fh |
Банк 3 (R7-R0) |
90h |
97 |
96 |
95 |
94 |
93 |
92 |
91 |
90 |
P1 |
||||||||||
|
8Dh |
|
TH1 |
||||||||||||||||||
18h |
8Ch |
|
TH0 |
||||||||||||||||||
17h |
Банк 2 (R7-R0) |
8Bh |
|
TL1 |
|||||||||||||||||
|
8Ah |
|
TL0 |
||||||||||||||||||
10h |
89h |
|
TMOD |
||||||||||||||||||
0Fh |
Банк 1 (R7-R0) |
88h |
8F |
8E |
8D |
8C |
8B |
8A |
89 |
88 |
TCON |
|
|
87h |
|
PCON |
|||||||||
08h |
83h |
|
DPH |
|||||||||
07h |
Банк 0 (R7-R0) |
82h |
|
DPL |
||||||||
|
81h |
|
SP |
|||||||||
00h |
80h |
87 |
86 |
85 |
84 |
83 |
82 |
81 |
80 |
P0 |
||
Зона регістрів спеціальних функцій (РСФ) розташована з адреси 80h до 0FFh. У ній знаходяться основні регістри даних і керування.
Звертання до РСФ можливо тільки з указівкою прямої адреси. У 8051 використовується тільки частина адрес зони РСФ. Невикористані адреси зарезервовані для розвитку ОМК даної серії.
8051 надає великі можливості для роботи з бітовими змінними, котрі мають бути розташовані в бітовій зоні. Бітовий простір починається у бітовій зоні РПД (адреси 20…2Fh), а закінчується в зоні регістрів спеціальних функцій. Звертання до бітів можливо тільки з використанням команд прямої бітової адресації. Адресний простір бітової зони і РПД мають різну метрику.
Вільна зона - особливостей за способами адресації не має.
Структура адресного простору РПД подана в таблиці 3.3. РПД являє собою єдиний адресний простір, кожна зона якого має визначені особливості. У той час є можливість звертатися до будь-якої комірки пам'яті РПД, використовуючи пряму чи непряму адресацію.
Наявність зон, що мають різні функціональні можливості, при грамотному їхньому використанні дозволяє мінімізувати як довжину коду програм, так і час їхнього виконання.
