Составители:
19
возврата (адрес команды, следующей за командой вызова подпрограмм)
в стеке, оставляя возможность продолжения выполнения основной про-
граммы с этого места. Команды ACALL и LCALL работают одинако-
вым образом, их отличие заключается только в максимальной длине
перехода. Для возврата в точку вызова служит команда RET или RETI,
при выполнении любой из этих команд в счетчик команд PC из стека
загружается сохраненный ранее при вызове адрес возврата.
При написании подпрограмм обработки прерываний часто исполь-
зуются команды работы со стеком: если в подпрограмме в принципе
могут измениться ключевые данные, с которыми в момент прерывания,
возможно, оперировала основная программа (чаще всего это аккумуля-
тор и регистр PSW), то эти данные обычно сохраняются в стеке в самом
начале подпрограммы, а потом извлекаются из стека обратно в самом ее
конце. Очевидно, что при использовании команд работы со стеком внутри
тела подпрограммы следует быть внимательным, – нужно строить про-
грамму так, чтобы к моменту выполнения команд RET или RETI указа-
тель стека при любых коллизиях, которые могут возникать при выпол-
нении подпрограммы, указывал на адрес возврата. Общее правило для
корректного возврата из подпрограммы таково: количество команд PUSH
и POP, выполненных внутри подпрограммы до команды возврата, дол-
жно быть строго одинаковым.
Команды операций с битами. Эти команды предназначены для про-
ведения операций над отдельными битами регистров микроконтролле-
ра: сброс или установку бита, логические операции с битами, пересыл-
ка бита в перенос и обратно. Операции над отдельными битами воз-
можны не для всех ячеек внутреннего ОЗУ (см. Прил. 1).
Команды операций с битами наиболее часто используются для уп-
равления флагами регистра состояния процессора (PSW). Управление
битом переноса C играет важную роль при реализации на базе микро-
контроллера эквивалентов цифровых схем, построенных по структуре
вида «регистр сдвига с обратной связью» (таких как, например, генера-
торы псевдослучайных чисел, распределители).
Пример
(76) CLR C обнуляет бит переноса.
Команды арифметических операций. В микроконтроллерах семей-
ства MCS-51 предусмотрен полный набор элементарных арифметичес-
ких действий над данными: сложение (как с учетом бита переноса, так
Страницы
- « первая
- ‹ предыдущая
- …
- 17
- 18
- 19
- 20
- 21
- …
- следующая ›
- последняя »