Vai al contenuto
PLC Forum


Conversione Da Ascii A Binario Per Pic - Conversione da ASCII a BINARIO per pic


g_max

Messaggi consigliati

Buongiorno a tutti,

Avrei bisogno di una routine in assembler per PIC16 che faccia la conversione

da 3 digit ASCII a 2 byte in BINARIO.

Accetto link o qualsiasi altro suggerimento.

Grazie

Massimiliano.

Link al commento
Condividi su altri siti


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 bit

3 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

Credo che g_max intenda la conversione ASCII-binario ad esempio "999" in 0x3E7

Purtroppo non conosco l'asm del PIC prò posso darti qualche idea

1.- 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)+z

facile 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

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 aiutarmi

Saluti

Massimiliano.

Link al commento
Condividi su altri siti

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 :rolleyes:

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...