|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Программирование микроконтроллераПрограммирование микроконтроллераФЕДЕРАЛЬНОЕ АГЕНТСТВО ВОЗДУШНОГО ТРАНСПОРТА ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ» Кафедра радиотехнических устройств Контрольная работа по дисциплине «Микропроцессорные устройства РЭО» студента 4 курса заочного факультета Храпова Владимира Алексеевича Специальность 160905 Шифр: РС-071511 Адрес: Ростовская область, Чертковский район, пгт Чертково Москва 2010 Исходные данные. Таблица 1.
Таблица 2.
Задание на контрольную работу · Сложить два числа 17, 5 и 67 (без учета единица переноса), результат уменьшить на единицу и записать в ячейку ОЗУ 0041. · Загрузить ячейки ОЗУ 0043 и 0044 числами 76 и 65 соответственно, используя косвенную адресацию (регистровые пары Y и Z). · Записать в регистр R16 число 12. · Осуществить вызов подпрограммы, в которой требуется: ѕ сохранить указатели Y, Z и содержимое регистра R16 в стеке. Начальный адрес стека 10F1; ѕ записать в регистр R16 содержимое ячейки ОЗУ 0045 и сравнить с содержимым ячейки ОЗУ 0043, в случае неравенства прибавить к содержимому регистра R16 на единицу; ѕ извлечь сохраненные данные из стека, поменяв содержимое указательных регистров X и Y местами. · При пересылке данных из ОЗУ в РОНы использовать прямую адресацию, при пересылке данных из РОНов в ОЗУ использовать косвенную адресацию (если вид адресации не указан в задании явно). · Все числа и адреса - шестнадцатеричные. · Выбор команд для программы. В начале программы необходимо задать адрес стека, где будут сохранены необходимые данные при вызове подпрограммы. Указатель стека реализован в виде двух регистров ввода-вывода, для записи данных в регистры необходимо использовать команду OUT: · для записи в регистр SPL (младший разряд): OUT SPL, Rr ; · для записи в регистр SPH (старший разряд): OUT SPH, Rr , где r - номер регистра, из которого пересылаются данные в стек (r=0…31). · Для непосредственной записи операндов в РОНы используем команду LDI Rd, k , где d - номер регистра, в который записывается операнд (d=16…31); k - операнд. · Для пересылки данных из ОЗУ в РОНы используем команду косвенной адресации LD Rr, X ; LD Rr, Y ; LD Rr, Z , где X, Y, Z - 16-ти разрядные регистры для хранения адреса ячейки ОЗУ, из которой пересылаются данные. Каждый из этих регистров имеет в своем составе два РОНа. Структура регистров представлена в таблице 3. Таблица 3
· Перед использованием команды LD адрес ячейки ОЗУ должен быть предварительно записан в соответствующий регистр, который используется в команде. · Для прямой адресации данных из РОНов в ОЗУ используем команду STS n, Rr , где n - адрес ячейки ОЗУ. · Для косвенной адресации данных из РОНов в ОЗУ используем команду ST X, Rr ; ST Y, Rr ; ST Z, Rr . · Адрес ячейки ОЗУ должен быть предварительно записан в один из регистров X, Y, или Z. · Для выполнения операции сложения используем команду ADD Ra, Rb , где a, b - номера регистров, где хранятся операнды (a=0…31, b=0…31). Результат будет записан в регистр Ra. · Для уменьшения содержимого регистра на единицу используем команду DEC Rr . · Для выполнения требуемой в задании операции сравнения используем команду CPSE Ra, Rb . · Команда сравнивает содержимое регистров Ra, Rb, и в случае равенства пропускает следующую команду. · Для вызова подпрограммы используем команду CALL . · Для выхода из подпрограммы и возврата в программу используем команду RET . · В подпрограмме для сохранения содержимого регистра Rr в стеке используем команду PUSH Rr . · Для извлечения из стека в регистр Rr используем команду POP Rr. · При этом учитываем то, что данные должны извлекаться из стека в порядке, обратном загрузке - «последний вошел - первый вышел». · Для «зацикливания» программы используем команду RJMP. Текст программы. Инициализация указателя стека: Адрес стека 10F1, для его задания в регистр SPL помещаем младший байт ; F6, в регистр SPH - старший 10. · LDI R20, $F1 ; загрузка регистра R20 младшим байтом адреса начала стека · OUT SPL, R20 ; загрузка младшего байта указателя стека из регистра · LDI R20, $10 ; загрузка регистра R20 старшим байтом адреса начала стека · OUT SPH, R20 ; загрузка старшего байта указателя стека из регистра Выполнение сложения чисел 17, 5 и 67: · LDI R17, $17 ; загрузка регистра R16 числом 17 · LDI R18, $5 ; загрузка регистра R17 числом 5 · LDI R19, $67 ; загрузка регистра R18 числом 67 · ADD R17, R18; суммирование содержимого регистров R17, R18 · ADD R17, R19 ; суммирование содержимого регистров R17, R19 · DEC R17 ; уменьшение на единицу содержимого регистра R17 · LDI R30, $41 ; · LDI R31, $00 ; · ST Z , R17 ; загрузка ячейки ОЗУс адресом 0075 значением из регистра R17 Загрузка ячеек ОЗУ 0043 и 0044 числами 76 и 65 соответственно: · LDI R20, $76 ; загрузка регистра R19 числом 76 · LDI R21, $65 ; загрузка регистра R20 числом 65 Загрузка в регистровую пару X адреса ячейки ОЗУ 0043: · LDI R26, $43 · LDI R27, $00 Загрузка в регистровую пару Y адреса ячейки ОЗУ 0044: · LDI R28, $44 · LDI R29, $00 · ST X, R20 ; загрузка ячейки ОЗУ с адресом 0043 значением из регистра R20 · ST Y, R21 ; загрузка ячейки ОЗУ с адресом 0064 значением из регистра R21 · LDI R16, $12 ; загрузка регистра R16 числом 12 · CALL ROUT ; вызов подпрограммы ROUT Зацикливание программы: · LOOP: · RJMP LOOP ПОДПРОГРАММА: · ROUT: Сохранение указателя X в стеке: · PUSH R26 · PUSH R27 Cохранение указателя Y в стеке: · PUSH R28 · PUSH R29 · LDS R16, $0045 ; загрузка регистра R16 содержимым ячейки ОЗУ с адресом 0045 · LDS R17, $0043 ; загрузка регистра R17 содержимым ячейки ОЗУ с адресом 0043 Загрузка в регистровую пару X адреса ячейки ОЗУ 0065: · CPSE R16, R17 ; пропустить следующую команду, если значения регистров R16 и R17 равны · INC R16 ; увеличить содержимое регистра R16 на единицу Извлечение сохраненных данных из стека и замена содержимого указательных регистров: Извлечение сохраненного содержимого Y в X: · POP R27 · POP R26 Извлечение сохраненного содержимого X в Y: · POP R29 · POP R28 · RET ; возврат из подпрограммы. Литература 1. Яманов Д.Н., Жаворонков С.С. Микропроцессорные устройства РЭО. Пособие по изучению дисциплины и выполнению контрольных работ. - М.: МГТУ ГА, 2008. - 24 с. 2. Калабеков Б.А. Микропроцессоры и их применение в системах передачи и обработки сигналов: Учебное пособие для вузов. - М.: Радио и связь, 1988. - 368 с. |
РЕКЛАМА
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |