21.09.2010, 17:01
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Имеется у меня icd2 и решил отладить код на Си через мплаб,да вот незадача не могу скомпилировать код в мплаб с помощью CCS.Хотя в родной оболочке CCS компилируется без ошибок.
Попробовал создать проект в одном файле,компиляция в мплаб прошла успешно.Но только я разбиваю на несколько файлов как появляется ошибка про объявлении процессора в файле(1 снимок),тогда вставляю в файл my_lcd.c строчку сначало:
ошибки нет,но появляются ошибки о том что функция delay_us не определена(снимок 2),будто каждый файл сам по себе,а не связываются воедино....
__________________
Глаза боятся,а руки делают.
Последний раз редактировалось CERGEI1982; 21.09.2010 в 17:39.
Причина: поправил
|
|
|
|
21.09.2010, 18:10
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Подрихтовал . Это по быстрому .
Но надо почитать тебе в хелпе Multiple Compilation Units.
И если пользуешь дрова , так и хидеры и определения к ним просматривай...
__________________
Осторожно , злой кот
|
|
|
Сказали "Спасибо" dosikus
|
|
|
22.09.2010, 03:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Переведено Промт-переводчиком:
Традиционно, CCS C Компилятор использует только одну единицу компиляции, и многократные файлы осуществлены, используя #INCLUDE. Используя многократные единицы компиляции, заботе нужно дать тот препроцессор команды, которые управляют компиляцией, совместимы через все единицы. Рекомендуется, чтобы директивы, такие как #FUSES, #USE, и заголовочный файл устройства были все помещены в единственный файл, включенный всеми единицами. Когда единица будет собрана, она произведет перемещаемый файл объекта (*.o) и файл символа (*.osym).
__________________
Глаза боятся,а руки делают.
|
|
|
|
22.09.2010, 15:53
|
|
Прохожий
Регистрация: 16.08.2006
Сообщений: 8
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
|
Re: Изучение PIC C Compiler(CCS C)
В mplab ПРОВЕРЬ ВЫБОР КОНТРОЛЛЕРА
дАЛЕЕ МОЙ ПРИМЕР:
#include ‹drivers/18F452.h›
#use delay(clock=40000000)
#fuses /**/H4/*/HS/**/,PUT,BROWNOUT,BORV27,NOWDT, CCP2B3,NOLVP,NODEBUG
#include ‹include/Data.h›
void main(void) {
ADCON1 |= 0x0F;
PORTA = 0;
PORTB = 0;
PORTC = 0;
set_tris_A(0b00000000);
set_tris_B(0b00000000); // Настройка порта B in/out
set_tris_C(0b00011000);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16);
PORTA = 0xFF;
delay_ms(10);
enable_interrupts(int_timer0);
/// enable_interrupts(INT_RDA);
enable_interrupts(global);
while(TRUE) {
delay_us(900);
TimeDS ();// моя функция
}
}
|
|
|
|
26.09.2010, 01:22
|
|
Частый гость
Регистрация: 01.03.2008
Сообщений: 37
Сказал спасибо: 3
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
CCS v4.110 и 4.111 имеют баги
__http://www.ccsinfo.com/forum/viewtopic.php?t=43333
v4.112 нет еще не у кого ?
|
|
|
|
01.10.2010, 22:06
|
|
Временная регистрация
Регистрация: 12.09.2008
Сообщений: 61
Сказал спасибо: 20
Сказали Спасибо 7 раз(а) в 5 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Ув. профи,бъясните, пожалуйста!
Осваиваю ccs, в свою программу вставляю код из программы написанной в среде HI-TECH:
Цитата:
|
void nokia_printmessage(const char* message)
// Write message to LCD (C string type)
{
while (*message) // Look for end of string
nokia_printchar(*message++); //
}
//______________
void nokia_printchar(byte c)
// Write 1 character to LCD
{
charsel=c;
table_to_nokialcd();
}
//_____________
|
при этом компилятор ругается на const char* message. я так понимаю проблема в том, что в ccs строковые переменные применяются по-другому? как в ccs представить вышеприведенный код?
|
|
|
|
01.10.2010, 22:51
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
ZoomerJuk, В начало И далее везде const меняем на ROM.
И читаем в хелпе Using Program Memory for Data
__________________
Осторожно , злой кот
|
|
|
Сказали "Спасибо" dosikus
|
|
|
02.10.2010, 18:22
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Не знаю каширно или нет (пусть знатоки С поправят) , шарясь по форуму CCS, худо-бедно допер до такого решения :
Asm вставки для дебага.
PHP код:
|
#include ‹16F887.h›
#device *=16
#device CONST=ROM
#fuses INTRC_IO,NOWDT, NOPROTECT, NOBROWNOUT, NOCPD
#use delay(clock=4000000)
//-------------------------------
ROM char init_0[20] =
{0xEF, 0x00, 0xEE, 0x04, 0x1B, 0x04, 0xFE, 0xFE,
0xFE, 0xFE, 0xEF, 0x90, 0x4A, 0x04, 0x7F, 0x3F,
0xEE, 0x04, 0x43, 0x06};
ROM char init_1[46] =
{0xEF, 0x90, 0x09, 0x83, 0x08, 0x00, 0x0B, 0xAF,
0x0A, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00,
0xEF, 0x00, 0xEE, 0x0C, 0xEF, 0x90, 0x00, 0x80,
0xEF, 0xB0, 0x49, 0x02, 0xEF, 0x00, 0x7F, 0x01,
0xE1, 0x81, 0xE2, 0x02, 0xE2, 0x76, 0xE1, 0x83,
0x80, 0x01, 0xEF, 0x90, 0x00, 0x00};
ROM char string1[]={"Hello word"};
ROM char string2[]={"Здравствуй мир"};
ROM char *ptr;
//-----------------------------------
char bufer[50];
void lcd_str(int16 i,ROM char *data)
{
char temp;
temp=0;
while (i--)
{
temp = *data++;
}
}
void main(void)
{
int8 i=0;
ptr= init_0;
#asm
NOP
#endasm
for(i;i‹sizeof init_0;i++){
bufer[i]=*ptr++;
}
ptr=string1;
i=0;
#asm
NOP
#endasm
for(i;i‹sizeof string1;i++){
bufer[i]=*ptr++;
}
#asm
NOP
#endasm
lcd_str(sizeof init_0,init_0);
ptr= init_0;
#asm
NOP
#endasm
while(1)
{
}
}
|
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 02.10.2010 в 18:26.
|
|
|
|
02.10.2010, 22:08
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
хз насчет кошерности..
А просто по рабоче-крестьянски, нельзя ?
ROM char string1[]={"Hello word"};
ROM char string2[]={"Здравствуй мир"};
ROM char *ptr;
//-----------------------------------
char bufer[50];
void cp_str(ROM char *data, char *ram )
{
ram= bufer;
do{
*ram++ = *data++;
}while(data);
}
|
|
|
|
02.10.2010, 22:48
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
urry, счас потестим .
Я почему и спрашивал , у CCS постоянные за...ы с к указателями на ROM . Из версии к
версии все чудеснее и чудеснее...
Лается -
Цитата:
|
Improper use of a function identifier
|
PHP код:
|
void cp_str(ROM char *data, char *ram )
{
do{
*ram++ = *data++;
}while(data);
void main(){
cp_str(string1,bufer);
#asm
NOP
#endasm
}
|
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 02.10.2010 в 23:03.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:50.
|
|