- •1. Основные термины и определения
- •Архитектура микроконтроллеров серии mcs51
- •2.1.Общая характеристика микроконтроллеров
- •2.2. Структурная организация мк
- •Контрольные вопросы
- •3.Организация памяти в микроконтроллерах серии mcs-51. Представление программ и данных в памяти мк
- •3.1.Разделение памяти программ и данных
- •3.2.Память программ
- •3.3. Память данных
- •Контрольные вопросы
- •4. Организация и программирование портов ввода/вывода
- •4.1. Параллельные порты ввода / вывода
- •4.2. Последовательный интерфейс микроконтроллеров mcs-51
- •Контрольные вопросы
- •5. Организация и управление таймерами/счётчиками микроконтроллера mcs-51
- •Контрольные вопросы
- •Организация прерываний в микроконтроллерах серии mcs-51
- •6.1. Структура прерываний
- •6.2. Приоритеты прерываний
- •6.3. Обработка прерываний и время отклика
- •Контрольные вопросы
- •7. Основы программирования на языке Ассемблера микроконтроллера mcs-51
- •7.1. Правила записи программ на языке Ассемблера
- •7.2. Директивы языка
- •7.3. Система команд языка Ассемблер микроконтроллера
- •7.3.1. Режимы адресации
- •7.3.2. Арифметические и логические инструкции
- •7.3.3. Команды передачи данных
- •Инструкции передачи данных mcs-51, использующие внутреннюю память данных
- •Инструкции передачи данных mcs-51, использующие внешнюю память данных
- •7.3.4. Логические операции
- •7.3.5. Инструкции переходов
- •Контрольные вопросы
3.3. Память данных
В правой части рис.3 показано расположение внутренней и внешней памяти данных, доступной пользователю. Подключение внешней памяти данных объемом до 2 Кбайт показано на рис.6, но при этом считывание программы производится из внутреннего ПЗУ. Порт 0 используется для связи с внешним ОЗУ мультиплексированной шиной адреса/данных, а 3 линии портаP2предназначены для выбора страницы ОЗУ. Для управления внешней памятью процессор генерирует сигналыRD и WR.
При этом возможна адресация до 64 Кбайт внешней памяти данных. Адрес может иметь размер в 1 или 2 байта. Однобайтная адресация часто используется при страничной организации ОЗУ. Выбор страниц осуществляется линиями портов ввода-вывода, как показано на рис.6. При использовании двухбайтной адресации старший байт адреса выводится через портP2.
Внутренняя память данных изображена на рис.7. Она может быть разделена на 3 условных блока: «нижний» (lower), «верхний» (upper) и пространствоРегистров Специальных Функций (SFR).
Рис.6. Использование внешней памяти данных
FFh . . . . . . 80h |
Область внутреннего ОЗУ «Upper 128» Доступна в режиме косвенной адресации (на I8051-отсутствует ) |
Область регистров специ-альных функций (SFR) Доступна в режиме прямой адресации |
7Fh . . . . . . 00h |
Область внутреннего ОЗУ «Lower 128» Доступна в режиме косвенной и прямой адресации (присутствует на всех кристаллах MCS-51)
| |
|
Косвенная адресация |
прямая адресация |
Рис.7. Внутренняя память данных
Внутренняя память данных имеет байтовую адресацию, которая подразумевает 256 байт адресного пространства. Нижние 128 байт ОЗУ присутствуют на всех кристаллах MCS-51 и показаны на рис.8. Первые 32 байта сгруппированы в 4 банка по 8 регистров. Инструкции программы могут оперировать с ними как с регистрами общего назначения R0-R7. Два битаССП(PSW) определяют, какой из банков используется в текущий момент. Это позволяет более эффективно использовать память программ, поскольку регистровые инструкции выполняются быстрее. Переключение регистровых банков эффективно заменяет операция сохранения регистров в стеке на время обработки процедуры прерывания.
Следующие за регистровыми банками 16 байт образуют блок побитно адресуемого пространства. Набор инструкций семейства MCS-51 содержит широкий выбор операций над битами, а 128 бит (16 байт 8) в этом блоке могут быть прямо адресованы. Битовые адреса имеют значения от 00h до 7Fh.
Все байты в нижней 128-байтной половине памяти могут адресоваться как прямо, так и косвенно. Верхняя 128-байтная половина ОЗУ в микро-схеме I8051 отсутствует, но имеется в кристаллах с 256 байтами ОЗУ.
В табл. 2 показано размещение регистров специальных функций (SFR). Эти регистры включают в себя регистры портов, таймеры, средства управления периферией и т.д. Они доступны только при прямой адресации. Для 16 адресов в пространстве SFR имеется возможность как битовой, так и байтовой адресации (табл.4). Побитно адресуемыми регистрами являются регистры, шестнадцатиричные адреса которых заканчивается на 0 или 8. Битовые адреса в этой области располагаются со значения 80h по FFh.
Вся серия имеет базовый набор SFR, как в микросхеме I8051 по тем же адресам. Однако в кристаллах, представляющих собой дальнейшее развитие I8051, имеются и некоторые дополнительные регистры, отсутствующие в базовом варианте. Этим микросхемам свойственны свои уникальные функциональные особенности (такие, как наличие матрицы программируемых счетчиков - PCA, сторожевого таймера -HWDT, АЦП, улучшенная система прерываний и т.д.). Это подразумевает наличие новых регистров, имеющих собственные адреса в пространстве SFR; реально использующих некоторые битовые поля, зарезервированные для битовой адресации SFR в микроконтроллере I8051.
7Fh . . . 30h |
Побайтно адресуемая область ОЗУ | |||||||||
|
Побитно адресуемая область ОЗУ (битовые адреса 00h-7Fh) | |||||||||
2Fh |
7Fh |
7Eh |
7Dh |
7Ch |
7Bh |
7Ah |
79h |
78h | ||
2Eh |
77h |
76h |
75h |
74h |
73h |
72h |
71h |
70h | ||
2Dh |
6Fh |
6Eh |
6Dh |
6Ch |
6Bh |
6Ah |
69h |
68h | ||
2Ch |
67h |
66h |
65h |
64h |
63h |
62h |
61h |
60h | ||
2Bh |
5Fh |
5Eh |
5Dh |
5Ch |
5Bh |
5Ah |
59h |
58h | ||
2Ah |
57h |
56h |
55h |
54h |
53h |
52h |
51h |
50h | ||
29h |
4Fh |
4Eh |
4Dh |
4Ch |
4Bh |
4Ah |
49h |
48h | ||
28h |
47h |
46h |
45h |
44h |
43h |
42h |
41h |
40h | ||
27h |
3Fh |
3Eh |
3Dh |
3Ch |
3Bh |
3Ah |
39h |
38h | ||
26h |
37h |
36h |
35h |
34h |
33h |
32h |
31h |
30h | ||
25h |
2Fh |
2Eh |
2Dh |
2Ch |
2Bh |
2Ah |
29h |
28h | ||
24h |
27h |
26h |
25h |
24h |
23h |
22h |
21h |
20h | ||
23h |
1Fh |
1Eh |
1Dh |
1Ch |
1Bh |
1Ah |
19h |
18h | ||
22h |
17h |
16h |
15h |
14h |
13h |
12h |
11h |
10h | ||
21h |
0Fh |
0Eh |
0Dh |
0Ch |
0Bh |
0Ah |
09h |
08h | ||
20h |
07h |
06h |
05h |
04h |
03h |
02h |
01h |
00h | ||
1Fh . . . 18h |
Регистровый банк 3 | |||||||||
17h . . . 10h |
Регистровый банк 2 | |||||||||
0Fh . . . 08h |
Регистровый банк 1 | |||||||||
07h . . . 00h |
< — SP после RESET Регистровый банк 0 |
Рис.8. Нижние 128 байт внутреннего ОЗУ
При программировании доступны следующие SFR-регистры:
Аккумулятор (адрес 0E0h). Кроме обращения к аккумулятору командами, использующих мнемонику «A», имеется возможность побито-вой или побайтной адресации, как SFR-регистра. Команды, предназначенные для побитной работы с аккумулятором, применяют мнемонику «ACC». Для обращения к определенному биту аккумулятора на языке ассемблера MCS-51 достаточно записать:ACC.N, где Nномер требуемого бита:
MOV ACC.0, C; пересылка в младший бит аккумулятора флага переноса.
Регистр В (адрес 0F0h). Используется при операциях умножения и деления, а также как сверхоперативный регистр. Обращение к нему, как к регистру SFR , производится аналогично аккумулятору.
Слово Состояния Программы (PSW) (адрес 0D0h). Этот регистр микроконтроллера содержит информацию о состоянии программы. Кроме неявного его использования битовыми и арифметическими командами, может быть адресован как регистр SFR, в том числе и побитно. Каждый бит PSW имеет свою собственную мнемонику, например: «PSW.AC».
Указатель стека SP (адрес 081h). Используется для указания на вершину стека в операциях записи в стек и чтении из него. Неявно используется такими командами, как PUSH, CALL, RET, RETI, POP. По аппаратному сбросу ЦП устанавливается в значение 07h (область стека в этом случае соответственно начинается с адреса внутренней памяти данных 08h) и инкрементируется при каждой записи в стек. Запись в SFR-регистр указателя стека производится для предопределения положения стека во внутренней памяти данных микроконтроллера. Здесь возможна только байтная адресация.
Указатель данных DPTR (адреса 082h, 83h). Состоит из двух байт: старшего DPH и младшего DPL. Используя как 16 или 8-битовый указатель адреса при обращении к внешней памяти или выполнения команды перехода по косвенному адресу. Обращениетолько байтное, отдельно к старшему и младшему байту.
Порты P0-P3 (адреса 80h, 90h, 0A0h, 0B0h). Этим адресам соответствуют регистры-защелки четырех 8-битных портов ввода-вывода микроконтроллера P0, P1, P2 и P3.
Буфер последовательного порта SBUF (адрес 99h). SBUF представляет собой два отдельных регистра«буфер приемника»при чтении из порта и «буфер передатчик»при записи в порт. Доступен только для байтной адресации.
Регистр управления последовательным портом SCON(адрес 098h). Предназначен для управления работой последовательного порта. Обращение к данному регистру может быть как побайтным, так и побитным.
Регистры таймера/счетчика TL0, TL1, TH0, TH1 (адреса 8Ah, 8Bh, 8Ch, 8Dh). Образуют 16-битные регистры таймеров/счетчиков 0 и 1. Подробно описаны в разделе «Организация таймеров/счетчиков». Обращение к регистрамтолько байтное.
Регистр режима таймера/счетчика TMOD (адрес 89h).
Регистр управления таймера/счетчика TCON (адрес 88h). Предназначены для управления работой таймера/счетчика МК.
Регистр разрешения прерываний IE (адрес 0A8h).
Регистр приоритетов прерываний IP (адрес 0B8h). Определяют работу системы прерываний микроконтроллера. Возможно как побитное, так и побайтное обращение к регистрам.
Регистр управления энергопотреблением PCON (адрес 87h). Содержит бит управления скоростью работы последовательного канала и биты, управляющие энергопотреблением в CHMOS-кристаллах (I8051 и т.п.).
Таблица 4
Регистры специальных функций при побитной адресации
|
Мнемоника регистра / битовые адреса |
| ||||||||
Адрес |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Имя SFR | |
F0h |
— F7h |
— F6h |
— F5h |
— F4h |
— F3h |
— F2h |
— F1h |
— F0h |
B | |
E0h |
— E7h |
— E6h |
— E5h |
— E4h |
— E3h |
— E2h |
— E1h |
— E0h |
A | |
D0h |
CV D7h |
AC D6h |
F0 D5h |
RS1 D4h |
RS0 D3h |
OV D2h |
— D1h |
P D0h |
PSW | |
B8h |
— — |
— — |
PT2 BDh |
PS BCh |
PT1 BBh |
PX1 BAh |
PT0 B9h |
PX0 B8h |
IP | |
B0h |
— B7h |
— B6h |
— B5h |
— B4h |
— B3h |
— B2h |
— B1h |
— B0h |
P3 | |
A8h |
EA AFh |
— — |
ET2 ADh |
ES ACh |
ET1 ABh |
EX1 AAh |
ET0 A9h |
EX0 A8h |
IE | |
A0h |
— A7h |
— A6h |
— A5h |
— A4 |
— A3h |
— A2h |
— A1h |
— A0h |
P2 | |
98h |
SM0 9Fh |
SM1 9Eh |
SM2 9Dh |
REN 9Ch |
TB8 9Bh |
RB8 9Ah |
TI 99h |
RI 98h |
SCON | |
90h |
— 97h |
— 96h |
— 95h |
— 94h |
— 93h |
— 92h |
— 91h |
— 90h |
P1 | |
88h |
TF1 8Fh |
TR1 8Eh |
TF0 8Dh |
TR0 8Ch |
IE1 8Bh |
IT1 8Ah |
IE0 89h |
IT0 88h |
TCON | |
80h |
— 87h |
— 86h |
— 85h |
— 84h |
— 83h |
— 82h |
— 81h |
— 80h |
P0 |