
- •Лабораторная работа
- •1. Общие положения. Организация стековой памяти микроконтроллера мк51.
- •Организация системы прерываний.
- •Регистры системы прерываний.
- •Обслуживание прерываний.
- •2. Задание для домашней подготовки.
- •3. Порядок выполнения работы.
- •4. Задание по лабораторной работе.
- •5. Содержание отчета
- •6. Пример выполнения задания.
Лабораторная работа
Тема: Стек. Обращение к подпрограммам. Система прерывания микроконтроллера МК51.
Цель работы: изучение организации стековой памяти и системы прерываний микроконтроллера MК51.
Оборудование: персональный компьютер
Программное обеспечение: операционная система, программа отладчик для МК51
1. Общие положения. Организация стековой памяти микроконтроллера мк51.
Стековая адресация в МК организована с помощью автоинкрементной/автодекрементной косвенной адресации через 8-разрядный регистр указатель стека SP (адрес 81h в пространстве DSEG). Стек располагается в любом поле DSEG в диапазоне адресов 00h-7Fh. При выполнении операции загрузки в стек (типа PUSH, CALL) содержимое SP сначала инкрементируется, а затем в него загружается операнд. В операциях чтения (выгрузки) из стека (типа POP, RET) сначала читается содержимое стека, а затем SP декрементируется.
Команды работы со стеком приведены в таблице 1.
Таблица 1. Команды работы со стеком.
Мнемоника |
Код операции |
Байт |
Циклов |
Операция |
PUSH ad |
11000000 |
2 |
2 |
(SP) (SP) + 1, ((SP)) (ad) |
POP ad |
11010000 |
2 |
2 |
(ad) (SP), (SP) (SP) – 1 |
LCALL adl6 |
00010010 |
3 |
2 |
(PC) (PC) + 3, (SP) (SP) +1, ((SP)) (PCL), (SP) (SP) + 1, ((SP)) (PCH), (PC) ad16 |
ACALL ad11 |
a10a9a810001 |
2 |
2 |
(PC) (PC) + 2, (SP) (SP) + 1, ((SP)) (PCL), (SP) (SP) + 1, ((SP)) (PCH), (PC0-10) ad11 |
RET |
00100010 |
1 |
2 |
(PCH) ((SP)), (SP) (SP) – 1, (PCL) ((SP)), (SP) (SP) – 1 |
RETI |
00110010 |
1 |
2 |
(PCH) ((SP)), (SP) (SP) – 1, (PCL) ((SP)), (SP) (SP) – 1 |
При инициализации МК по сигналу RST «сброс» в указатель стека автоматически загружается код 07h, то есть первый элемент стека будет загружаться в ячейку 08h (регистр R0 первого банка регистров). Пользователь имеет возможность переопределить содержимое SP, изменив необходимым образом расположение стека в DSEG. Переполнение стека аппаратно не фиксируется, что должно учитываться в программе пользователя.
При обращении к подпрограмме (и обработке прерываний) по командам типа CALL в стек загружается только адрес возврата. Информация о состоянии МК аппаратно не сохраняется. При необходимости это делает прикладная программа.
Организация системы прерываний.
Микроконтроллер поддерживает двухуровневую приоритетную систему прерываний с пятью источниками запросов.
Имеется
два внешних запроса на прерывания –
линии
,
(разряды 2-й и 3-й третьего порта
ввода/вывода, Р3.2 и Р3.3 соответственно).
Источниками внутренних запросов могут служить:
- счетчик/таймер 0
- счетчик/таймер 1
- порт последовательного ввода/вывода
Архитектура системы прерывания МК иллюстрируется рисунком 1.