Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AVR / 1_Uniproff / Лабораторный практикум 2.doc
Скачиваний:
44
Добавлен:
20.03.2015
Размер:
395.78 Кб
Скачать

Лабораторная работа № 1

Запись и выполнение простых программ

Цель работы:исследование выполнения отдельных команд и простых программ; использование различных методов адресации в программах; написание программ.

Краткие сведения из теории

Процессор микроконтроллера (МК) ATtiny26(L) имеет фиксированный набор из 118 команд. Время выполнения команды определяется процессом получения, декодирования и выполнения команды. Это время принято представлять рядом временных интервалов. Наиболее короткий временной интервал, равный периоду синхросигналов МК, называется машинным тактом. Время, необходимое для извлечения 1 байта из памяти или внешнего устройства, или выполнение команды, определяемой одним машинным словом, называется машинным циклом. Машинный цикл может включать в себя 3-5 машинных тактов. В зависимости от вида команды время выполнения может занимать от 1 до 5 машинных циклов. В общем случае, для микропроцессоров принято различать 10 различных видов циклов:

  • извлечение кода команды;

  • чтение данных из памяти;

  • запись данных в память;

  • извлечение данных из стека;

  • запись данных в стек;

  • ввод данных из внешнего устройства;

  • вывод данных на внешнее устройство;

  • цикл обслуживания прерывания;

  • останов (режим SLEEP)

  • обслуживание прерывания в режиме останова.

Программа записывается в память МК в последовательных ячейках памяти. Рассмотрим простейшую программу (П-1.1), извлекающую число из памяти по адресу A0, инвертирующую его и записывающую результат в память по адресу A1.

П-1.1 (в мнемокодах)

Мнемокод

Комментарий

lds r0, $A0

com r0

sts $A1,r0

ret

Получить число из адреса A0 в регистр R0

Инвертировать число

Записать результат по адресу A1

Выход из подпрограммы

При записи программ принято все числа представлять в шестнадцатеричной системе счисления. Для записи программы в память МК необходимо перевести мнемокод в машинный код (откомпилировать программу)

П-1.1 (размещение по адресам памяти машинного кода)

Адрес

Число

Комментарий

0000

9000

Код команды LDS, с указанием регистра

0001

00A0

Адрес (операнд команды LDS)

0002

9400

Код команды COM, с указанием регистра

0003

9200

Код команды STS, с указанием регистра

0004

00A1

Адрес (операнд команды STS)

0005

9508

Код команды RET

Предварительную запись программ удобно проводить в более компактной форме:

П-1.1 (общее представление записи)

Адрес

Маш. код

Метка

Мнемокод

Комментарий

0000

9000 00A0

LDS R0,0x00A0

Получить число из адреса A0 в регистр R0

0002

9400

COM R0

Инвертировать число

0003

9200 00A1

STS 0x00A1,R0

Записать результат по адресу A1

0005

9508

RET

Выход из подпрограммы

Это позволяет сократить объем при описании программ и сделать более простым их анализ. В данном примере используется прямая адресация. Рассмотрим аналогичную программу с косвенной адресацией:

П-1.2

Адрес

Маш. код

Метка

Мнемокод

Комментарий

0000

EAA0

LDI R26,0xA0

Установить младший байт адреса для пары X

0001

27BB

CLR R27

Очистить старший байт адреса пары X

0002

900D

LD R0,X+

Получить значение по адресу, записанному в X, увеличить X на единицу (00A0  00A1)

0003

9400

COM R0

Инвертировать число

0004

920C

ST X,R0

Записать результат по адресу в X

0005

9508

RET

Выход из подпрограммы

Соседние файлы в папке 1_Uniproff