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

 
 
> Передать массив в функцию, Как??
Kir85
сообщение Oct 25 2009, 14:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 24-05-09
Из: Нижний Новгород
Пользователь №: 49 495



Здравствуйте. Есть такой код
Код
......


Вопрос. Как передать в функцию массив? делаю так...
Код
void paint(void logo){
  char    p;//Номер текущей страницы индикатора
  char    c;//Позиция по горизонтали выводимого байта
    for(p=0; p<4; p++) {//Цикл по всем 4-м страницам индикатора
        WriteCode(p|0xB8);//Установка текущей страницы для обоих кристаллов индикатора
        WriteCode(0x00);//Установка текущего адреса для записи данных в 0
        for(c=0; c<61; c++) {//Цикл вывода данных в левую половину индикатора
            WriteDataL(logo);//Вывод очередного байта в индикатор
        }
        for(c=61; c<122; c++) {//Цикл вывода данных в правую половину индикатора
            WriteDataR(logo);//Вывод очередного байта в индикатор
        }
    }
}

пишет что "Error[Pe526]: a parameter may not have void type G:\AVR_CODE\mega8\iar\MT-12232B\main.cpp 155
"
Причина редактирования: Удален графоманский исходник

Прикрепленные файлы
Прикрепленный файл  mt_12232b.rar ( 3.25 килобайт ) Кол-во скачиваний: 13
 


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kir85
сообщение Oct 26 2009, 06:12
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 60
Регистрация: 24-05-09
Из: Нижний Новгород
Пользователь №: 49 495



Разобрался. Может кому то пригодится...
массив...
Код
__flash char Logo122_1[4][122]={...}

функция...
Код
void paint_1(__flash char logo[4][122]){
  char    p;//Номер текущей страницы индикатора
  char    c;//Позиция по горизонтали выводимого байта
    for(p=0; p<4; p++) {//Цикл по всем 4-м страницам индикатора
        WriteCode(p|0xB8);//Установка текущей страницы для обоих кристаллов индикатора
        WriteCode(0x00);//Установка текущего адреса для записи данных в 0
        for(c=0; c<61; c++) {//Цикл вывода данных в левую половину индикатора
            WriteDataL(logo[p][c]);//Вывод очередного байта в индикатор
        }
        for(c=61; c<122; c++) {//Цикл вывода данных в правую половину индикатора
            WriteDataR(logo[p][c]);//Вывод очередного байта в индикатор
        }
    }
}

вызов функции...
Код
paint_1(Logo122_1);


--------------------
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Oct 26 2009, 08:54
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Жаль модератор удалил код из поста #8 приняв его за чрезмерное цитирование.
Привожу в кратце что там должно быть чтобы передать массив через указатель

Код
__flash char Logo122_1[4][122]={...}

void paint_1(char __flash  *logo)
{
......................................................
        for(c=0; c<61; c++) {//Цикл вывода данных в левую половину индикатора
            WriteDataL(*logo++);//Вывод очередного байта в индикатор
        }
...........................................................
}
вызов функции...
paint_1(&Logo122_1[0][0]);
Go to the top of the page
 
+Quote Post



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

 


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


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