Overloading della printf

In C e quindi indipentemente dal uC utilizzato esiste la possibilità, potentissima, di effettaure un overloading delle funzioni.
L'overloading o sovraccarico consente di riscrivere determinate funzioni del C per un particolare dispositivo e di poterle quindi utilizzare programmando il dispositivo come se si stesse scrivendo lo stesso programma per lo standard input output.
In parole povere esiste la possibilità di utilizzare, per esempio la printf, per scrivere su un display lcd, così come se stessimo scrivendo sul video del pc.
La stessa printf può essere utilizzata per scrivere sulla porta seriale e su una infinità di altri dispositivi.
Per fare questo occorre sapere che la printf per funzionare si appoggia su un altra funzione base che è la putch.
Non ci resta quindi che modificare la sola putch affinchè scriva sul display lcd piuttosto che sulla seriale ed il gioco è fatto.
Per fare un esempio vediamo come si possono modificare putch() e getch() per la trasmissione seriale :



//includere la stdio.h

void
putch(unsigned char byte)
{
/* output one byte */
while(!TXIF) /* set when register is empty */
continue;
TXREG = byte;
}

unsigned char
getch() {
/* retrieve one byte */
while(!RCIF) /* set when register is not empty */
continue;
return RCREG;
}

unsigned char
getche(void)
{
unsigned char c;
putch(c = getch());
return c;
}


Fatto questo non ci resta che utilizzare la printf per scrivere qualsiasi cosa sulla porta serialeo la scanf per leggere i dati che ci vengono trasmessi e salvarli dentro a delle stringhe.


Stampa la pagina