Лекция: Device at90sl200

 

Другой важной директивой является директива .include,которая позволяет ассемблеру использовать включаемые файлы. Они выполняют для ассемблера роль словаря. Ассемблер поймет большинство написанных вами выражений, а для остальных ему может потребоваться найти перевод. Например, все имена регистров ввода/вывода и их адреса хранятся во включаемых файлах, поэтому, вместо того чтобы писать адрес $3F, вы можете указать символическое имя регистра SREG.При установке программы ассемблера на компьютер включаемые файлы для различных моделей микроконтроллеров помещаются в определенную папку, но лучше поместить включаемый файл в папку с разрабатываемым проектом. Если предполагается использовать модель 1200, то строка будет иметь вид:

.include "1200def.inc"

Директивы .nolistи .list

Когда ассемблер обрабатывает написанный код, он генерирует файл листинга, который содержит копию программы с комментариями ассемблера. Совсем не нужно, чтобы в файле листинга оказался довольно объемный текст включаемого файла, Для этого достаточно поставить перед директивой .includeдирективу .nolist,которая приказывает ассемблеру прекратить копирование считываемых данных в файл листинга. После строки с директивой .includeпоставьте директиву list, чтобы вновь разрешить ассемблеру вывод данных в файл листинга. и таким образом, строки с директивами .listи .nolistсовершенно не влияют на функционирование программы, но благодаря им можно значительно уменьшить размер файла листинга. После заголовка обычно размещаются различные объявления (declarations). Они являются вашими собственными дополнениями к словарю ассемблера — вы можете присвоить используемым регистрам осмысленные названия. Лучше всегда использовать рабочий регистр, называемый temp,для временного хранения данных, и назначить это имя регистру R16. Имена рабочих регистров задаются с помощью директивы .def,как это показано в шаблоне.

Другим типом объявления, которое может использоваться для присваивания числового значения идентификатору, является директива .equ.Она может использоваться для задания своих имен регистрам ввода/вывода. Например, если мы собираемся подключить семисегментный индикатор к порту В и хотим при обращении к регистру PortBписать DisplayPort. Регистр PortBявляется регистром ввода/вывода с номером 0x18, так что после объявления можно писать в программе DisplayPort и это слово будет интерпретироваться ассемблером как PortB:

.equ DisplayPort = PortB

.equ DisplayPort = 0x18

 

Эта директива полезна также в том случае, если в различных местах программы используется какое-либо число, значение которого будет изменяться в процессе отладки программы. Можно воспользоваться директивой .equдля задания имени этого числа, а в тексте программы просто ссылаться на это имя. Теперь, если потребуется изменить число, достаточно будет изменить его только в строке с директивой .equ,a не в тех местах, где это число используется.

В следующей после объявлений строке располагается первая команда, выполняемая микроконтроллером при включении питания. В этой строке рекомендуется поместить команду перехода к секции, помеченной меткой Init,в которой выполняются все начальные настройки AVR. Для этого используется команда rjmp:

еще рефераты
Еще работы по информатике