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