71231

Создание и компиляция проекта в среде IAR. Написание простейшего модуля на языке Assembler

Лабораторная работа

Коммуникация, связь, радиоэлектроника и цифровые приборы

Целью данной работы является ознакомление с одной из популярнейших сред разработки программ для микроконтроллеров IAR Embedded Workbench IDE. Последовательность действий при создании проекта: Создадим новый проект Project=>Create New Project.

Русский

2014-11-04

139.57 KB

6 чел.

7

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение                                                                         

                       высшего профессионального образования

«ТОМСКИЙ  ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ»

(ТУСУР)

Кафедра Электронных Средств Автоматизации и Управления

(ЭСАУ)

Лабораторная работа №1

Создание и компиляция проекта в среде IAR. Написание простейшего модуля на языке Assembler

По дисциплине

«Микропроцессорные средства систем автоматизации и управления»

Выполнил ст. гр. 530

Рачеев А.О.

«___» ___________

Проверил ст. пр. ЭСАУ

Недяк С.П.

«___» ___________


Целью  данной   работы   является   ознакомление  с  одной  из  популярнейших  сред разработки программ для микроконтроллеров IAR Embedded Workbench IDE.

  1.  Последовательность действий при создании проекта:

Создадим новый проект Project=>Create New Project.

Выбираем шаблон проекта( ProjectTemplates  ) : C-main

 Рисунок 1.1

Сохраняем проект под   именем arr.

Далее в свойствах  проекта выбираем  модель микроконтроллера Milandr 1986BE9x  (Рис 1.2).  Для этого правой кнопкой мыши щелкаем по нашему проекту,  выбираем Options…и в GeneralOption

Рисунок 1.2

