Страница 102 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср дек 22, 2010 17:36:40
Сериг
ребят пытаюь вывести русские слова на лсиди 26x2 испольую рл плис и минус не работает так как цвавр ругается...че делать?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт дек 23, 2010 15:07:33
holland.9
Сериг писал(а):испольую рл плис и минус не работает так как цвавр ругается...че делать?
както так:
Код: Выделить всё
#pragma rl+
lcd_gotoxy( 0,0 );
lcd_putsf( "бла-бла-бла" );
////////////////////
#pragma rl-
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт дек 23, 2010 16:11:35
Сериг
holland.9 писал(а):Сериг писал(а):испольую рл плис и минус не работает так как цвавр ругается...че делать?
както так:
Код: Выделить всё
#pragma rl+
lcd_gotoxy( 0,0 );
lcd_putsf( "бла-бла-бла" );
////////////////////
#pragma rl-
хм спасиб попробую хотя уже нет я девушке дисплей с признаниями подарил)))))))но все равно попробую))))))))))
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт дек 23, 2010 16:17:03
ARV
Сериг писал(а):хм спасиб попробую хотя уже нет я девушке дисплей с признаниями подарил)))))))
ачуметь!

О tempora, о mores!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт дек 23, 2010 16:23:16
Сериг
Re: CodeVision AVR в вопросах и ответах
Добавлено: Чт дек 23, 2010 19:25:00
ARV
а я че? я ни че...

Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб дек 25, 2010 01:36:43
Apparatchik
Как в CodeVisionAVR возвратить из функции несколько значений?
Пробовал объявлять так
Код: Выделить всё
void sun (char sd, char sm, char sy, char la, char lo, char z, char &x1, char &x2);
хотел возвратить x1 и x2 но нехочет компилировать.
Можно ли возвращать сразу восемь значений?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб дек 25, 2010 02:12:18
O-LED
Вроде никак. Но можно возвратить ссылку на массив, или на структуру.
Еще можно объявить глобальные переменные, внутри функции им присвоить нужные значения, а где нужно использовать эти переменные.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб дек 25, 2010 13:28:46
Rusja2008
Apparatchik, глянуть бы на код Вашей функции полностью, ато как то char &x1, char &x2 настораживает.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб дек 25, 2010 14:06:04
avreal
А что там смотреть. Это ж не С++, ссылочных типов нет. Это при передаче аргументов-адресов надо писать func( &x1, &x2), а при объявлении/определении функции - void func( int *px1,int *px2) и внутри функции *px1 = 5;
В языке
С можно вернуть из функции структуру.
Код: Выделить всё
typedef struct {
int a, b, c;
char s[5];
} some_data_t;
some_data_t foo(int i)
{
some_data_t temp;
temp.a = i;
temp.b = i/2;
temp.c = -3;
temp.s[0] = 'A';
return temp;
}
some_data_t some_data;
void moo() {
some_datadata = foo(8);
}
Но на мелких контроллерах это невыгодно по коду/стеку. Если структура, влазит в регистры, например, два байтовых значения, то компилятор в регистрах её и возвращает. А для больших структур в функцию
foo() первым аргументом, до наших аргументов, передаётся указатель на структуру, в
moo() на стеке заводится временная переменная some_data_t, в
foo() передаётся указатель на неё, а после возврата результат переписывается в
some_data.
Вроде бы какие-то компилятор передавали сразу указатель на some_data, но не уверен.
Поэтому лучше явно передавать указатель на структуру — это будет лучше и неявного указателя, и передачи восьми указателей на отдельные переменные.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб дек 25, 2010 15:18:14
Apparatchik
O-LED писал(а):Еще можно объявить глобальные переменные, внутри функции им присвоить нужные значения, а где нужно использовать эти переменные.
Так наверно будет самое простое. Я просто хотел написать отдельный файл *.h чтоб потом подключать когда надо, но придётся всё делать в основном коде.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Сб дек 25, 2010 15:37:29
O-LED
ну так и сделай, просто во всех программах где будешь использовать эту недофункцию, используй одно и тоже имя "возвращаемых" переменных, а эти переменные объяви как extern. после этого они будут видны внутри всех функций и подключаемых файлах
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 02, 2011 12:18:25
ValBag
Для справки: появился CodeVision AVR 2.05.0
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 02, 2011 13:02:35
odesasha
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 02, 2011 13:13:32
ValBag
Говорят, что дизассемблер стал внятный?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 02, 2011 13:30:06
Apparatchik
Avast 5.0.677 нашол в архиве "каку"!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 02, 2011 13:44:26
ValBag
Apparatchik писал(а):Avast 5.0.677 нашол в архиве "каку"!
NOD32 молчит.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 02, 2011 14:10:13
Amstron
Помогите разобраться с массивом!
unsigned int a[100]; //Я создаю массив
Далее создаю функцию:
{
a[0] = 186;
a[5] = 279;
a[30] = 372;
a[45] = 465;
a[50] = 556;
a[65] = 651;
a[75] = 744;
a[80] = 837;
a[90] = 930;
a[99] = 1024;
}
Эту функцию я вставляю в void main(void) , перед основным бесконечным циклом для записи в массив чисел .
Далее в оснвном цикле вывожу значение 5 элемента массива 279
indication_IND = a[5];
А у меня на дисплее отображается число 23 вместо 279!!! Не могу понять в чем тут дело!!!
Второе: если я объявляю массив как flash unsigned int a[100]; то как потом мне в нем изменить значение элементов?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 02, 2011 14:27:14
ValBag
Amstron писал(а):
Далее создаю функцию:
Ну и где она?
Далее в оснвном цикле вывожу значение 5 элемента массива 279
indication_IND = a[5];
А у меня на дисплее отображается число 23 вместо 279!!! Не могу понять в чем тут дело!!!
Какой тип переменной
indication_IND ?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс янв 02, 2011 14:38:10
Amstron
ValBag писал(а):
Какой тип переменной indication_IND ?
unsigned int indication_IND;
РАЗОБРАЛСЯ!!! У меня сначало значение сохранялось в переменную unsigned char !
ВОТ Я СТУПИЛ(((((
А с этим разобраться не поможите?
если я объявляю массив как flash unsigned int a[100]; то как потом мне в нем изменить значение элементов?
Смысл в том , что я хочу создать массив в энергонезависимой памяти. Потом измеить в нем значение элементов. У меня компиль CodeVisionAVR ругается если я значения меняю...