
Лабораторная работа № 3 стек. Обращение к подпрограммам. Система прерываний мк intel8051
Цель работы: изучение организации стековой памяти и системы прерываний микроконтроллера Intel8051, а также приобретение навыков программирования с использованием подпрограмм.
1. Оргаhизация стековой адресации
Стековая адресация в МК реализована с помощью автоинкрементной/ автодекрементной косвенной адресации через 8-разрядный регистр указатель стека SР (адрес 81Н в пространстве DSEG). Стек располагается в любом поле DSEG в диапазоне адресов 00h-7Fh. При выполнении операций загрузки в стек (типа PUSH, CALL) содержимое SP сначала инкрементируется, а затем по полученному адресу выполняется загрузка операнда. В операциях чтения (выгрузки) из стека (типа POP, RET) сначала читается содержимое стека, а затем SP декрементируется.
Команды работы со стеком приведены в табл. 1.1.
Таблица 1.1. Команды работы со стеком
МНЕМОНИКА |
КОП |
Б |
Ц |
Операция |
PUSH ad |
11000000 |
2 |
2 |
(SP) := (SP)+1; ((SP)) := (ad) |
POP ad |
1101000 |
2 |
2 |
(ad) := ((SP)); (SP):=(SP)-1 |
LCALL ad16 |
00010010 |
3 |
2 |
(PC):=(PC)+3, (SP):=(SP) + 1 ((SP)):=(PCL), (SP):=(SP)+1 ((SP)):=(PCH), (SP):=ad16 |
ACALL ad11 |
aaa10001 |
3 |
2 |
(PC):=(PC)+2, (SP):=(SP) + 1 ((SP)):=(PCL), (SP):=(SP)+1 ((SP)):=(PCH), (PC[0 -10]):=ad11 |
RET |
00100010 |
1 |
2 |
(PCH):=((SP)), (SP):=(SP) - 1 (PCL):=((SP)), (SP):=(SP) - 1 |
RET I |
00110010 |
1 |
2 |
(PCH):=((SP)), (SP):=(SP) - 1 (PCL):=((SP)), (SP):=(SP) - 1 |
При инициализации МК по сигналу RST “Cброс” в указатель стека автоматически загружается к од 07Н, т.е. первый элемент стека будет загружаться в ячейку 08Н (регистр R0 первого банка регистров). Пользователь имеет возможность переопределить содержимое SP, изменив необходимым образом расположение стека в DSEG. Переполнение стека аппаратно не фиксируется, что должно учитываться в программе пользователя.
При обращении к подпрограмме (и обработке прерываний) по командам типа CALL в стек загружается только адрес возврата. Информация о состоянии МК аппаратно не сохраняется. При необходимости это должна делать прикладная программа.
2. Организация системы прерываний
Микроконтроллер МК51 поддерживает двухуровневую приоритетную систему прерываний с пятью источниками запросов.
Имеется два внешних запроса на прерывания – линии ~INT0, ~INT1 (разряды 2-й и 3‑й третьего порта ввода/вывода: контакты P3.2 и Р3.3 соответственно).
Рисунок 2.1. Архитектура системы прерываний МК51
Источниками внутренних запросов могут служить;
- счетчик / таймер 0
- счетчик / таймер 1 ,
- порт последовательного ввода / вывода.
Архитектура системы прерывания МК приведена на рис. 2.1.