Omarro Inserito: 11 dicembre 2004 Segnala Share Inserito: 11 dicembre 2004 Ciao,siccome sto facendo un orologio con il ds1629, come forse gia precedentemente avrete letto, ho bisogno di convertire un numero BINARIO o ESADECIMALE in BCD.Ho implimentato un menu che gira sul 16f876 e che visualizzo un lcd della hitachi, nel menu ci sono opzioni tipo imposta ora ecc ecc......siccome l'ora la faccio visualizzare in questo modo 24:00mi piacerebbe avere in un registro questo numeroOra = 0x24invece di Ora = 0x18come faccio?avete qualche routine già fatta? io uso CC5Xgrazie mille Link al commento Condividi su altri siti More sharing options...
Macbet Inserita: 12 dicembre 2004 Segnala Share Inserita: 12 dicembre 2004 Ora = 0x24invece di Ora = 0x18come faccio? Link al commento Condividi su altri siti More sharing options...
Omarro Inserita: 12 dicembre 2004 Autore Segnala Share Inserita: 12 dicembre 2004 Ti ringrazio, mi hai data qualche idea.....che ci devo sbattere la testa questo è sicuro!! :-)Ciaoo Link al commento Condividi su altri siti More sharing options...
Gabriele Corrieri Inserita: 12 dicembre 2004 Segnala Share Inserita: 12 dicembre 2004 (modificato) Ciaosemplicemente devi fare una conversione Bin>Dec N.ro Dec Bin 0 0000 0000 00000000 1 0000 0001 00000001 2 0000 0010 00000010 3 0000 0011 00000011 4 0000 0100 00000100 5 0000 0101 00000101 6 0000 0110 00000110 7 0000 0111 00000111 8 0000 1000 00001000 9 0000 1001 00001001 10 0001 0000 00001010 11 0001 0001 00001011 12 0001 0010 00001100 13 0001 0011 00001101 14 0001 0100 00001110 15 0001 0101 00001111 16 0001 0110 00010000 17 0001 0111 00010001 18 0001 1000 00010010 19 0001 1001 00010011 20 0010 0000 00010100 21 0010 0001 00010101 22 0010 0010 00010110 23 0010 0011 00010111 24 0010 0100 00011000 qui trovi un po' di codice in assembler http://www.renesas.com/media/products/mpum...ms/e74ref45.pdfCiao Modificato: 12 dicembre 2004 da Gabriele Corrieri Link al commento Condividi su altri siti More sharing options...
Macbet Inserita: 12 dicembre 2004 Segnala Share Inserita: 12 dicembre 2004 Ciao Gabriele,semplicemente devi fare una conversione Bin>Dec Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 12 dicembre 2004 Segnala Share Inserita: 12 dicembre 2004 Se devi convertire da esadecimale a decimale o BCD devi fare una routine di conversione; in pratica devi convertire la base di numerazione. Ora l'eadecimale ha come base 16, mentre il decimale ha come base.... dieci.Si definisce il limite del numero esadecimale da convertire, per esempio 0FFFFhex ==>65535d. arichi il numero Hex da convertire e cominci a confrontare: if Nhex > 10000 then A=Nhex / 10000; A = A * 10000; Nhex = Nhex - A ; if Nhex > 1000 then B = Nhex / 1000;.... ecosì fino a 10Poi si sommano A, B, C, D ed il resto che equivale alle unità; in questo modo hai il numero in decimale, se in vece devi presentare il numero in BCD su dei visualizzatori, eviti di moliplicare i risultati delle divisioni per 10000, 1000, 100 e 10 Link al commento Condividi su altri siti More sharing options...
Macbet Inserita: 12 dicembre 2004 Segnala Share Inserita: 12 dicembre 2004 Normalmente odio parlare di cose che non conosco quindi mi sono documentato, ho scaricato il datasheet del ds1629 è ho verificato che:nel DS1629 il CLOCK REGISTER FORMAT rilascia i dati in formato BCD!!! Quindi non c'è bisogno di fare nessuna conversione. L'unica cosa che devi fare è:Quando vai a fare il programma per il tuo micro devi ragionare in bcd non in binario o esadecimale cioè molto semplicemente se raggiungi in esadecimale 0Ah metti con una routine di controllo 10h (che corrisponde 10 in bcd a due cifre), 1Ah --> 20h e 25h-->00hIl risultato è che lavori in esadecimale (o binario tanto è la stessa cosa) ma ottieni valori in bcdRipeto, i valori letti dal ds1629 sono bcd, ESEMPIOVuoi fare una routine di cambio ora, hai 4 display e su ognuno è visualizzato un numerosono le 13:45 e vuoi cambiare la sola orametti il dato in 4 registri1 = reg13 = reg24 = reg35 = reg4Incrementa il reg2 = 4 e visualizza ---> 14:45 ma ti ricordo il famoso controllo: se invece l'ora è 19:45 un incremento di reg2 ti produce Ah quindi fai un semplice controllo che se incrementando hai una Ah devi mettere lo 0!=20:45Ciao a tuttiMacbet Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora