МИКРОКОНТРОЛЛЕР ATMEGA128. лаба 1. Юргпу (нпи)
Скачать 348.35 Kb.
|
Цель работы: знакомство с интегрированной средой программирования; изучение методов адресации, команд передачи данных и управления. Порядок выполнения работы 1. Изучить описание структуры микроконтроллера ATmega128 и интегрированной системы его программирования на языке Ассемблер AVRStudio. 2. Изучить реализуемые микроконтроллером способы адресации и команды пересылки данных. 3. Запустить на персональном компьютере интегрированную систему программирования AVRStudio. Пример: .deviceATmega128 .include "m128def.inc" ;*************Инициализация указателя стека *************** ldiR20, $FF ; загрузка промежуточного регистра R20 младшим байтом адреса начала стека OutSPL, R20; загрузка младшего байта указателя стека ldiR20, $10 ; загрузка промежуточного регистра R20 старшим байтом адреса начала стека outSPH, R20; загрузка старшего байта указатель стека ;***** Выполнение команд пересылок *********************** ldiR20, $57 ; загрузка регистра R20 константой ldiR30, $00 ; загрузка регистровой пары Z (R30,R31) адресом $0100 по которому ldiR31, $01 ; расположена первая ячейка внутреннего ОЗУ stZ, R20 загрузка косвенно адресуемой ячейки ОЗУ с адресом $0100 значением из регистра R20 ($57) ldsR19, $0100 ; загрузка регистра R19 из ячейки ОЗУ с адресом $0100 sts $0101, R19 ; загрузка ячейки с адресом $0101 из регистра R19 call Rout ; вызов подпрограммы Rout loop: rjmp loop ; зацикливание программы ;*** Подпрограмма копирования значения из памяти программ ** Rout: pushR30 ; сохранение указателя Z в стеке pushR31 ldiR20, $00 ; загрузка регистра R20 новой константой ldiR30, $80 ; загрузка регистровой пары Z удвоенным адресом ячейки ldiR31, $00 ; памяти программ lpm ; загрузка регистра R0 значением ячейки памяти программ с адресом $0040 cpseR0, R20 ; пропустить следующую команду если значения регистров R0 и R20 равно sts $0102, R0 ; загрузка ячейки ОЗУ с адресом $0102 из регистра R0 pop R31 ; извлечение указателя Z из стека popR30 ; ret ; возврат из подпрограммы 4. Выполнить команду Project/Build для компиляции проекта. 5. С помощью команды Debug/StartDebugging запустить симулятор.Командой View/Memoryоткрыть окно с ячейками памяти программ. Прямым редактированием занести любой код в ячейку $40 памяти программ. 6. Выполнить программу по шагам, выполняя команду De-bug/StepIntro(F11) . После выполнения текущей команды курсор в окне редактора текста указывает на следующую команду. 7.Проверить правильность пересылки данных. 8. Составить программу выполнения заданной преподавателем последовательности операций передачи данных, провести пошаговый прогон программы, продемонстрировать полученный результат. Выполнение работы Задание 10. Сложить константы, находящиеся в регистрах R1 и R3. Инвертировать результат и поместить в регистр R6. Блок-схема программы: Листинг отлаженной программы: .device ATmega128 .include "m128def.inc" lds r1, $0100 lds r3, $0110 add r1, r3 com r1 mov r6, r1 nop Компиляция программы показана на рисунке 1. Рисунок 1 – Компиляция проекта Симулятор ATmega128 представлен на рисунке 2. Рисунок 2 – Симуляция проекта
|