SEG_POS[7, 5] =
{
{ 7, 18, 27, 35, 44 }, //позиции сегментов A из datasheet
{ 8, 19, 28, 36, 45 }, //позиции сегментов B из datasheet
{ 13, 20, 29, 38, 46 }, //позиции сегментов C из datasheet
{ 3, 14, 22, 30, 39 }, //позиции сегментов D из datasheet
{ 4, 15, 23, 32, 40 }, //позиции сегментов E из datasheet
{ 6, 17, 25, 34, 42 }, //позиции сегментов F из datasheet
{ 5, 16, 24, 33, 41 } //позиции сегментов G из datasheet
}
Conv(char Dig, char Code) //номер разряда, выводимая цифра
{
char n; //индекс номера разряда
char m; //маска сегмента
char s = Font[Code]; //таблица знакогенератора должна иметь ABC.. подряд
for(char i = 0; i < 7; i++)
{
n = (SEG_POS[i, Dig] - 1) / 8;
m = 1 << (SEG_POS[i, Dig] - 1) % 8
if(s & (1 << i)) SegCopy[n] | m;
else SegCopy[n] & ~m;
}
}