g_max Inserito: 20 aprile 2006 Segnala Share Inserito: 20 aprile 2006 Buongiorno a tutti,Avrei bisogno di una routine in assembler per PIC16 che faccia la conversioneda 3 digit ASCII a 2 byte in BINARIO.Accetto link o qualsiasi altro suggerimento.Grazie Massimiliano. Link al commento Condividi su altri siti More sharing options...
dlgcom Inserita: 20 aprile 2006 Segnala Share Inserita: 20 aprile 2006 Dovresti spiegare un po meglio il problema .cosi come lo hai descritto non penso che si possa fare .I caratteri ascii standard , cioe senza quelli estesi sono 128 ovvero 7 bit3 digit sono 21 bit e non li puoi memorizzare in 2 byte che sono 16 bit.Se poi vuoi usare la versione estesa sono 256 caratteri ovvero 8 biy , qindi ci vogliono 3 byte per forza.A meno che tu non vuoi una routine di compressione... Link al commento Condividi su altri siti More sharing options...
accacca Inserita: 20 aprile 2006 Segnala Share Inserita: 20 aprile 2006 Credo che g_max intenda la conversione ASCII-binario ad esempio "999" in 0x3E7Purtroppo non conosco l'asm del PIC prò posso darti qualche idea1.- I numeri ASCII hanno codice esadecimale 0x30...0x39 (I quattro bit bassi corrispondon alla cifra in binario)esempio '1' --> 0x31 il nibble basso 0x01. Quindi prima cosa basta fare and con maschera 0x0F di ogni cifra per ottenere le cifre in binario.2.- Se il numero è formato dai caratteri "xyz" ldopo l'operazione di and lo converti in binario con la formula (((x*10)+y)*10)+zfacile a drisi più complicato a farsi.Qui però non conosco asm e non so se il PIC ha l'istruzione di moltiplicazione.Se non c'è potresti usare solo le istruzioni di shift sapendo che 10 = 8+2 x*10 = x*8 + x*2 cioè x shift 3 volte + x shift 1 volta. Ovviamente shift di un valore a 16 bit altrimenti ti perdi il byte alto del numero. In pratica "shifti" una volta sommi al risultato poi shift altre due volte e somma al risultato. E' molto semplice da fare come loop sul numero di cifre che ti servono. Link al commento Condividi su altri siti More sharing options...
g_max Inserita: 20 aprile 2006 Autore Segnala Share Inserita: 20 aprile 2006 Grazie per aver risposto.Mi spiego meglio:leggo dalla seriale RS232 tre caratteri ascii numerici da 0 a 999,una volta memorizzati nel pic devo dividerli con un numero fisso (5) poi li devo visualizzare su un display alfanumerico LCD.Quindi da ascii li devo convertire in binario, faccio la divisione il risultato ottenuto (in binario)lo riconverto in ascii e lo invio al display.Spero di essermi spiegato meglio.Grazie a chiunque possa aiutarmiSalutiMassimiliano. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 20 aprile 2006 Segnala Share Inserita: 20 aprile 2006 3 cifre ASCII ==> 999 se si usano solo i numeri decimali. In questo caso la conversione è concettualmente semplice, anche se un poco macchinosa.1 - ad ogni cifra sottrai 30h così avrai il valore binario della cifra (30h == 0, 39h == 9)2 - poi moltiplichi per cento le centinaia, per dieci le decine e sommi tra loro i risultati, al totale devi aggiungere il valore delle unità ed hai finito.Bhe, poi se vuoi anche il codice asm te lo devi scrivere 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