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

180 Микроконтроллеры AVR от азов программирования... Как можно видеть из листинга 5.1, оператор ldi имеет два параметра: ♦ первый параметр — это имя РОН, куда помещается наша константа; ♦ второй параметр — значение этой константы. Обратите внимание, что в команде сначала записывается приемник информации, затем ее источник. Такой же порядок вы увидите в любой другой команде, имеющей два операнда. Это общее правило для языка Ассемблер. out _________________________________________________________ Вывод содержимого РОН в регистр ввода-вывода. Команда также имеет два параметра: ♦ первый параметр — имя РВВ, являющегося приемником информации; ♦ второй параметр — имя РОН, являющегося источником. В строке 7 программы содержимое регистра temp выводится в РВВ с именем SPL. in _________________________________________________________ Ввод информации из регистра ввода-вывода. Имеет два параметра. Параметры те же, что и в предыдущем случае, но источник и приемник меняются местами. В строке 19 программы содержимое регистра PORTD помещается в регистр temp. rjmp _________________________________________________________ Команда безусловного перехода. Команда имеет всего один параметр — адрес перехода. В строке 18 программы оператор безусловного перехода передает управление на строку, помеченную меткой main. То есть на строку 16. Данная строка демонстрирует использование метки. На самом деле в качестве параметра оператора rjmp должен высту ­ пать так называемый относительный адрес перехода. То есть число байт, на которое нужно сместиться вверх или вниз от текущего адреса. Направление смещения (вверх или вниз) — это знак числа. Он определя ­ ется старшим битом. Язык Ассемблера избавляет программиста от необ ­ ходимости подсчета величины смещения. Достаточно в нужной строке программы поставить метку, а в качестве адреса перехода указать ее имя, и транслятор сам вычислит значение этого параметра. При использовании команды rjmp существует одно ограничение. Соответствующая команда микроконтроллера кодируется при помощи одного шестнадцатиразрядного слова. Для указания величины смеще ­ ния она использует всего двенадцать разрядов. Поэтому такая команда может вызвать переход в пределах ±2 Кбайт. Если вы расположите метку слишком далеко от оператора rjmp, то при трансляции программы это вызовет сообщение об ошибке.

RkJQdWJsaXNoZXIy MTExODQxMg==