Контрольная работа: Программирование микроконтроллера
Название: Программирование микроконтроллера Раздел: Рефераты по информатике, программированию Тип: контрольная работа | ||||||||||||||||||||||||||||||||||||||||||||||
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ВОЗДУШНОГО ТРАНСПОРТА ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ» Кафедра радиотехнических устройств Контрольная работа по дисциплине «Микропроцессорные устройства РЭО» студента 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 (младший разряд): OUTSPL, Rr ; · для записи в регистр SPH (старший разряд): OUTSPH, Rr , где r – номер регистра, из которого пересылаются данные в стек (r=0…31). · Для непосредственной записи операндов в РОНы используем команду LDIRd, k , где в – номер регистра, в который записывается операнд (d=16…31); k – операнд. · Для пересылки данных из ОЗУ в РОНы используем команду косвенной адресации LD Rr, X ; LD Rr, Y ; LDRr, Z , где X, Y, Z – 16-ти разрядные регистры для хранения адреса ячейки ОЗУ, из которой пересылаются данные. Каждый из этих регистров имеет в своем составе два РОНа. Структура регистров представлена в таблице 3. Таблица 3
· Перед использованием команды LD адрес ячейки ОЗУ должен быть предварительно записан в соответствующий регистр, который используется в команде. · Для прямой адресации данных из РОНов в ОЗУ используем команду STSn, Rr , где n – адрес ячейки ОЗУ. · Для косвенной адресации данных из РОНов в ОЗУ используем команду ST X, Rr ; ST Y, Rr ; STZ, Rr . · Адрес ячейки ОЗУ должен быть предварительно записан в один из регистров X, Y, или Z. · Для выполнения операции сложения используем команду ADDRa, Rb , где a, b – номера регистров, где хранятся операнды (a=0…31, b=0…31). Результат будет записан в регистр Ra. · Для уменьшения содержимого регистра на единицу используем команду DECRr . · Для выполнения требуемой в задании операции сравнения используем команду CPSERa, Rb . · Команда сравнивает содержимое регистров Ra, Rb, и в случае равенства пропускает следующую команду. · Для вызова подпрограммы используем команду CALL . · Для выхода из подпрограммы и возврата в программу используем команду RET . · В подпрограмме для сохранения содержимого регистра Rr в стеке используем команду PUSHRr . · Для извлечения из стека в регистр Rr используем команду POPRr. · При этом учитываем то, что данные должны извлекаться из стека в порядке, обратном загрузке – «последний вошел – первый вышел». · Для «зацикливания» программы используем команду RJMP. Текст программы. Инициализация указателя стека: Адрес стека 10F1, для его задания в регистр SPL помещаем младший байт ; F6, в регистр SPH – старший 10. · LDIR20, $F1 ; загрузка регистра R20 младшим байтом адреса начала стека · OUTSPL, R20 ; загрузка младшего байта указателя стека из регистра · LDIR20, $10 ; загрузка регистра R20 старшим байтом адреса начала стека · OUTSPH, R20 ; загрузка старшего байта указателя стека из регистра Выполнение сложения чисел 17, 5 и 67: · LDIR17, $17 ; загрузка регистра R16 числом 17 · LDIR18, $5 ; загрузка регистра R17 числом 5 · LDIR19, $67 ; загрузка регистра R18 числом 67 · ADDR17, R18; суммирование содержимого регистров R17, R18 · ADDR17, R19 ; суммирование содержимого регистров R17, R19 · DECR17 ; уменьшение на единицу содержимого регистра R17 · LDIR30, $41 ; · LDIR31, $00 ; · STZ , R17 ; загрузка ячейки ОЗУс адресом 0075 значением из регистра R17 Загрузка ячеек ОЗУ 0043 и 0044 числами 76 и 65 соответственно: · LDIR20, $76 ; загрузка регистра R19 числом 76 · LDIR21, $65 ; загрузка регистра R20 числом 65 Загрузка в регистровую пару X адреса ячейки ОЗУ 0043: · LDIR26, $43 · LDIR27, $00 Загрузка в регистровую пару Y адреса ячейки ОЗУ 0044: · LDIR28, $44 · LDIR29, $00 · STX, R20 ; загрузка ячейки ОЗУ с адресом 0043 значением из регистра R20 · STY, R21 ; загрузка ячейки ОЗУ с адресом 0064 значением из регистра R21 · LDIR16, $12 ; загрузка регистра R16 числом 12 · CALLROUT ; вызов подпрограммы ROUT Зацикливание программы: · LOOP: · RJMPLOOP ПОДПРОГРАММА: · ROUT: Сохранение указателя X в стеке: · PUSHR26 · PUSHR27 Cохранение указателя Y в стеке: · PUSHR28 · PUSHR29 · LDSR16, $0045 ; загрузка регистра R16 содержимым ячейки ОЗУ с адресом 0045 · LDSR17, $0043 ; загрузка регистра R17 содержимым ячейки ОЗУ с адресом 0043 Загрузка в регистровую пару X адреса ячейки ОЗУ 0065: · CPSER16, R17 ; пропустить следующую команду, если значения регистров R16 и R17 равны · INCR16 ; увеличить содержимое регистра R16 на единицу Извлечение сохраненных данных из стека и замена содержимого указательных регистров: Извлечение сохраненного содержимого Y в X: · POPR27 · POPR26 Извлечение сохраненного содержимого X в Y: · POPR29 · POPR28 · RET ; возврат из подпрограммы. Литература 1. Яманов Д.Н., Жаворонков С.С. Микропроцессорные устройства РЭО. Пособие по изучению дисциплины и выполнению контрольных работ. – М.: МГТУ ГА, 2008. – 24 с. 2. Калабеков Б.А. Микропроцессоры и их применение в системах передачи и обработки сигналов: Учебное пособие для вузов. – М.: Радио и связь, 1988. – 368 с. |