Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
labrabmo-peresilki.doc
Скачиваний:
25
Добавлен:
10.02.2015
Размер:
1.54 Mб
Скачать

3. Создание программы в среде проектированияWinIdEи её ассемблирование

3.1. Интегрированная средаWinIde

Программный пакет ICS08GPZкомпанииP&EMicrocomputerSystems( содержит набор средств для отладки программного обеспечения систем, реализуемых на базе микроконтроллеровMC68HC908GP32 иMC68HC908GP20 фирмыMotorola. В состав среды ICS08GPZвходят:

  • ассемблер,

  • симулятор,

  • программатор,

  • схемный симулятор,

  • отладчик.

Программатор, схемный симулятор и отладчик работают совместно с соответствующими аппаратными средствами (лабораторный макет или плата развития). Все программы могут быть вызваны из входящей в состав пакета интегрированной среды WinIDE.

Чтобы запустить интегрированную среду необходимо открыть файл WinIDE.exe. После запуска среды на экране монитора открывается окно (рис.5), в котором доступно главное меню и функциональные клавиши, разбитые на группы.

Группа клавиш «Основные функции»:

Assemble/CompileFile(ассемблировать/откомпилировать файл) – запускает внешний ассемблер/компилятор.

Simulation(симулятор работы контроллера) - запускает симулятор (программно-логическую модель контроллера).

Programmer(программатор) - запускает программатор.

In-CircuitSimulator(схемный симулятор) - запускает схемный симулятор.

In-CircuitDubugger(схемный отладчик) - запускает отладчик.

3.2. Структура ассемблерной строки и ассемблерной программы

Исходная программа на языке ассемблера состоит из ассемблерных строк. В ассемблерной строке могут быть записаны директивы ассемблера, команды процессора и комментарии. Прописные и строчные символы при записи директив и команд считаются эквивалентными. Вся ассемблерная строка может являться комментарием. В этом случае она должна содержать " ;" в первой позиции этой строки.

Ассемблерная строка содержит несколько полей, разделённых одним или несколькими пробелами. В строке могут быть следующие поля:

  • поле метки;

  • поле мнемоники;

  • поле операндов;

  • поле комментариев.

Поле метки

Метка, в общем случае, является необязательным элементом ассемблерной строки. Для некоторых директив наличие метки обязательно. Метка начинается с первой позиции строки. Первым символом метки должна быть буква.

Поле мнемоники

Поле мнемоники начинается после первого пробела в строке и заканчивается одним или несколькими пробелами. Поле мнемоники содержит мнемоническое обозначение команды или директиву ассемблера.

Поле операнда

Поле операнда начинается сразу за пробелом, заканчивающим поле мнемоники. В поле операнда могут быть записаны непосредственные данные, адреса данных, указаны источники и приёмники данных.

Поле комментария

Поле комментария начинается после пробела, завершающего поле операнда или поле мнемоники (при отсутствии операнда ). Поле комментария может содержать любые символы кода ASCII. Комментарий должен начинаться точкой с запятой.

Программа, написанная на ассемблере МК68HC908 должна иметь структуру, представленную на рис. 4.

Секция инициализации: резервирование памяти

Секция данных

Секция кода

Секция инициализации: настройка векторов

прерываний

Рис. 4. Структура ассемблерной программы

Программа состоит из трёх основных секций: секции данных, секции инициализации, и секции кода.

Секция данныхиспользуется для резервирования и размещения данных в ОЗУ микроконтроллера. Для этих целей используются директивы:EQU,DB,DW, например: kjh EQU $15A - задание константы

uydb0E

trdb8 - задание переменных.

Секция данных начинается с директивы org RamStart.

Примеры использования символных переменных и символьных констант в секции данных:

ldatr- загрузка в АСС числа 8,

stakjh- переслать число из АСС в ячейку памяти с адресом 015A.

Секция инициализациисодержит директивы ассемблера, задающие начальные значения регистров процессора, переменных и констант, связанных с распределением памяти, начальной загрузкой программы в память и завершением программы. Для инициализации программы используются обычно такие директивы как:EQU,ORG.

Например, RAMStartEQU$0040 – задание константы.

org VectorStart - задание значения программного

счётчика,

dwMain_Init- резервирование и задание

значения адреса памяти

Секция инициализации заканчивается заданием значений векторов запуска и прерываний. Пример описания секции инициализации:

dummy_isr: rti

org VectorStart

dw dummy_isr

dw dummy_isr

dw dummy_isr

dw dummy_isr

dw dummy_isr

dw dummy_isr

dw dummy_isr

dw dummy_isr

dw dummy_isr - метка команды rti

dw dummy_isr

dw dummy_isr

dw dummy_isr

dw dummy_isr

dw dummy_isr

dw dummy_isr

dw dummy_isr

dw dummy_isr

dwmain_init- метка основной программы.

Секция кодаиспользуется для резервирования, размещения и описания подпрограмм и основной программы воFlashпамяти МК. Начинается секция кода директивой org ROMStart. Затем следует описание подпрограмм. Каждая подпрограмма имеет свою метку и заканчивается командойRTS. Обращение к подпрограмме выполняется из основной программы командамиJSRилиBSRпо её метке.

Основная программа также имеет метку. Метка основной программы должна быть обязательно указана в описании значений векторов запуска и прерываний секции инициализации. Секция кода должна заканчиваться командой такого вида:

метка: RTI,

которая связывает секцию кода с блоком значений векторов запуска и прерываний и приводит к завершению программы с восстановлением содержимого всех регистров процессора и том числе и программного счётчика.

Метка в команде RTIможет быть произвольной, но эта метка должна быть указана в блоке значений векторов запуска и прерываний секции инициализации (см. пример описания секции инициализации).

ВЫПОЛНЕНИЕ РАБОТЫ

  1. Изучить структуру и режимы функционирования микроконтроллера MC68HC908GP32.

  2. Ознакомиться с возможностями интегрированного отладчика ICS08GPZ.

  3. Изучить реализуемые микроконтроллером способы адресации и команды пересылки данных.

  4. Подготовить лабораторный макет LabKit08 к работе, выполнив следующие операции:

  • переведите переключатель питания на передней панели макета LabKit08 в положение “Включено”, после этого на макете должен загореться красный светодиодный индикатор;

  • включите питание инструментального компьютера, работающего под управлением ОС Windows95 или старшей версии с установленным пакетом программ отладкиICS08GPZ; из рабочего каталога запустите интегрированную среду программированияWinIDE.exe.

  • После выполнения этой процедуры на экране монитора должно появиться главное окно среды программирования WinIDE, в котором доступно меню, функциональные клавиши и окна редактирования исходного текста.

  1. В новом окне редактора ввести исходный текст программы содержащий различные варианты команд пересылки “регистр – регистр”, “регистр – память”, “память – память” (табл. 2.).

  2. Выполнить компиляцию программы путем нажатия клавиши Assemble/Compile File(ассемблировать/откомпилировать файл). В случае получения сообщений об ошибке исправить исходный текст программы и повторить попытку компиляции.

  3. Войти в режим моделирования (симуляции) путем нажатия клавиши Simulator(симулятор контроллера). Проконтролировать правильность выполнения команд, используя окнаCPU08, Memory Window 1, Code Window 1: Source.

  4. Включить установку. Войти в режим программатор путем нажатия клавиши Programmer. Установить контакт с установкой (Contact target with these settings). После того, как получен доступ кFlash-памяти, система предложит выбрать программный модуль с расширением*.08p. Здесь следует выбрать модуль908_gp32.08p. Далее можно загрузить новую программу, предварительно стерев содержимоеFlash-памяти. Для этого, используя команду Programm необходимо последовательно выполнить команды:

  • Erase module.

  • Program module(предварительно следует выбрать файл с новой программой - модульS19, используя командуFile-Specify $ Record).

Команда Erase moduleпроизводит стирание всейFlash-памяти, а командаProgram moduleзаписывает туда новое содержимое. После загрузки программы необходимо завершить работу программыProgrammer, нажав клавишуExit.

  1. Войти в режим отладки путем нажатия клавиши In-Circuit Debuger(схемный отладчик). Проконтролировать правильность выполнения команд, используя окнаCPU08, MemoryWindow1, CodeWindow1:Source.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]