Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
Algorithme de transformation binaire 16 bits en nombre ASCII
Bonjour tout le forum,
Suite à une discussion ouvert ICI je mets à disposition cette algorithme de transformation binaire 16 bits en nombre ASCII.
Cette routine assez original, viens entièrement de moi, sans savoir qu'il exister un algorithme pour ce genre de conversion.
Ce code fonctionne pour les Pic 18Fxxxx, le code ASM a été écrit avec jens file Editor 3.95
A+
Suite à une discussion ouvert ICI je mets à disposition cette algorithme de transformation binaire 16 bits en nombre ASCII.
Cette routine assez original, viens entièrement de moi, sans savoir qu'il exister un algorithme pour ce genre de conversion.
Ce code fonctionne pour les Pic 18Fxxxx, le code ASM a été écrit avec jens file Editor 3.95
Code : Tout sélectionner
CBLOCK H'20'
loop5 :1
temps :1
tmps :1
res16 :1
res8 :1
unité :1
dizaine :1
centaine :1
millième :1
dix_millième :1
ENDC
;************************************* "conversion 16 bits" ************************************
conversion_ascii
clrf unité
clrf dizaine
clrf centaine
clrf millième
clrf dix_millième
; "16 bits"
b16_7
btfss res16,7
bra b16_6
movlw D'3' ; 32768
addwf dix_millième,F
movlw D'2' ; 2768
addwf millième,F
movlw D'7' ; 768
addwf centaine,F
movlw D'6' ; 68
addwf dizaine,F
movlw D'8' ; 8
addwf unité,F
b16_6
btfss res16,6
bra b16_5
incf dix_millième,F
movlw D'6' ; 6384
addwf millième,F
movlw D'3' ; 384
addwf centaine,F
movlw D'8' ; 84
addwf dizaine,F
movlw D'4' ; 4
addwf unité,F
b16_5
btfss res16,5
bra b16_4
movlw D'8' ; 8192
addwf millième,F
incf centaine,F ; 192
movlw D'9' ; 92
addwf dizaine,F
movlw D'2' ; 2
addwf unité,F
b16_4
btfss res16,4
bra b16_3
movlw D'4' ; 4096
addwf millième,F ; 096
movlw D'9' ; 96
addwf dizaine,F
movlw D'6' ; 6
addwf unité,F
b16_3
btfss res16,3
bra b16_2
movlw D'2' ; 2048
addwf millième,F ; 048
movlw D'4' ; 48
addwf dizaine,F ;
movlw D'8' ; 8
addwf unité,F
b16_2
btfss res16,2
bra b16_1
incf millième,F ; 1024
movlw D'2' ; 024
addwf dizaine,F ; 24
movlw D'4' ; 4
addwf unité,F
b16_1
btfss res16,1
bra b16_0
movlw D'5'
addwf centaine,F ; 512
incf dizaine,F ; 12
movlw D'2' ; 2
addwf unité,F
b16_0
btfss res16,0
bra b8_7
movlw D'2' ; 256
addwf centaine,F
movlw D'5' ; 56
addwf dizaine,F
movlw D'6' ; 6
addwf unité,F
;***********************************************************************************************
; "8 bits"
b8_7
btfss res8,7
bra b8_6
incf centaine,F ; 128
movlw D'2' ;
addwf dizaine,F ; 28
movlw D'8' ;
addwf unité,F ; 8
b8_6
btfss res8,6
bra b8_5
movlw D'6' ; 64
addwf dizaine,F
movlw D'4' ; 4
addwf unité,F
b8_5
btfss res8,5
bra b8_4
movlw D'3' ; 32
addwf dizaine,F
movlw D'2' ; 2
addwf unité,F
b8_4
btfss res8,4
bra b8_3
movlw D'1' ; 16
addwf dizaine,F
movlw D'6' ; 6
addwf unité,F
b8_3
movlw B'00001111' ; 8, 4, 2, 1
andwf res8,W
addwf unité,F
;***********************************************************************************************
;***********************************************************************************************
;***********************************************************************************************
movlw D'5' ; 5 variables à traiter
movwf loop5
lfsr FSR0,unité ; pointer à l'adresse de la variable "unité"
tr0
movf INDF0,W ; récupérer la valeur dans W
movwf tmps ; transmettre dans la variable "tmps"
incf FSR0L,F ; variable suivante
movf INDF0,W ; récupérer la valeur dans W
movwf temps ; transmettre dans la variable "temps"
;***********************************************************************************************
tr1
movf tmps,W
sublw D'10' ;
btfsc STATUS,Z ;
bra tr2 ;
btfss STATUS,C ;
bra tr2 ;
bra tr3 ;
tr2
movlw D'10' ;
subwf tmps,F ;
incf temps,F ;
bra tr1
;***********************************************************************************************
tr3
movf temps,W
movwf INDF0 ; nouvelle valeur à cette adresse
decf FSR0L,F ;
movf tmps,W ;
movwf INDF0 ; nouvelle valeur à cette adresse
movlw D'48' ; convertir en format ASCII
addwf INDF0,F
incf FSR0L,F ; variable suivante
decfsz loop5,F ;
bra tr0 ;
return
A+
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Bing [Bot] et 46 invités