Ciao, se non ricordo male, i valori vengono restituiti in BCD. il che significa che il valore esadecimale 0x16 non identifica il valore decimale 10 ma identifica il valore decimale 16.
nei byte codificati in BCD, i 4 bit alti identificano le decine, con valore da 0x00 a 0x90, e i 4 bit bassi identificano le unità. con valore da 0x00 a 0x09.
per scrivere il valore sul display ti conviene scrivere prima il valore delle decine e poi il valore delle unità. dovrebbe essere cosi:
Code:
unsinged char seconds = 0;
seconds = RTCC_get_time_seconds();
LCD_write_integer (seconds >>4, 1, ZERO_CLEANING_ON);
LCD_write_integer (seconds & 0x0F, 1, ZERO_CLEANING_ON);
ovviamente la stessa cosa vale se vuoi salvare l'orario nel DS1337: se vuoi scrivere le ore 10:30 devi inviare per le ore il valore esadecimale 0x10 e per i minuti il valore 0x30