Форум myROBOT.ru » Шаг за шагом » Программирование микроконтроллеров » Как передать двумерный массив HiTech PICC

Страниц (1): [1]
 

1. PupaJr - 12 Апреля, 2018 - 14:01:02 - перейти к сообщению
Доброго дня.
HT PICC18 9.83, MPLAB8.87, PIC18F25K22.
Для вывода изображений на экран LCD используется стандартная процедура перебора колонок и строк 64х64. В соответствии с этим созданы 2хмерные массивы изображений со своими названиями но одинакового размера - точно под экран LCD.
При изменении ситуации надо выдать ту или иную картинку на экран.
В идеале так:
CODE:

Const char Ekran1 [64][64]
{ {0x00,........0x63} // 1 строка
.....
{0x00,........} // 64 cтрока
};
Const char Ekran2 [64][64]
{ {0x00,........0x63} // 1 строка битовых данных
.....
{0x00,........} // 64 cтрока
};
WriteLCD(Ekran1); // выдали первый экран
DelaySec(3); // пауза
WriteLCD(Ekran2); // выдали второй экран
DelaySec(3);
....
....
....

Процедура вывода:
CODE:

for(p=0; p<8; p++) //Цикл по всем 8-ми страницам индикатора
{
WriteCode6464(p|0xB8);//Установка текущей страницы
WriteCode6464(0x40);//Установка текущего адреса для записи данных в 0
for(c=0; c<64; c++) //Цикл вывода данных
{
WriteData6464(Ekran1[p][c]);//Вывод очередного байта в индикатор
};
};

Как можно это сделать? Понимаю что через указатели - но не соображу... Грустный
2. Predator - 12 Апреля, 2018 - 15:14:59 - перейти к сообщению
как-то так
CODE:

char* pmass;
pmass=&Ekran1

WriteLCD(pmass);


а вы уверены, что хотите отдать 32k памяти под прорисовку 8-ми экранов?
3. PupaJr - 12 Апреля, 2018 - 15:28:12 - перейти к сообщению
Спасибо.
Я получу указатель, передам его, а как принять его ??
и
CODE:
pmass=&Ekran1
без указания размерности???
Как в процедуре
CODE:
WriteLCD

мне брать данные 2х мерные с указателя? - последовательно перечисляя их?
64х64 это биты Улыбка, ну и не важно на данный момент.
У меня есть на плате место под внешнюю епромку Улыбка
4. Predator - 12 Апреля, 2018 - 15:33:23 - перейти к сообщению
CODE:

char Ekran1 [64][64]

это байты
дальше в переменной pmass будет адрес первого элемента размером char (объявлено char* pmass)

CODE:

void WriteLCD( char* adr00)
{
char byte00, byte 01;
adr01=adr00+1;
byte00=*adr00;
byte01=*adr01;
}