- •Типы команд
- •Команды микроконтроллера семейства мк51
- •Запись программы на языке ассемблера и ее трансляция
- •Xlink -c8051 tablo -o tablo.Hex
- •Загрузка программы в эмулятор и управление его работой
- •Программа работы
- •Контрольные вопросы
- •Система прерываний мк51
- •Программа работы
- •Контрольные вопросы
- •Содержание отчета
- •Машинные коды команд к51
Запись программы на языке ассемблера и ее трансляция
Запись исходного текста программы осуществляется с помощью любого текстового редактора (например, вход в редактор Shift+F4). Рекомендуется поле метки располагать с нулевой позиции, остальные поля отделять друг от друга клавишей табуляции. Имя программы на языке ассемблера должно иметь расширение .asm. В программе можно использовать директивы (ORG, EQU, DB, DW). Программа должна заканчиваться директивой END.
Ниже приводится пример записи на языке ассемблера текста программы TABLO.ASM:
; Основная программа
MAIN:MOV R0,#20H ; начальный адрес массива в РПД
MOV DPTR,#20H ; адрес таблицы символов в ПП
MOV R7,#32 ; число элементов массива
LCALL TEXT ; вызов подпрограммы TEXT
MOV R0,#20H ; начальный адрес массива в РПД
MOV DPTR,#40H ; адрес таблицы символов в ПП
MOV R7,#32 ; число элементов массива
LCALL TEXT ; очистка экрана
SJMP MAIN ; зацикливание программы
; Подпрограмма заполнения массива ОЗУ
TEXT: CLR A ; очистка аккумулятора
MOVC A,@A+DPTR ; пересылка символа в А
MOV @R0,А ; пересылка символа в РПД
DJNZ R6,$ ; временная задержка
INC R0 ; увеличение указателей памяти
INC DPTR ; на единицу
DJNZ R7,TEXT ; организация цикла обработки
RET ; массива
; Таблица кодов отображаемых символов
ORG 20H
DB ' DEAR FRIEND! WELCOME TO TOMSK'
END
Для трансляции исходной программы с языка мнемокодов в машинные коды команд в данной лабораторной работе используются следующие кросс-средства:
Ассемблер а8051;
Редактор связей xlink.
Ассемблирование производится в диалоговом режиме. Для трансляции программы TABLO.ASM можно вызвать ассемблер командой а8051, следующим образом отвечая на его запросы:
sourse file [.msa/s03]=TABLO.ASM
list file [.lst}=TABLO
object file=<Enter>
options=<Enter>
После ассемблирования в текущей директории будут сформированы файлы TABLO.LST (файл листинга программы) и TABLO.R03 (файл программы в объектном коде).
При наличии синтаксических ошибок ассемблер выдаст строку с ошибкой и кратким комментарием к ней на экран дисплея, а также продублирует эту информацию в листинге программы.
Если ошибок нет, можно вызвать редактор связей:
Xlink -c8051 tablo -o tablo.Hex
Редактор связей сформирует файл TABLO.HEX, который необходим для работы эмулятора.
Загрузка программы в эмулятор и управление его работой
Эмулятор МК51 разработан фирмой AVOSET SISTEMS INC.
Для вызова эмулятора выполнить команду: avsim51 -c1 a
и загрузить в него программу:
Load Avoset
Enter filename: TABLO.HEX
Для пользователя эмулятор представлен в виде отдельных окон: окна для размещения отлаживаемой программы (левое окно) и набора окон для программно доступных ресурсов микроконтроллера.
Эмулятор работает в двух режимах: в командном режиме и в режиме окна. Переключение режимов осуществляется клавишей Esc.
В командном режиме пользователю предлагается меню из набора команд, выбор которых осуществляется с помощью курсора. Вот некоторые из них:
Load – загрузка отлаживаемых файлов в эмулятор (используется подкоманда Avoset);
Patch – позволяет подключать кросс-ассемблер для записи в командной строке мнемокода команды с автоматической ее трансляцией и помещением в окно программы;
Dump – выбор ячейки памяти верхнего (1) или нижнего (2) окна Data Space. Позволяет установить начало окна на любую ячейку памяти (подкоманда Abcolute);
Reset – сброс. Возможно осуществить системный сброс контроллера, счетчика циклов (счетчик циклов позволяет оценить реальное время выполнения программы в машинных циклах, в то время как при работе эмулятора она выполняется в замедленном масштабе по времени);
Set – установка. Позволяет запустить счетчик циклов;
Memory – позволяет производить очистку или заполнение любых областей памяти;
Quit – выход из эмулятора с помощью подкоманды Exit.
Для отказа от выполнения команды и выхода в основное меню нажать Ctrl+C.
В режиме окна с помощью курсора возможен выбор любых программно доступных ресурсов с целью изменения их содержимого в двоичном, шестнадцатеричном или ASCII кодах. Также возможно задание кодов команд с целью изменения текста программы (дизассемблирование).
Для редактирования в режиме окна могут применяться клавиши:
INS – инверсия бита, полубайта;
+/- – инкремент/декремент бита, полубайта;
↑→↓← – движение курсора в окне;
Ctrl+A – быстрый доступ к аккумулятору;
Ctrl+В – быстрый доступ к расширителю аккумулятора В;
Ctrl+Т – быстрый доступ к ресурсам таймеров;
Ctrl+I – быстрый доступ к системе прерываний;
Ctrl+P – быстрый доступ к программному счетчику;
Alt+P – быстрый доступ к портам.
Для управления работой эмулятора в режиме отладки служат функциональные клавиши. Их назначение:
F1 – запуск программы в автоматическом режиме;
F10 – пошаговое выполнение команд;
F5 – переключение скорости выполнения программы.