Как сделать асемблерную вставку в IAR Systems? Помогите пожалуйста....

 

MAV

новичок
Пытался разными способами сделать вставку... #asm #endasm не понимает.... Как решить эту задачу?
 
RU Серокой #12.05.2006 23:35
+
-
edit
 

Серокой

координатор
★★★★
Не плодите топики, а сходу пишите:
asm("nop");
В кавычках пишете ассемблерную команду. И наступит вам счастье! )
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

MAV

новичок
Не плодите топики, а сходу пишите:
asm("nop");
В кавычках пишете ассемблерную команду. И наступит вам счастье! )
 


Эту фишку я знал.... А если Асемблерная вставка длинная??? В строку писать не удобно.... и с метками таким образом работать не получается.... Может есть какиенибудь другие способы..... Задача состоит в том что б зделать на асемьлере целую функцию а не одну команду!!!!
 
RU Серокой #13.05.2006 15:35
+
-
edit
 

Серокой

координатор
★★★★
1. Если вставка длинная, то пишется так:
asm("nop n
nop");

2. Можете написать отдельный ассемблерный файл.
Например:
#include "iotiny2313.h"

PUBLIC set_int
RSEG CODE

set_int:
bset 7 ;разрешение прерываний
out TIMSK,R16 ;TOIE0=1
ret
END set_int




В файле Си объявляете эту функцию:


extern __version_1 void set_int(char);
extern char extern_data;

void main (void)
{
set_int(0x34);
}


В итоге вы передадите 0x34 в TIMSK. (0x34 взято "от балды") .
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

MAV

новичок
1. Если вставка длинная, то пишется так:
asm("nop n
nop");

2. Можете написать отдельный ассемблерный файл.
Например:
#include "iotiny2313.h"

PUBLIC set_int
RSEG CODE

set_int:
bset 7 ;разрешение прерываний
out TIMSK,R16 ;TOIE0=1
ret
END set_int




В файле Си объявляете эту функцию:


extern __version_1 void set_int(char);
extern char extern_data;

void main (void)
{
set_int(0x34);
}


В итоге вы передадите 0x34 в TIMSK. (0x34 взято "от балды") .
 


Компилятор выдает ошибку.... Error[Pe020]: identifier "PUBLIC" is undefined
Что значит "Можете написать отдельный ассемблерный файл."?
Как создать етот асемблерный файл?
Как его пристигнуть к проекту?
Этот код
PUBLIC set_int
RSEG CODE

set_int:
bset 7 ;разрешение прерываний
out TIMSK,R16 ;TOIE0=1
ret
END set_int[/i]
я написал в созданам мною файле #include "iotiny2313.h".... который пристигнул к проекту ....
Может я что-то не так делаю?
 
Это сообщение редактировалось 13.05.2006 в 16:48
RU Серокой #13.05.2006 20:37
+
-
edit
 

Серокой

координатор
★★★★
Как создать етот асемблерный файл?
Как его пристигнуть к проекту?
 


Хм, мы об IAR Embedded Workbench говорим, надеюсь? ;)
Так и делаете: создаёте файл с расширением asm.
Include целяется исключительно ради того, чтобы комилятор знал, что такое TIMSK, PORTA и прочий RAMEND, его трогать, а тем более создавать, не надо, он уже есть.
Пишете ассемблерный код там по правилам IAR - они слегка отличаются от принятых в AVR Studio, но мнемоники ассемблера те же, отличаюются директивы компилятору.
Потом в программе правой клавишей на Workspace - и "Add files". Всё, жмёте F7 и компилируете.
Больше не раскалятся ваши колосники. Мамонты пятилеток сбили свои клыки. ©  

MAV

новичок
Хм, мы об IAR Embedded Workbench говорим, надеюсь? ;)
Так и делаете: создаёте файл с расширением asm.
Include целяется исключительно ради того, чтобы комилятор знал, что такое TIMSK, PORTA и прочий RAMEND, его трогать, а тем более создавать, не надо, он уже есть.
Пишете ассемблерный код там по правилам IAR - они слегка отличаются от принятых в AVR Studio, но мнемоники ассемблера те же, отличаюются директивы компилятору.
Потом в программе правой клавишей на Workspace - и "Add files". Всё, жмёте F7 и компилируете.
 


СПАСИБО БОЛЬШОЕ.... ВСЕ ПОЛУЧИЛОСЬ...... Очень признателен за помощ.......
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru