Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств

208 Микроконтроллеры AVR от азов программирования... это просто смещение относительно текущего адреса. Выполняя команду rcall, микроконтроллер запоминает в стеке текущий адрес программы из счетчика команд и переходит по адресу, определяемому смещением. Такой же принцип задания адреса для перехода мы уже встречали в команде г jmp. В строке 20 программы (листинг 5.5) производится вызов подпрограммы задержки по адресу, соответствующему метке wait. ret _________________________________________________________ Команда выхода из подпрограммы. По этой команде микрокон ­ троллер извлекает из стека адрес, записанный туда при выполнении команды rcall, и осуществляет передачу управления по этому адресу. В листинге 5.5 команду ret мы можем видеть в конце подпрограммы wait (см. строку 37). push _________________________________________________________ Запись содержимого регистра общего назначения в стек. У данного оператора всего один операнд — имя регистра, содержимое которого нужно поместить в стек. В строке 32 программы (листинг 5.5) в стек помещается содержимое регистра с именем loop. pop _________________________________________________________ Извлечение информации из стека. У этого оператора тоже всего один операнд — имя регистра, в который помещается информация, извлекае ­ мая из стека. В строке 36 программы (листинг 5.5) информация извлека ­ ется из стека и помещается в регистр loop. dec _________________________________________________________ Уменьшение содержимого РОН. У команды один параметр — имя регистра. Команда dec (декремент) уменьшает на единицу содержимое регистра, имя которого является ее параметром. В строке 34 программы (листинг 5.5) уменьшается на единицу содержимое регистра loop. brne ______________________________________ __________________ Оператор условного перехода (переход по условию). У этого оператора всего один параметр — относительный адрес перехода. Условие пере ­ хода звучит как «не равно». Попробуем разобраться, как проверяется это условие. И тут нам придется вспомнить о регистре состояния микрокон ­ троллера (SREG). Как уже говорилось ранее, каждый бит этого регистра представляет собой флаг. Все флаги регистра предназначены для управления работой микроконтроллера. Кроме уже известного нам флага I (глобальное разре ­

RkJQdWJsaXNoZXIy MTExODQxMg==