Selamlar,
8x8 karakterlerin tutulduğu bir lookup tablom var, program hafızasına yazılması için "const" olarak tanımladım, şu şekilde :
#include "graphic.h"
const unsigned char font1[] ={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // <Space>
0x18,0x3C,0x3C,0x18,0x18,0x00,0x18,0x00, // !
0x66,0x66,0x24,0x00,0x00,0x00,0x00,0x00, // "
0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // #
0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $
...
};
graphic.h dosyasının içeriğinde sadece main dosyasında kullabilmek için şu tanımlama var :
extern const unsigned char font1[];
istediğim karakterin ilgili byte'ına şu şekilde ulaşabiliyorum, örneğin a karakterinin istediğim byetına şu şekilde ulaşabilirken :
void KarakterTest(unsigned char *TestChar )
{
unsigned char istenenbyte=0;
*(font1 + istenenbyte + (65)*8)
}
şu şekilde ulaşamıyorum
void KarakterTest(unsigned char *TestChar )
{
unsigned char istenenbyte=5;
*(font1 + istenenbyte + (*TestChar)*8)
}
Belki saçma bir hata yapıyorum ama kafam yandı, kısır döngüye girdim. KarakterTest("abcde") şeklinde fonksiyonu çağırdığımda TestChar++ diyerek karakter arası dolaşırım, yukardaki şekilde de karakterlerin byteları arasında dolaşırım dedim ama olmuyor.
Font dizisi space-ascii 32 ile başlıyor.
İstediğiniz karaktere ulaşmak için ascii değerinden 32 çıkarmanız gerek.
Ulaştığınızı söylediğiniz şekilde, direkt A-ascii65 ile de çalışmaması gerek. Doğru değer okuyorsanız, bir şekilde birşeyler denk gelmiş.
oh be teşekkürler,
*(font1+istenenbyte+*TestChar*8-32*8)
bu şekilde düzenleyince çalıştı.