|
Программирование msp430 на C |
|
|
|
Oct 28 2016, 07:41
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 21-07-15
Пользователь №: 87 652

|
Добрый день! У меня совсем небольшой вопрос. Хочу перейти с ассемблера на язык С. И интересует, как можно ниже представленный код интерпретировать на языке С: Код #include "msp430F1232.h"
RSEG CSTACK DS16 0 RSEG DATA16_N
N1 ds16 1 N2 ds16 1 N3 ds16 1 ...... Т.е выделение какого-то сегмента памяти.
|
|
|
|
|
Oct 28 2016, 08:29
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(Сергей Борщ @ Oct 28 2016, 11:18)  Не надо пытаться писать на Си на Ассемблере.
Надо решать задачу используя те возможности, которые для этого предоставляет Си. Если ассемблер дорог Вам "по любви к искуству". С есть компилятор, который берет на себя распределение памяти вместо Вас. Он это сделает быстрее-лучше(как правило) чем человек. Предлагаю Вам "вывернуть" Ваш вопрос наизнанку. Пишите на С простую функцию. В окне дизассемблера видите все "внутренности" ассемблерного кода. Берете сгенерированый С листинг (на ASM), смотрите, если надо - "выдергиваете" исходник кода Вашей сишной ф-ии в виде асемблера, и ..... получаете ответы на большинство вопросов
|
|
|
|
|
Oct 28 2016, 11:38
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 21-07-15
Пользователь №: 87 652

|
k155la3, это в смысле мне можно написать вот так на языке С? Код asm(RSEG CSTACK DS16 0 RSEG DATA16_N
N1 ds16 1 N2 ds16 1 N3 ds16 1);
|
|
|
|
|
Oct 28 2016, 12:58
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(Isaev_ivan @ Oct 28 2016, 14:38)  k155la3, это в смысле мне можно написать вот так на языке С? Код asm(RSEG CSTACK DS16 0 RSEG DATA16_N
N1 ds16 1 N2 ds16 1 N3 ds16 1); Так Вы можете встроить в сишный код только отдельные команды asm("nop"); Пытаясь писать на ASM в среде C(PP) Вы пытаетесь работать в "чужом огороде" и не зная "устав". Соберите проект из 2 сишных файлов. Откомпилируйте. Если IAR - смотрите файл MyAsmAndC.s43 Код MyAsmAndC.h ------------ int MyAsm(int); extern int MyAsm(int); ------------
MyAsmAndC.c ------------ #include "MyAsmAndC.h"
int MyAsm( int in_arg ) { return( in_arg + 1); };
main.c ------------ #include "MyAsmAndC.h"
int main(void) { dat = 1; dat = MyAsm(dat) __no_operation(); // BreakPoint
}
Сообщение отредактировал k155la3 - Oct 28 2016, 13:13
|
|
|
|
|
Oct 28 2016, 13:36
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Isaev_ivan @ Oct 28 2016, 14:38)  это в смысле мне можно написать вот так на языке С? Вы идете не в ту сторону. Вам не надо тупо пытаться повторить на Си свой ассемблерный код - это тупик. Вам нужно написать на Си код, который будет делать то же самое, что делал ваш ассемблерный код. Что делал этот ваш код?
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 28 2016, 14:09
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 21-07-15
Пользователь №: 87 652

|
Сергей Борщ, у меня АЦП на три канала и данные записываются по адресам этих ячеек памяти. Возможно, Вы и правы, нужно пойти по другому пути. Просто язык С для меня новое и поэтому иду напролом) спасибо за советы!
|
|
|
|
|
Oct 28 2016, 18:35
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Isaev_ivan @ Oct 28 2016, 17:09)  у меня АЦП на три канала и данные записываются по адресам этих ячеек памяти. CODE #include <stdint.h> uint16_t ADC_buffer[3];
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Oct 30 2016, 19:29
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 21-07-15
Пользователь №: 87 652

|
Здравствуйте, после попытки скомпилировать появилась такая ошибка. Что это может значить?? и кстати, есть ли разница при указании файла .h в <> или ""?
Эскизы прикрепленных изображений
|
|
|
|
|
Oct 31 2016, 11:52
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
QUOTE (Isaev_ivan @ Oct 30 2016, 22:29)  после попытки скомпилировать появилась такая ошибка. Сообщение как-то не вяжется с текстом, на которое указывает. Еще понятно было бы, если бы написал "файл такой-то не найден". Помнится когда-то очень давно в настройках компилятора можно было выбрать "использовать библиотеку clib или dlib". Библиотека dlib была ближе к стандарту 99 года. Поищите, возможно у вас выбрана clib. P.S. 1) 'crystal" пишется через "y". 2) пляски с __segment_begin не нужны.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|