MBedder, терминатор (18.02.2016 00:28 - 00:39, просмотров: 143) ответил General на Дайте совет. Хочу чб заставку (несколько кадров подряд) на маленьком ЖКИ 68x64. Предложите столбовой путь преобразования GIF или BMP картинки в код программы.
В ассемблере GCC есть замечательная директива .incbin, позволяющая поместить бинарный файл прямо в секцию кода. Вот как я с ее помощью вывожу 4-х битный серый BMP 256х64 на OLED-дисплей 256х64 (3 строчки на АСМ, остальное на С): logo.h:
#ifndef LOGO_H
#define LOGO_H
#include "global.h"
#include "ssd1322.h"
#include "Graphics/Primitive.h"
#include "Graphics/DisplayDriver.h"
#define LOGO_COLOR GRAY008
__attribute__((section(".romdata"), space(prog) )) extern FLASH_BYTE img_logo[];
extern void PutLogo4BPP(FLASH_BYTE *);
#endif // LOGO_H
logo.c:
#include "logo.h"
asm (
".global _img_logo \n"
"_img_logo: \n"
".incbin \"logo4BPP.bmp\""
);
void PutLogo4BPP(FLASH_BYTE *image) {
FLASH_BYTE *flashAddress = image + image[10]; // Move pointer to a bitmap 1st byte
SetColumn(0,(256 >> 2)-1); // Display controller Set_Column_Address command
SetRow(0,0 + 64); // Display controller Set_Row_Address command
SetWriteRAM(); // Display controller RAM_Write_Enable command
s16 x, y;
for(y=63; y>=0; --y) {
flashAddress = image + image[10] + 256/2*y;
for(x=0; x<256/2; x++) {
DeviceWrite(*flashAddress); // Write a byte from Flash to display controller's RAM
flashAddress++;
}
}
}