на закладке  Target     (Рис 1.3) выберем модель микроконтроллера   Milandr 1986BE9xp[-0pp055555555555555555…….

Рисунок 1.3

В  случае,   если  в  списке  отсутствует  Milandr,  попробуйте  проверить  файлы,  которые скопировали в корневую директорию среды разработки IAR.

  1.  Разработка первой программы для микроконтроллера

Исходный текст функции main() на языке С:

В открытом окне  main  введем следующий  код:

int main()

{

 

 float a=5.75;

 float r;

 for(int i=5; i<a; i++)

{

   r=a*4;

}

 

 return 0;

 

}

Рисунок 2.1 Пример работы программы в ассемблере.

Int main ()

Main:

PUSH    {R4, R6, LR}           //сохраняем регистры.

float a=5.75

LDR.N    R4,  ??main_0

//Загрузка адреса метки в регистр R4. Используем 1б-битную команду Thumb; N = Narrow (узкая).

for(int i=5; i<a ; i++)

int i=5

MOVS    R5, #5   // Помещаем  в регистр R5 число 5. Наличие суффикса S -  состояние флагов условий изменяется в соответствии с результатом операции (APSR).

Помещение в регистр R4 числа 1.5 (1069547520 -представление числа 1.5 в памяти). Наличие суффикса  S -  состояние флагов условий изменяется в соответствии с результатом операции (APSR). Используем 32-битную команду Thumb-2; W- Wide (широкая)

int a=3

MOVS R0, #3   Помещение в регистр R0 числа 3. Наличие суффикса S.

float c=2.5;   

LDR.N  R5, ??main_0   

Загрузка адреса метки в регистр R5. Используем 1б-битную команду Thumb; N = Narrow (узкая)

float d=5.5;

LDR.N  R6, [PC, #0x20]

Загрузка в регистр R6  содержимого ячейки памяти по адресу (PC + 0x20). Наличие суффикса N.

b=b-a;

BL __aeabi_i2f     Переход к метке  «__aeabi_i2f  »

MOVS R1, R0     Помещение содержимого регистра R0 в регистр R1. Наличие суффикса S.

MOVS R0, R4   Помещение содержимого регистра R4 в регистр R0. Наличие суффикса S.

BL __aeabi_fsub  Переход к метке  «__aeabi_fsub » Функция, осуществляющая вычитание.

MOVS R4, R0     Помещение содержимого регистра R0 в регистр R4. Наличие суффикса S.

d=d*c;

MOVS R0, R6     Помещение содержимого регистра R6 в регистр R0. Наличие суффикса S.

MOVS R1, R5     Помещение содержимого регистра R5 в регистр R1. Наличие суффикса S.

BL __aeabi_fmul  Переход к метке « __aeabi_fmul  » Функция, осуществляющая  умножение

MOVS R6, R0     Помещение содержимого регистра R0 в регистр R6. Наличие суффикса S.

Следующие функции выполняют действия (инициализация, вычитание, умножение) с переменными типа Float, описанные на си, в ассемблере:

??main_0   

__aeabi_i2f     

__aeabi_fsub

__aeabi_fmul  

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

Return 0;

MOVS R0, #0         Помещение в регистр R0 числа 0

POP  {R4-R6, PC}  Восстанавливаем содержимое реrистров R4,R5,R6 и возвращаемся

Описание синтаксиса команд PUSH и РОР:

Загрузка регистров в стек и извлечение регистров из стека («полный» убывающий стек).

Синтаксис:

PUSH{coпd} reglist

POP{coпd} reglist

где

coпd - необязательный суффикс условия выполнения;

reglist -  непустой список регистров, заключённый в фигурные скобки. Может включать в себя диапазоны регистров. При наличии в списке более одного регистра или диапазона регистров элементы списка разделяются запятыми.

Ограничения

. reglist не должен содержать SP.

. reglist команды PUSH не должен содержать Ре.

. reglist команды РОР не должен содержать РС, если в нём содержится LR.

При наличии Ре в reglist команды РОР:

. бит [О] загружаемого значения должен быть установлен в 1 для корректного выполнения команды; переход осуществляется по этому адресу, выровненному на границу полуслова;

. если команда условно выполняемая, то она должна быть последней командой в IT-блоке.

 

Вывод: В ходе лабораторной работы были освоены основные  команды ассемблера с помощью IAR.


 

А также другие работы, которые могут Вас заинтересовать

15578. Оспаривание решений и предписаний антимонопольного органа 28 KB
  37. Оспаривание решений и предписаний антимонопольного органа1. Решение предписание антимонопольного органа могут быть оспорены в суде или арбитражном суде в течение трех месяцев со дня вынесения решения выдачи предписания.2. Подача заявления о признании недействительн
15579. Ответственность за нарушение законодательства Российской Федерации о рекламе 112 KB
  38. Ответственность за нарушение законодательства Российской Федерации о рекламе1. Нарушение физическими или юридическими лицами законодательства Российской Федерации о рекламе влечет за собой ответственность в соответствии с гражданским законодательством.2. Лица прав...
15580. Вступление в силу настоящего Федерального закона 11.5 KB
  39. Вступление в силу настоящего Федерального закона1. Настоящий Федеральный закон вступает в силу с 1 июля 2006 года за исключением части 3 статьи 14 части 2 статьи 20 и пункта 4 части 2 статьи 23 настоящего Федерального закона.2. Часть 2 статьи 20 и пункт 4 части 2 статьи 23 настоящего ...
15581. Регулирование отношений в сфере рекламы со дня вступления в силу настоящего Федерального закона 24.5 KB
  40. Регулирование отношений в сфере рекламы со дня вступления в силу настоящего Федерального закона1. Со дня вступления в силу настоящего Федерального закона признать утратившими силу:1 Федеральный закон от 18 июля 1995 года № 108ФЗ О рекламе Собрание законодательства Росс...
15582. Маркушин А.Г. К РАЗРАБОТКЕ ДИНАМИЧЕСКОЙ ТЕОРИИ СЫПУЧЕГО ТЕЛА С ТВЕРДЫМ ЗЕРНОМ 79.88 KB
  Маркушин А.Г. К РАЗРАБОТКЕ ДИНАМИЧЕСКОЙ ТЕОРИИ СЫПУЧЕГО ТЕЛА С ТВЕРДЫМ ЗЕРНОМ Сыпучее тело отдельные зерна которого не испытывают пластических деформаций ни при каких обстоятельствах его переработки будем называть твердозёренным сыпучим материалом или сыпу
15583. Разработка математического и аппаратного обеспечения технических расчетов характеристик движения сыпучих материалов в технологических процессах 139 KB
  Маркушин А.Г. Разработка математического и аппаратного обеспечения технических расчетов характеристик движения сыпучих материалов в технологических процессах При решении инженерных задач связанных с проектированием оборудования взаимодействующего с сыпучими
15584. ОБ ОСНОВНЫХ ДЕТАЛЯХ ПОСТРОЕНИЯ ДИНАМИЧЕСКОЙ ТЕОРИИ СЫПУЧЕГО ТЕЛА 22.43 KB
  Контарев А.А. Королева О.А. Маркушин А.Г. ОБ ОСНОВНЫХ ДЕТАЛЯХ ПОСТРОЕНИЯ ДИНАМИЧЕСКОй ТЕОРИИ сыпучЕГО ТЕЛА При решении инженерных задач связанных с конструированием бункеров и бункерного оборудования для хранения и переработки сыпучих материалов необходимо им
15585. Алгоритм учета истории нагружения элемента сыпучего тела с твердым зерном в задаче истечения 158.05 KB
  А.Г. Маркушин Алгоритм учета истории нагружения элемента сыпучего тела с твердым зерном в задаче истечения I. При решении инженерных задач связанных с проектированием оборудования взаимодействующего с сыпучими материалами возникает как правило необходимость в...
15586. Экспериментальные и теоретические основы регулировки газовых шаровых кранов 235 KB
  Зубаилов Г.И. Маркушин А.Г. Экспериментальные и теоретические основы регулировки газовых шаровых кранов Рабочий орган шарового крана представляет собой сегмент дюралюминиевого Д16Т шара диаметра D с цилиндрическим отверстием соосным в открытом положении крана с