МИКРОКОНТРОЛЛЕР AVR - Страница 83

МИКРОКОНТРОЛЛЕР AVR - МИКРОКОНТРОЛЛЕР AVR

Команды относительного перехода «rjmp» и вызова подпрограммы «rcall» (команды 36.42 и 36.43) являются основными для изменения последовательности выполнения команд в микроконтроллерах AVR. При этом содержимое программного счетчика изменяется на величину смещения, которое задается в 12 младших битах кода команды (рис. 36.2).

Рис. 36.2. Изменение содержимого программного счетчика в AVR при выполнении команд «rjmp» и «rcall»

При таком способе изменения содержимого программного счетчика в случае вызова подпрограммы с помощью команды «rcall» его старое содержимое записывается в стек до того, как в него поступит новый адрес. Это позволяет микроконтроллеру AVR вернуться обратно к месту, где произошел вызов подпрограммы, независимо от текущего состояния выполнения программы. Смещение может производиться в пределах +/-2 К адресов в пространстве памяти программ, что означает, что команды относительных переходов позволяют обратиться к любой позиции памяти программ младших моделей AVR серии 1200. Благодаря этой возможности, описанные далее команды прямых переходов «jmp» и «са11» не требуются для микроконтроллеров серии AVR 1200.

Важной особенностью, о которой я не упоминал ранее, является адресация и организация памяти программ в микроконтроллерах AVR. Когда фирма Atmel указывает объем памяти программ своих контроллеров, то, как правило, приводятся цифры в байтах. Каждая команда занимает два или четыре байта, так что количество хранящихся команд может быть равно половине (или меньше, если используется большое количество 4-байтовых команд) от заявленного объема памяти программ.

Go to Top