Сама функция
void WriteInd (byte Index, byte Position, char *str, ...)
{
byte j,
jj;
char buf [21];
va_list arg_ptr;
va_start (arg_ptr, str);
vsprintf (buf, str, arg_ptr);
va_end (arg_ptr);
switch (Index)
{
case 1 : WriteWh2004_code (0x80 + Position); break;
case 2 : WriteWh2004_code (0xC0 + Position); break;
case 3 : WriteWh2004_code (0x94 + Position); break;
case 4 : WriteWh2004_code (0xD4 + Position); break;
}
for (j = 0; buf[j]; j++)
{
jj = buf [j];
if (jj > 0xBF) jj = DDRAM[jj - 0xC0];
WriteWh2004_data (jj);
if (j > 15) break;
}
}
и ее вызов
WriteInd (2, 0, "%f", du);
если стек где почем - поменять! я тока с авр разбераюсь. А надо очень!