В регистры портов записывать непосредственное значение нельзя, можно только командой out переносить информацию из какого-нибудь рабочего регистра. Поэтому добавится третья команда — сначала мы установим нужные биты в некоем рабочем регистре, специально выбранном для этих целей из числа регистров общего назначения (РОН), затем загрузим весь полученный байт в регистр порта. Причем установить непосредственное значение можно также не в любом из РОН, а только в регистрах с номерами с 16 по 31, поэтому выберем себе регистр r16 в качестве рабочего. Тогда последовательность команд будет выглядеть так:
ldi r16, 0Ь0Н00000
; устанавливаем биты номер 5 и 6 в регистреout DDRD,r16
; выводим это значение в регистр направления портаsbi PortD,6
; устанавливаем в единицу бит 6 регистра данных портаЗдесь ldi
— команда загрузки непосредственного значенияЗаметим, что способ установки значений РВВ через команду out
— не единственный, можно было бы установить биты 5 и 6 регистра DDRD двумя командами sbi (есть и другие способы).* * *
Подробности
Обратите внимание на синтаксис команд — сначала пишется, куда писать, а потом, через запятую, откуда или что. Это справедливо для всех команд и для всех ассемблеров. Каждая команда пишется в отдельной строке. Весь текст после точки с запятой ассемблером игнорируется и представляет собой комментарии, которые нужно писать обязательно, иначе вы через пару месяцев и сами в своей программе не разберетесь. Если комментарий переходит на другую строку, то точку с запятой нужно ставить заново, в начале строки. В отличие от знака перевода строки, все пробелы и табуляции игнорируются (а там, где есть другой разделительный знак, в данном случае запятая, как видите, пробелов вообще может не быть), так что украшать текст отступами можно, а для удобства чтения и нужно. Строчные и прописные буквы не различаются: записи LDI
, Ldi и ldi означают одно и то же — и это отличие AVR-ассемблера от программных сред, основанных на C/C++. Вопреки распространяемым в Интернете сведениям (заимствованным из [22]), это правило соблюдается и для обновленных версий компилятора Avrasm2.* * *
Ну, а теперь все? Можно скопировать это в Блокнот, сохранить с расширением