Libreria PCF8563

12 Anni 2 Mesi fa #1 da stainless
Libreria PCF8563 è stato creato da stainless
Ciao, sto leggendo la libreria per PCF8563 di Mauro e non ho capito come avviene la trasformazione da BCD a binario, in particolare la riga di codice
time[1] = (value & 0b00001111)+48;
preleva dalla variabile value la sola decina e la somma a +48 che in ASCII rappresenta lo 0, è corretta la mia interpretazione? Perchè dopo aver trasformato la variabile la si somma a 0?

Grazie a tutti

int main void{
while(1){
eat();
drink();
have_fun();
ride();
}
}

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • stainless
  • Premium Member
  • Premium Member
Di più
12 Anni 2 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Libreria PCF8563
Ciao,

Quello che hai osservato e' corretto.
In particolare la necessita' della conversione discende dal fatto che il dato finale, ovvero l'orario deve essere trasformato in stringa ASCII da poter visualizzare sul display LCD, che accetta appunto caratteri ASCII.
L'orario proveniente dal PCF8563 viene fornito in forma BCD, quindi in un byte ci sono due cifre che devono ognuna essere convertita in ASCII.

Per fare questo faccio uso delle maschere per mezzo della porta AND.
In particolare per prendere i quattro digit meno significativi faccio una AND con 0x0F che in binario e' 0b00001111.
Il valore che rimane e' ancora BCD. Supponiamo che sia 6, ovvero 0x06 o 0b00000110.
Questo valore non si puo' scrivere direttamente sul display visto che il carattere ASCII di 6 corrisponde a 54 decimale e non 6 decimale. Per fare la conversione basta sommare un offset di 48 che rappresenta il valore 0 in ASCII.
Sommare 48 permette dunque di trasformare il contenuto numerico BCD del registro in ASCII.

In modo analogo si fanno conversioni ASCII da maiuscola a minuscola, ovvero conoscendo la distanza tra i caratteri a e A all'interno della tabella ASCII.

Saluti,

Mauro
Ringraziano per il messaggio: stainless

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login