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

 
 
 
Reply to this topicStart new topic
> копируем массив, вывод массива на ЖК проблемы
vvkka
сообщение Sep 14 2009, 14:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 57
Регистрация: 9-07-08
Из: Волгоградская обл
Пользователь №: 38 838



код
Код
int znak=2;
int znak1=77;

char *adres2;
char *adres3;

//void regim_ustavka (void);
//void inicializacia(void);

flash char lcd1[] = {"osn"}; //тоже рамещение во флеш
flash char lcd2[] = {" menu"};
flash char lcd3[] = {" rabota"};
//flash char lcd4[] = {"nastoika"};
//массив будет очень большой

void indi (void) { //выводим инфомацию на экран LCD

lcd_gotoxy(0,0); //верхняя строка
sprintf(lcd_biffer,"r=%-s %-s",*adres2,*adres3);
lcd_puts (lcd_biffer);

lcd_gotoxy(0,1); //нижняя строка
sprintf(lcd_biffer,"j=%s %i %i",*adres2,znak,znak1); //%s-слово sram, %i-число,
lcd_puts (lcd_biffer); //n-перенос строки
}


void main (void) {
inicializacia();

strcpyf(adres2,lcd2); //функция копирует сроку из flash в sdram
strcpyf(adres3,lcd3); //в библиотеке "string.h"

while(1){
indi ();
}
}


После нескольких мытарств исползовал стандартную функцию копирования и вроде как все нормально без ошибок компилируется
но в симуляторе на ЖК какаето каша выходит
то вобще теряет слова,
весь смысл этой затеи в очень большом массиве и разместить его в SDRAM неполучится, flash вполне подходит но при копировании что то не так
симулятор использую ПРОТЭУС 7.4 SP3
Причина редактирования: Оформление цитаты исходника.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 14 2009, 14:28
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(vvkka @ Sep 14 2009, 17:01) *
код
Для вставки кода есть специальная кнопка:
Цитата(vvkka @ Sep 14 2009, 17:01) *
симулятор использую ПРОТЭУС 7.4 SP3
Компилятор и тип контроллера предлагаете угадать аудитории?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Sep 14 2009, 14:36
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата(Сергей Борщ @ Sep 14 2009, 17:28) *
Компилятор и тип контроллера предлагаете угадать аудитории?

Компилятор угадывается biggrin.gif [CAVR] ... Ну а контроллер, наверное, мега16...
Автору - а приложите-ка папку с проектом и моделью в протеусе - быстрее помогут....


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Sep 14 2009, 16:27
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Код
sprintf(lcd_biffer,"r=%-s %-s",*adres2,*adres3);

А где инициализация указателей?
Go to the top of the page
 
+Quote Post
Goodefine
сообщение Sep 14 2009, 18:12
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581



Цитата(_Pasha @ Sep 14 2009, 19:27) *
А где инициализация указателей?

Надо полагать, тут:
Цитата
Код
strcpyf(adres2,lcd2); //функция копирует сроку из flash в sdram
strcpyf(adres3,lcd3); //в библиотеке "string.h"


--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Sep 14 2009, 18:46
Сообщение #6


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(vvkka @ Sep 14 2009, 20:01) *
Код
sprintf(lcd_biffer,"r=%-s %-s",*adres2,*adres3);
...
sprintf(lcd_biffer,"j=%s %i %i",*adres2,znak,znak1); //%s-слово sram, %i-число,


Попробуйте убрать звёздочки перед adres2 и adres3.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 15 2009, 06:26
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Goodefine @ Sep 14 2009, 22:12) *
Надо полагать, тут:
Это не инициализация, а разрушение какой-то памяти smile3046.gif
С указателями надо осторожнее. И вообще непонятно, нафига тут нужны промежуточные буфера, сделайте
Код
flash char *adres2;
flash char *adres3;
и присваивайте им свои lcd* напрямую
Go to the top of the page
 
+Quote Post

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

 


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


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