|
Перевод программы AVR на PIC. |
|
|
|
Aug 20 2014, 06:33
|
Частый гость
 
Группа: Участник
Сообщений: 93
Регистрация: 13-01-06
Пользователь №: 13 150

|
Приветствую! В своей программе для PIC хочу использовать кусок кода, написанный для ATmega162. На AVR код такой: Код volatile char BufSms[BPRSMS];//буфер приема анализа содержимого .........
SIGNAL(USART1_RXC_vect ) //принят байт по USART1 { FlagIn=1; uin1=UDR1; indpr++; if (indpr>=BPRSMS) indpr=0;//ограничение BufSms[indpr]=uin1; //проверка принятого символа на сообщение устанавливает биты в SUsart1 for(i=0; i<8; i++) { if(PP[i][s[i]]==uin1) { s[i]++; if(PP[i][s[i]]==0) { SUsart1 |= maska[i]; s[i]=0; } } else s[i]=0; } } После переноса в среду для PIC, мой компилятор MicroC ругается на определение: Код volatile char BufSms[BPRSMS];//буфер приема анализа содержимого А именно подчеркивает BPRSMS. Ошибка такая: Undeclared identifier 'BPRSMS' in expression. Правильность кода для AVR проверить не могу, нет компилятора. Но зашитый в МК код работает. Моего опыта программирования не хватает, на то. что бы понять в чем причина.
|
|
|
|
|
 |
Ответов
|
Aug 21 2014, 08:28
|
Частый гость
 
Группа: Участник
Сообщений: 93
Регистрация: 13-01-06
Пользователь №: 13 150

|
Компилятор mikroC for PIC mikroElektronika лицензия.
|
|
|
|
|
Aug 21 2014, 10:48
|
Частый гость
 
Группа: Участник
Сообщений: 93
Регистрация: 13-01-06
Пользователь №: 13 150

|
Цитата(dxp @ Aug 21 2014, 13:53)  Попробуйте убрать квалификаторы volatile const (для начала оба, если заработает, то потом по отдельности) Заработало! Только если везде удалить. Как минимум ошибки не выдает. Можно опять писать. Что получится дальше, еще не знаю. Спасибо! Все оказалось еще проще. В строке Код volatile unsigned char Mes8[]={0x3e,0x20,0,0,0,0,0,0,0,0,0}; пропущена const после добавления все работает.
|
|
|
|
|
Aug 21 2014, 12:04
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (TAPAKAN @ Aug 21 2014, 17:48)  Все оказалось еще проще. В строке CODE volatile unsigned char Mes8[]={0x3e,0x20,0,0,0,0,0,0,0,0,0}; пропущена const после добавления все работает. Ну, тут компилятор, по ходу, не прав: указатель на константный объект разрешено (и это вполне безопасно) инициализировать адресом неконстантного объекта (что и демонстрируют упомянутые компиляторы). Вот наоборот нельзя и это понятно - чтобы исключить изменение константного объекта через указатель. Ваш компилер зачем-то требует полного соответствия. Хорошо, что в данном случае вас это устраивает.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
TAPAKAN Перевод программы AVR на PIC. Aug 20 2014, 06:33 kovigor Цитата(TAPAKAN @ Aug 20 2014, 09:33) Прив... Aug 20 2014, 10:03 TAPAKAN kovigor
Константа оказалась определена в файле с #... Aug 20 2014, 10:46 kovigor Цитата(TAPAKAN @ Aug 20 2014, 13:46) Конс... Aug 20 2014, 11:00  TAPAKAN Цитата(kovigor @ Aug 20 2014, 15:00) И че... Aug 20 2014, 11:06   kovigor Цитата(TAPAKAN @ Aug 20 2014, 14:06) 256
... Aug 20 2014, 11:11 TAPAKAN Подскажите, пожалуйста еще.
Есть такие объявления:... Aug 20 2014, 12:16 Taradov Alexander Конструкции
CODESIGNAL(USART1_RXC_vect ) и... Aug 20 2014, 17:37 dxp QUOTE (TAPAKAN @ Aug 20 2014, 19:16) Комп... Aug 21 2014, 04:45 TAPAKAN Taradov Alexander
Это я скопировал с листинга для ... Aug 20 2014, 18:28 TAPAKAN dxp
у меня так и написано... Aug 21 2014, 06:39 dxp QUOTE (TAPAKAN @ Aug 21 2014, 13:39) dxp
... Aug 21 2014, 08:03  TAPAKAN Цитата(dxp @ Aug 21 2014, 12:03) В посте ... Aug 21 2014, 08:07   dxp QUOTE (TAPAKAN @ Aug 21 2014, 15:07) Я в ... Aug 21 2014, 08:17    hd44780 Цитата(dxp @ Aug 21 2014, 18:04) Ну, тут ... Aug 22 2014, 07:46
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|