begin process at 2008 09 06 09:33:04
1 237 670 membres
67 nouveaux aujourd'hui
14 313 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : besoin d'aide pour une conversion ascii/hexa en assembleur [ Archives / Les PIC ] (MTHOMAS)

besoin d'aide pour une conversion ascii/hexa en assembleur le 09/01/2005 02:03:08

MTHOMAS

Salut,

Je voudrais faire une conversion Ascii vers hexa en assembleur (pic 16F630):
 le paramètre d'entrée (déposé dans w) est un nombre hexadecimal codé
en ascii, le parametre de sortie (w egalement) est ce même nombre codé
en hexadecimal.

Ascii:  $30  -  $31  -  $32 ....... $45  - $46
hexa:   0      -    1     -    2 ........   E    -   F


Je n'ai pas d'idée pour ce programme, un coup de main ne serait pas de refus.

merci d'avance


Re : besoin d'aide pour une conversion ascii/hexa en assembleur le 09/01/2005 12:35:57

rylryl
Salut Mr MTHOMAS

si <=9   (0..9)
addlw   0x30            = $30 = "0"
movwf   tonASCII    pour 0...9

et si >9 (A..F)
addlw   0x41            = $41 = "A"
movwf   tonASCII    pour A..F

a+
ryl...

Re : besoin d'aide pour une conversion ascii/hexa en assembleur le 09/01/2005 23:21:59

MTHOMAS
Salut,

Merci pour le prog, mais comment faire un "si" en assembleur ?
Tu utilises Btsfcs sur chaques bits?

A+

Re : besoin d'aide pour une conversion ascii/hexa en assembleur le 10/01/2005 00:23:11

redwings


n'hesitez pas à me mailer red.wings@voila.fr
salut, j'ai depose un programme complet, où on peut afficher la table ascii complete et en code hexadecimal
clique sur mon profil puis xx sources sur tout cs et tu trouvera

Re : besoin d'aide pour une conversion ascii/hexa en assembleur le 10/01/2005 05:38:02

rylryl

Je ne sais pas si j'ai bien compris mais bon.!.!
et comme ça:

;;Attention ! sans tester si ascii entrant compris
entre h30..h39=0..9 , h41..h46=A..F.!
 
 
    movfw MonASCII        ; ton w entrant ASCII
    sublw   0x39                 ; test si > h39(9)
    btfss   STATUS,C        ; alors forcement tranche (h41..h46=A..F)
    goto    conv_AF           ; aller vers tranche (h41..h46=A..F)
conv_09     
    movfw   MonASCII     ; si ok ressort la val de ton w entrant ASCII 
    xorlw   0x30                 ; soustraire h30 pour correspond.. 
                                      ;(h30=0 ,h31=1 ...h39=9)
    movwf   MonHEX        ; et le placer dans ton w sortant
    goto    fini
    
conv_AF    
    movfw   MonASCII     ; ressort la val de ton w entrant ASCII 
    xorlw   0x41                  ; soustraire h41 pour correspond..
                                        ;(h41=A ,h42=B ...h46=F)
    movwf   MonHEX        ; et le placer dans ton w sortant
    ;goto    fini                     ;
fini        

scuse si je suis a cotés!
ryl...


Re : besoin d'aide pour une conversion ascii/hexa en assembleur le 11/01/2005 05:00:06

phenojeff

Si jai bien compris un ascii en hex
;*****************************************************************************
;                        CONVERSION ASCII VERS HEXA                          *
;*****************************************************************************
;-----------------------------------------------------------------------------
; tranforme les digits contenu dans car1 et car2 en 1 nombre hexa
; réponse contenu dans car2      EXEMPLE    envoi de  41 en ascii -> 0x41 
;-----------------------------------------------------------------------------
ashex
   ; convertir premier digit
   ; -----------------------
 movlw -0x07  ; écart entre lettre et chiffre
 btfsc car1,6 ; tester si code ASCII = 4x
 addwf car1,f ; oui, soustraire 7 du code ASCII
 movlw -0x30  ; 30 à soustraire
 addwf car1,f ; obtenir valeur

   ; convertir second digit
   ; ----------------------
 movlw -0x07  ; écart entre lettre et chiffre
 btfsc car2,6 ; tester si code ASCII = 4x
 addwf car2,f ; oui, soustraire 7 du code ASCII
 movlw -0x30  ; 30 à soustraire
 addwf car2,f ; obtenir valeur

   ; concaténation
   ; -------------
 swapf car1,w ; charger digit fort swappé
 iorwf car2,f ; ajouter au digit faible
 RETURN  ; et fin
a++


Re : besoin d'aide pour une conversion ascii/hexa en assembleur le 11/01/2005 19:28:57

MTHOMAS
En regardant tout le monde, j'ai fait ca:
Ca peut marcher ?

HEXA   EQU   $21
ASCII   EQU   $20

MOVWF ASCII ; w dans ascii
BTFSC ASCII,6  ; test le bit 6
CALL CONVAàF  ;  si le bit 6 = 1
CALL CONV0à9  ; si bit 6 = 0

______________________________________
CONV0à9

SUBW 0x30  ;  (w) - 0x30 dans w
MOVWF HEXA   ;  w dans hexa
RETURN
_______________________________________
CONVAàF

ANDLW 0x0F  ;    (w) ET 0x0F dans W
ADDLW 0x09 ;  (W)  +  0x09   dans W
MOVWF HEXA  ;   W dans hexa
RETURN


A+


Re : besoin d'aide pour une conversion ascii/hexa en assembleur le 11/01/2005 20:13:07

rylryl
slu.
Non, pas bon deja  a cause des "call" et pour d'autres raisons.
le coup du test bit6 lui par contre est valable.
La methode de Mr phenojeff est plus courte (mieux) mais il a groupé deux ascii ,sert toi de l'une de ses routines de conversion.
a+
ryl...

Re : besoin d'aide pour une conversion ascii/hexa en assembleur le 11/01/2005 21:15:42

Classé sous : aide, conversion, ascii, assembleur, hexa

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS