Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы по МП от Нефёдова.doc
Скачиваний:
185
Добавлен:
19.03.2015
Размер:
4.26 Mб
Скачать

Из табл.1.1 и табл.1.2 видно, что команды пересылки данных и команды переходов значения флагов регистра sreg не изменяют.

ВЫПОЛНЕНИЕ ОСНОВНОГО ЗАДАНИЯ

1. Изучить описание структуры микроконтроллера ATmega128 и интегрированной системы его программирования на языке Ассемблер AVRStudio.

2. Изучить реализуемые микроконтроллером способы адресации и команды пересылки данных.

3. Запустить на персональном компьютере интегрированную систему программирования AVRStudio. Командой ProjectNew Project создать новый проект Lesson1. С использованием редактора текста создать демонстрационную программу:

.device ATmega128

.include "m128def.inc"

;***** Инициализация указателя стека ********************************

ldi R20, $FF ; загрузка промежуточного регистра R20 младшим

; байтом адреса начала стека

out SPL, R20 ; загрузка младшего байта указателя стека

ldi R20, $10 ; загрузка промежуточного регистра R20 старшим

; байтом адреса начала стека

out SPH, R20 ; загрузка старшего байта указатель стека

;***** Выполнение команд пересылок ********************************

ldi R20, $57 ; загрузка регистра R20 константой

ldi R30, $00 ; загрузка регистровой пары Z (R30,R31) адресом $0100

ldi R31, $01 ; по которому расположена первая ячейка внутреннего ОЗУ

st Z, R20 ; загрузка косвенно адресуемой ячейки ОЗУ с адресом $0100

; значением из регистра R20 ($57)

lds R19, $0100 ; загрузка регистра R19 из ячейки ОЗУ с адресом $0100

sts $0101, R19 ; загрузка ячейки с адресом $0101 из регистра R19

call Rout ; вызов подпрограммы Rout

loop:

rjmp loop ; зацикливание программы

;***** Подпрограмма копирования значения из памяти программ ***************

Rout:

push R30 ; сохранение указателя Z в стеке

push R31 ;

ldi R20, $00 ; загрузка регистра R20 новой константой

ldi R30, $80 ; загрузка регистровой пары Z удвоенным адресом ячейки

ldi R31, $00 ; памяти программ

lpm ; загрузка регистра R0 значением ячейки памяти программ

; с адресом $0040

cpse R0, R20 ; пропустить следующую команду если значения регистров

; R0 и R20 равно

sts $0102, R0 ; загрузка ячейки ОЗУ с адресом $0102 из регистра R0

pop R31 ; извлечение указателя Z из стека

pop R30 ;

ret ; возврат из подпрограммы

;**************************************************************************

4. Выполнить команду Project/Buildдля компиляции проекта.

5. С помощью команды Debug/StartDebugging запустить симулятор. Командой View/Memory открыть окно с ячейками памяти программ. Прямым редактированием занести любой код в ячейку $40 памяти программ.

6. Выполнить программу по шагам, выполняя команду Debug/StepIntro(F11). После выполнения текущей команды курсор в окне редактора текста указывает на следующую команду.

7. Проверить правильность пересылки данных.

8. Составить программу выполнения заданной преподавателем последовательности операций передачи данных, провести пошаговый прогон программы, продемонстрировать полученный результат.

Работа №2 микроконтроллер aTmega128: команды обработки данных

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