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

 
 
 
Reply to this topicStart new topic
> Посоветуйте С -компилятор для PIC16
Anty
сообщение May 13 2008, 07:11
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 13-03-08
Пользователь №: 35 878



Доброго времени суток. Короче, есть проблема: написано часть программы (весомая часть) на ассемблере, и часть на С. Хотелось бы вставить в код программы на С часть на ассемблере и все это дело откомпилировать. Может глуповато чуть-чуть, но просто переписывать какую- либо из частей не хочется, да уже и время подпирает.
И еще вопрос: если делать вставку в С' шный текст асмовского кода, будет компилятор видеть все регистры (OPTION_REG,INTCON,STATUS и т.д.), или там как-нибудь надо будет их хитрым образом описывать?
Заранее спасибо.
Go to the top of the page
 
+Quote Post
vanner
сообщение May 13 2008, 08:45
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 23-10-05
Пользователь №: 10 016



В чем вопрос? Бери любой нравящийся компилятор и смотри как использовать ассемблерные вставки и файлы в документации. Особенности оформления ассемблерного текста, вызов функций и т.п. будут там описаны.
Go to the top of the page
 
+Quote Post
Anty
сообщение May 13 2008, 10:15
Сообщение #3


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 13-03-08
Пользователь №: 35 878



Цитата(vanner @ May 13 2008, 11:45) *
В чем вопрос? Бери любой нравящийся компилятор и смотри как использовать ассемблерные вставки и файлы в документации. Особенности оформления ассемблерного текста, вызов функций и т.п. будут там описаны.


Ну впринципе да. Так оно и есть. Просто взял скачал с нета какой-то компилятор, просто не разобрался сразу, а он ошибки выдавал - не знал регистры. А потом help почитал, посмотрел примеры и все пошло. А вообще, хочу найти компилятор под MPLAB, просто там как-то все роднее... На сайте microchip'а вроде есть, тока не знаю, вроде там не все подходят для PIC16.
Go to the top of the page
 
+Quote Post
Grigorij
сообщение May 13 2008, 10:49
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 10-03-07
Пользователь №: 26 038



Цитата(Anty @ May 13 2008, 11:11) *
Доброго времени суток. Короче, есть проблема: написано часть программы (весомая часть) на ассемблере, и часть на С. Хотелось бы вставить в код программы на С часть на ассемблере и все это дело откомпилировать. Может глуповато чуть-чуть, но просто переписывать какую- либо из частей не хочется, да уже и время подпирает.
И еще вопрос: если делать вставку в С' шный текст асмовского кода, будет компилятор видеть все регистры (OPTION_REG,INTCON,STATUS и т.д.), или там как-нибудь надо будет их хитрым образом описывать?
Заранее спасибо.


Могу посоветовать HI-TECH. Он (HI-TECH LITE) входит в MPLAB 8.0, хотя насколько я знаю, его можно скачать отдельно и прикрутить к MPLAB-у. Сейчас на нем пишу программу для МК PIC16F690. В принципе довольно удобно. Конечно есть свои нюансы, но чтение документации и форум позволяют преодолеть возникающие препятствия. Асмовский код компилятор видеть будет (и регистры OPTION_REG, INTCON, STATUS И т.д.), собственно как и Ваши переменные. Вставить его (асмовский код) можно с использованием, например, директив #asm ... #enasm. Также можно использовать написанные ранее библиотеки (я, к сожалению, пока не знаю как).
Go to the top of the page
 
+Quote Post
asmon
сообщение May 13 2008, 12:23
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 20-03-07
Из: Днепродзержинск
Пользователь №: 26 344



Да, пожалуй, для 16 пиков лучше хайтека сишных компиляторов не найти. Вот 18 и выше - это другое дело. Тут, как говорится, есть варианты.
Итак OPTION_REG,INTCON,STATUS и прочие регистры асм увидит, но вначале каждого нужно ставить нижний пробел, например:

#asm
bcf _STATUS, 0
#endasm

То же самое нужно делать и для объявленных вами глобальных переменных. Например:

char i;
#asm
movlw 0x0D
movwf _i
#endasm

Вот с локальными переменными - проблема. Лучше с этим не заморачиваться, хотя, если очень очень нужно - всегда можно посмотреть асмовский листинг.

И ещё один совсем маленький ньюанс - вставки типа asm("bcf _STATUS, 0") и
#asm
bcf _STATUS, 0
#endasm
отличаются, это важно в циклах. Почитайте даташит.
Go to the top of the page
 
+Quote Post
Obama
сообщение May 21 2008, 08:22
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 14-04-08
Из: Москва
Пользователь №: 36 755



Цитата(Anty @ May 13 2008, 11:11) *
Посоветуйте С -компилятор для PIC16


Рекомендую CCS - он ставится автоматом при установке MPLAB 8
Go to the top of the page
 
+Quote Post
Anty
сообщение May 21 2008, 12:33
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 13-03-08
Пользователь №: 35 878



Цитата(Obama @ May 21 2008, 11:22) *
Рекомендую CCS - он ставится автоматом при установке MPLAB 8


Не знаю. Пробовал ставить какой-то CCS, так что-то не разобрался. Он компилит, а что дальше не понятно. У меня MPLAB v.7.20. Скачал HI-TECH, так там нормально. все понял, разобрался, даже уже вроде запустил свое творение. сейчас отлаживаю.
Но все равно за совет спасибо.
Go to the top of the page
 
+Quote Post

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

 


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


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