Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Посоветуйте С -компилятор для PIC16
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Anty
Доброго времени суток. Короче, есть проблема: написано часть программы (весомая часть) на ассемблере, и часть на С. Хотелось бы вставить в код программы на С часть на ассемблере и все это дело откомпилировать. Может глуповато чуть-чуть, но просто переписывать какую- либо из частей не хочется, да уже и время подпирает.
И еще вопрос: если делать вставку в С' шный текст асмовского кода, будет компилятор видеть все регистры (OPTION_REG,INTCON,STATUS и т.д.), или там как-нибудь надо будет их хитрым образом описывать?
Заранее спасибо.
vanner
В чем вопрос? Бери любой нравящийся компилятор и смотри как использовать ассемблерные вставки и файлы в документации. Особенности оформления ассемблерного текста, вызов функций и т.п. будут там описаны.
Anty
Цитата(vanner @ May 13 2008, 11:45) *
В чем вопрос? Бери любой нравящийся компилятор и смотри как использовать ассемблерные вставки и файлы в документации. Особенности оформления ассемблерного текста, вызов функций и т.п. будут там описаны.


Ну впринципе да. Так оно и есть. Просто взял скачал с нета какой-то компилятор, просто не разобрался сразу, а он ошибки выдавал - не знал регистры. А потом help почитал, посмотрел примеры и все пошло. А вообще, хочу найти компилятор под MPLAB, просто там как-то все роднее... На сайте microchip'а вроде есть, тока не знаю, вроде там не все подходят для PIC16.
Grigorij
Цитата(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. Также можно использовать написанные ранее библиотеки (я, к сожалению, пока не знаю как).
asmon
Да, пожалуй, для 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
отличаются, это важно в циклах. Почитайте даташит.
Obama
Цитата(Anty @ May 13 2008, 11:11) *
Посоветуйте С -компилятор для PIC16


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


Не знаю. Пробовал ставить какой-то CCS, так что-то не разобрался. Он компилит, а что дальше не понятно. У меня MPLAB v.7.20. Скачал HI-TECH, так там нормально. все понял, разобрался, даже уже вроде запустил свое творение. сейчас отлаживаю.
Но все равно за совет спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.