int UART_printf(const char *fmt, ...)
{
    char c;
    unsigned int *adx = (unsigned int*)(void*)&fmt + 1;
_loop:
    while((c = *fmt++) != '%')
    {
        if (c == '\0') return 0;
        UART_WriteByte(UART_DebugInstance, c);
    }
    c = *fmt++;
    if (c == 'd' || c == 'l')
    {
        printn(*adx, 10);
    }
    if (c == 'o' || c == 'x')
    {
        printn(*adx, c=='o'? 8:16 );
    }
    if (c == 's')
    {
        UART_putstr(UART_DebugInstance, (char*)*adx);
    }
    adx++;
    goto _loop;
    return 0;
}
Ejemplo n.º 2
0
int main(void)
{            
  char c;			// bufor na znak
  char s[UART_MAX_GETSTR+1];	// bufor na ³añcuch znaków
  s16 liczba=0x5555;		// liczba do testowania
  UART_init();			// inicjalizacja portu szeregowego
            
  PRINT("Test biblioteki UART .....\n\r");
  while(1)
  { 
    CLEAR();
    PRINT("Testowanie funkcji UART_putstr_P() i UART_putstr_E()");
    NEWLINE();
    UART_putstr_P(text_P);
    NEWLINE();
    UART_putstr_E(text_E);
    NEWLINE();

    NEWLINE();
    PRINT("Testowanie funkcji UART_putint()");
    NEWLINE();
    PRINT("Dwójkowo: ");
    UART_putint(liczba,2);
    NEWLINE();
    PRINT("Ósemkowo: ");
    UART_putint(liczba,8);
    NEWLINE();
    PRINT("Dziesiêtnie: ");
    UART_putint(liczba,10);
    NEWLINE();
    PRINT("Szesnaskowo: ");
    UART_putint(liczba,16);
    NEWLINE();
/*
    NEWLINE();
    PRINT("Testowanie funkcji UART_getchar() i UART_putchar()");
    NEWLINE();
    PRINT("Wyœlij cokolwiek z terminala, znak \"t\" koñczy...");
    NEWLINE();
    do
    {
      c=UART_getchar();		// pobierz znak z wejscia
      UART_putchar(c);		// zrób echo
    }
    while (c != 't');		// a¿ nie napotkasz znaku "t"
    NEWLINE();
*/
    PRINT("Testowanie funkcji UART_getstr() i UART_putstr()");
    NEWLINE();
    PRINT("Wyœlij cokolwiek z terminala i naciœnij ENTER");
    NEWLINE();
    PRINT("...napis \"koniec\" koñczy...");
    NEWLINE();
    do
    {
      UART_getstr(s);		// pobierz tekst z wejscia
      UART_putstr(s);		// zrób echo
      NEWLINE();
    }
    while (strncmp_P(s,PSTR("koniec"),6)!=0);	// a¿ nie napotkasz "koniec"
  }
}