реклама на сайте
подробности

 
 
> Вставка в СИ кода на ассемблере
Яrik
сообщение Jan 8 2007, 21:34
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 110
Регистрация: 8-01-07
Из: Украина
Пользователь №: 24 216



Тут (www.atmel.ru/Articles/Atmel13.htm) нашел программу на ассемблере,наз. bcdfp, преобразующая двоичные числа с плавающей точкой, в последовательность (строку) из 8 ASCII-символов, которая включает в себя ASCII-символ знака, шесть ASCII-символов значащих десятичных цифр и ASCII-символ точки. Но у меня его неполучается использоватьэтот код в CodeVisionAVR.
Выдает какието ошибки при компелировании. help.gif

Может, ктото растолкует, что и как, буду весьма благодарен.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Potter
сообщение Jan 10 2007, 00:15
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 151
Регистрация: 27-05-06
Из: Харьков
Пользователь №: 17 508



Собствено в помощь людям которым очень нужно написать асемдлерную функцию в сишном проекте(в IAR-е).

Создаем файл с расширением asm и пристегиваем его к проекту.

В этом файле пишем свою функцию.... К примеру:

//***********************************************
NAME set_int
#include <iom16.h>
PUBLIC set_int
RSEG CODE
EXTERN sinus

set_int:
cpi r16, 0x08
brne opt
clr r16
opt:

inc r16

ret

END set_int
//***********************************************

Теперь как вызвать эту функцию в main.c:

Сначала ее нужно в обьявить в main.c:

//*********************************
extern unsigned char set_int(unsigned char);
//*********************************

А теперь эту функцию "set_int" можно вызывать в любом месте в main.c. К примеру:

//*********************
//Обработчик прерывания по таймер вектору 1.
#pragma vector = TIMER1_OVF_vect
__interrupt void Timer1_interrupt(void){
F1 = set_int(F2);
F2 = F1;
TCNT1 = TIMER1_DELAY; //Перезапуск таймера на новый отчет времени
}
//*********************

Где "F1" и "F2"- глобальные переменныя которые объявленны как unsigned char....
Передоваемое значение функции ("F2") занаосится в r16. Потом с этим значением нужно работать уже в самой асемблерной функции. Передает асемблерная функция то значение которое находится опять же в регистре r16 на момент когда функция закончивает свою работу(т. е. в "F1" сохраняется значение которое на момент окончания функции находилось в регистре r16).

Мне когда-то очень нужно было разобраться как выполнить эту задачу..... Надеюсь что это кому-нибудь поможет. Удачи.

Сообщение отредактировал Potter - Jan 10 2007, 00:19
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Яrik   Вставка в СИ кода на ассемблере   Jan 8 2007, 21:34
- - Ryzhuk   Привет.. У меня таже проблемка.... Может старожил...   Jan 8 2007, 22:03
|- - Ryzhuk   Может вместе решим эту проблему.... Стучи в аську ...   Jan 8 2007, 23:28
- - beer_warrior   ЦитатаВыдает какието ошибки при компелировании. Во...   Jan 8 2007, 23:42
- - big256   если вы о этом : http://www.atmel.ru/Articles/Atme...   Jan 9 2007, 12:18
- - _Bill   Цитата(Яrik @ Jan 8 2007, 21:34) Тут (www...   Jan 9 2007, 12:55
- - kamedi_clab   в CVAVR по моему вот так вставку АСМ делают: http...   Jan 9 2007, 13:56
- - aleksey_g   Сам пользуюсь этой штучкой под ИАР для "Печат...   Jan 9 2007, 15:21
- - Яrik   ЦитатаМожет вместе решим эту проблему.... Стучи в ...   Jan 9 2007, 21:35
- - Яrik   ЦитатаВо-вторых. Зачем такие половые извращения, к...   Jan 9 2007, 22:05
|- - aleksey_g   Цитата(Яrik @ Jan 9 2007, 21:05) Может, у...   Jan 10 2007, 13:33
|- - aleksey_g   Цитата(Яrik @ Jan 9 2007, 21:05) Может, у...   Jan 10 2007, 13:52
|- - Dog Pawlowa   Цитата(Яrik @ Jan 9 2007, 23:05) ЦитатаВо...   Jan 10 2007, 19:39
- - Яrik   ЦитатаВсе должно быть в документации. Но лучше вст...   Jan 9 2007, 22:17
|- - big256   Цитата(Яrik @ Jan 9 2007, 23:17) C_asm см...   Jan 10 2007, 17:35
|- - Сергей Борщ   Цитата(Potter @ Jan 9 2007, 23:15) Собств...   Jan 10 2007, 11:07
- - zorromen   А про #pragma asm_function+ Можно подробнее... ...   Jan 10 2007, 19:02
|- - big256   Цитата(zorromen @ Jan 10 2007, 20:02) А п...   Jan 11 2007, 11:07
- - Яrik   ЦитатаА зачем Вам выводить показания АЦП 10-битног...   Jan 11 2007, 21:37


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 14:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01351 секунд с 7
ELECTRONIX ©2004-2016