Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: avr-gcc -> cvavr
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Edward_tlt
Занялся перевести под CVAVR библиотеку для дисплея на T6963C original
Вроде всё получилось, но вот
Код
//-------------------------------------------------------------------------------------------------
//
// Displays bitmap from program memory
//
//-------------------------------------------------------------------------------------------------
void GLCD_Bitmap(unsigned char * bitmap, unsigned char x, unsigned char y, unsigned char width, unsigned char height)
{
unsigned char i, j;

for(j = 0; j < height; j++)
{
GLCD_GraphicGoTo(x, y + j);
for(i = 0; i < width/GLCD_FONT_WIDTH; i++)
  {
  GLCD_WriteDisplayData(pgm_read_byte(bitmap + i + (GLCD_GRAPHIC_AREA * j)));     
  }
}
}

не пойму как сделать в CVAVR... Как правильно заменить pgm_read_byte?
Палыч
Цитата(Edward_tlt @ Jan 19 2009, 00:34) *
Как правильно заменить pgm_read_byte?
Имхо, в CVAVR эквивалента этой функции - нет. Следует записать:
void GLCD_Bitmap(unsigned char flash* bitmap, unsigned char x, unsigned char y, unsigned char width, unsigned char height)
и
GLCD_WriteDisplayData(*(bitmap + i + (GLCD_GRAPHIC_AREA * j)));
WHALE
если я правильно понял,то попробуйте так:
CODE

flash char GLCD_GRAPHIC_AREA;
....

for(i = 0;width/GLCD_FONT_WIDTH; i++)
{
GLCD_WriteDisplayData(bitmap + i + (GLCD_GRAPHIC_AREA * j));
}
Палыч
Цитата(WHALE @ Jan 19 2009, 15:20) *
если я правильно понял,то попробуйте так
По-моему, Вы поняли не правильно. GLCD_GRAPHIC_AREA - это константа (то ли высота, то ли ширина экрана), скорее всего, определённая через #define... Функция pgm_read_byte возвращает байт из флэш, находящийся по адресу аргумента. По-этому, так как Вы предложили - работать не будет.
Edward_tlt
Цитата(Палыч @ Jan 19 2009, 15:17) *
Имхо, в CVAVR эквивалента этой функции - нет. Следует записать:
void GLCD_Bitmap(unsigned char flash* bitmap, unsigned char x, unsigned char y, unsigned char width, unsigned char height)
и
GLCD_WriteDisplayData(*(bitmap + i + (GLCD_GRAPHIC_AREA * j)));

Сегодня день рождения у жены, а завтра обязательно проверю и отпишусь. smile.gif
Edward_tlt
Цитата(Палыч @ Jan 19 2009, 15:17) *
Имхо, в CVAVR эквивалента этой функции - нет. Следует записать:
void GLCD_Bitmap(unsigned char flash* bitmap, unsigned char x, unsigned char y, unsigned char width, unsigned char height)
и
GLCD_WriteDisplayData(*(bitmap + i + (GLCD_GRAPHIC_AREA * j)));

Огромное спасибо! Эта конструкция замечательно работает!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.