Главная страница
Навигация по странице:

  • ОБСЛУЖИВАНИЕ ПОДСИСТЕМЫ ПРЕРЫВАНИЙ Л.Р. №1

  • Выполнение работы

  • МИКРОКОНТРОЛЛЕР ATMEGA128. лаба 1. Юргпу (нпи)


    Скачать 348.35 Kb.
    НазваниеЮргпу (нпи)
    АнкорМИКРОКОНТРОЛЛЕР ATMEGA128
    Дата13.12.2021
    Размер348.35 Kb.
    Формат файлаdocx
    Имя файлалаба 1.docx
    ТипДокументы
    #302478

    ЮРГПУ (НПИ)

    Кафедра ЭЭА

    МИКРОКОНТРОЛЛЕР ATMEGA128: РЕАЛИЗАЦИЯ И

    ОБСЛУЖИВАНИЕ ПОДСИСТЕМЫ ПРЕРЫВАНИЙ

    Л.Р. №1

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

    Порядок выполнения работы

    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 – Симуляция проекта


    Выполнил

    Проверил

    Дата

    Якшин К.А.

    Гуммель А.А.





    написать администратору сайта