Конспект лекций по курсам "Проектирование центральных и периферийных устройств ЭВС", "Микропроцессоры и ЭВМ в микросистемах". Лукьяненко Е.Б. - 48 стр.

UptoLike

Составители: 

Главная
команды,
.
запускающие
RCALL MOTOR
.
.
.
Подпрограмма
программа
.
.
.
.
RCALL MOTOR
MOTOR
двигатель
.
RET
Рис. 37
Выполнение подпрограммы заключается в следующем. В счетчике команд
(Program Counter PC) хранится адресм следующей выполняемой команды. При
выполнении последовательных команд содержимое счетчика увеличивается на 1
и он указывает на следующую команду прграммы. При вызове подпрограммы со-
держимое счетчика команд помещается на вершину стека (область памяти, в кото-
рой хранится адрес возврата из подпрограммы). Загрузка в стек происходит с кон-
ца области стека в порядке уменьшения адресов.
Когда выполняется команда возврата из подпрограммы, число, находящееся
на вершине стека, загружается обратно в счетчик команд, и микроконтроллер воз-
вращается к выполнению программы, следующей за командой вызова подпро-
граммы.
В основной программе необходимо указать, в каком месте ОЗУ следует поме-
стить стек. В качестве вершины стека указывается адрес верхней границы ОЗУ.
Для работы со стеком предусмотрены два регистра ввода/вывода SPL и SPH,
которые являются регистрами указателя стека (stack pointer). SPL – младший байт
(lou), SPH – старший байт (hight).
Адрес верхней границы ОЗУ для заданного типа микроконтроллера хранится в
константе RAMEND, определенной во включаемом файле. Для модели AT-
tiny2313 размер константы равен 1 байт, поэтому используется только две ко-
манды:
Ldi tmp,LOW(RAMEND)
Out SPL,tmp
Для микроконтроллеров, имеющий больший объем памяти, необходимо ис-
пользовать еще две строчки:
Ldi tmp,high(RAMEND)
Out SPH,tmp
Эти команды записываются в секции Reset до первого вызова подпрограммы.
2.16. Формирование временных интервалов
с помощью таймера/счетчика
48