2-Лабораторная_Основы микропроцессорной техники / lab2 / LR2
.docМинистерство образования Российской Федерации
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
ЛабОраторная работа № 2 по Основе микропроцессорной технике.
Отладка прикладных программ для микроконтроллера МК48
Выполнил студент : вариант:9.
Проверил преподаватель
____________ ________
Цель работы: приобретение навыков отладки прикладных программ для однокристальных микроконтроллеров семейства МК48 и приобретение навыков отладки простейших программ с помощью ассемблера, линковщика и эмулятора.
Ход работы:
-
Скомпилировал и отлинковал программу TES.asm.
-
В эмуляторе ппроследил работу программы TES, реализующей 8-канальный распределитель уровня логической 1 по линиям порта Р1, сначала в пошаговом режиме, а затем в автоматическом режиме с различной скоростью. Содержимое А заполняется бегущей единицей влево. Содержимое Р1 аналогично А. Содержимое R1 претерпевает декремент от 0 до 0.
-
Модифицировал программу TES в режиме дизассемблирования: вместо команды NOP вставил команду INC A. Содержимое А заполняется 1 справа на лево. Программа TES1.
-
Используя режим Patch Code, вместо RL A поместил команду RR A. Команду NOP вернул на прежнее место. При выполнении циклицеских сдвигов в аккумуляторе состояние триггера переноса С не меняется.
-
В режиме Patch Code записал программу временной задержки
MOV R0,#0
DJNZ R0,$
-
Скомпилировал и отлинковал программу PROG.asm. Проследил её работу в эмуляторе в пошаговом и автоматическом режимах. При наличии прерывания управление передаётся по адресу 0Dh. При этом указатель стека уменьшается, а в стеке сохраняется адрес команда следующей за командой вызвавшей прерывание. При переполнении таймера-счётчика флаг таймера устанавливается в 1.
-
Скомпилировал и отлинковал программу СОМР.asm, формирующей в аккумуляторе двоично-десятичный код числа датчиков, информация с которых превышает пороговое значение, находящееся в аккумуляторе. Проследил её работу в эмуляторе.
-
Составил программу индивидуального задания ZAD1.asm, которая заполняет все чётные элементы РПД логическими нулями, а нечётные - еденицами. Скомпилировал и отлинковал программу. Проследил её работу в эмуляторе.
Ответы на вопросы:
-
Для вызова подпрограммы, находящейся в первом банке памяти программ, расположенной в нулевом банке, необходимо перед вызовом подпрограммы выполнить команду SEL MB1, а в подпрограмме последним должен быть код: SEL MB0
RET.
-
Для условного перехода из первой страницы программной памяти в третью необходимо чтобы команда перехода по условию указывала на команду JMP 03XXH, где ХХ-8ми разрядный адрес продолжения программы в третьей странице, т.к команда JMP позволяет передать управление в переделах банка памяти.
-
При системном сбросе микроконтроллера РС SP F0 F1 устанавливаются в нулевое состояние, выбирается RB0 MB0, запрещается прерывание, выдача тактовых импульсов на вывод Т0, останавливается таймер счетчик, подготавливаются порты Р0 Р1 для приема.
-
Для определения времени выполнения программы необходимо подсчитать число отсчётов таймера за время выполнения программы. В начале программы STRT T, в конце STOP TCNT. Это число связано со временем через тактовую частоту микроконтроллера.