Цитата(Tcom @ Feb 10 2009, 23:55)

{0x01,0x2,0x3.....0xFF,myvar1,myvar2,myvar3,0xFF}
Если нет места для форматного вывода, можно использовать что-нить подобно тому, как это делалось в Паскале
Код
const unsigned char formatSTR[]="Current parameter %s is %d";
struct
{
void *stringPTR;
int *value;
} scratch_pad;
В Паскалевском варианте- функция formatstr() передавалась ссылка на форматную строку и на структуру, содержащую указатели на на объекты, значения которых надо выводить. При этом, спецификаторы формата у Вас могут быть попроще(без претензий на универсальность), например @1 @2 - порядковый номер, соответствующий нужному указателю
ЗЫ если непонятно изложил, позже пример дам
Вот. Выдрал
CODE
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <string.h>
#include <stdlib.h>
extern unsigned char fmtstr[];
typedef struct
{
int *field1;
int *field2;
//......
// int *fieldN;
} scratchpad_t;
#define MEMBERS sizeof(scrathcpad_t) / sizeof(field1)
typedef union
{
scratchpad_t formatted;
void * uniform[MEMBERS];
} outpad_t;
#define FORMAT_SYMBOL '@'
#define INT_WIDTH 10
/*............USAGE.........................*/
void fmtout(unsigned char *str, outpad_t *pad)
{
unsigned char prev = 0;
unsigned char curr = 0;
do
{
curr = pgm_read_byte(str++);if (!curr) break;
if(prev == FORMAT_SYMBOL)
{
unsigned char sout[INT_WIDTH]; memset(sout,' ',sizeof(sout));
uart_send_str(itoa(*(pad->uniform[(curr - '0')]),sout,10),INT_WIDTH);
} else uart_send_char(curr);
prev = curr;
} while (curr);
return;
}