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 ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

conversion hexa->ascii 16bits
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#11 Message par Guest » dim. 20 déc. 2015 17:33

GÉRARD

Donne moi un bout de code si tu veux bien ou une explication de comment tu fais sur du BCD, par exemple 4083 en décimale se code sur 2 octets le 1er tu as 40 et le 2eme 83.pour l'envoyer au LCD

conversion hexa->ascii 16bits
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#12 Message par paulfjujo » dim. 20 déc. 2015 18:10

Code : Tout sélectionner

En pièce joint le désassemblage, le bra cent1+2 nous revoie bien à 0x194


+1 Exact !
j'ai tendance à oublier que le code est en memoire flash (WORD), OP code sur 12 ou 14 bits suivant les PICs
donc deplacement de 2 octets pour changer de ligne de code..
Avec un label , on ote le doute...
et encore on pourrait ecrire de façon bien pire : BRA $- x pas . (j'ai pas calculé x)

et si

Code : Tout sélectionner

BRA    $-10;
Modifié en dernier par paulfjujo le dim. 20 déc. 2015 18:39, modifié 1 fois.
Aide toi, le ciel ou FantasPic t'aidera

conversion hexa->ascii 16bits
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#13 Message par Jérémy » dim. 20 déc. 2015 18:14

Félicitation Paul tu viens de passer rank " amateur" avec ton 100iéme message dehors!!
C'est en faisant des erreurs, que l'on apprend le mieux !!!

conversion hexa->ascii 16bits
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#14 Message par Guest » dim. 20 déc. 2015 18:49

Oui, j'ai aussi regarde du coté de programme memory, et l'on vois bien les deux octets.

C'est un piège bien d'accord avec toi d’où, mon énorme sonnerie, c'est pourtant simple , un saut vers un label.Faut bien que j’en fasse une par jour :lol:
Allez pour clore je mets en pièce la program memory avec le curseur rouge sur MOVLW et opcode sur 2 octets 0X0EE8


A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.

conversion hexa->ascii 16bits
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#15 Message par Gérard » dim. 20 déc. 2015 20:32

maï a écrit :GÉRARD

Donne moi un bout de code si tu veux bien ou une explication de comment tu fais sur du BCD, par exemple 4083 en décimale se code sur 2 octets le 1er tu as 40 et le 2eme 83.pour l'envoyer au LCD


Ci-dessous, 2 lignes permettant d'écrire sur un LCD
CONSIGNE ET TEMPERATURE sont des float, dec2 indique que je ne souhaite afficher que 2 décimales.
Mon compilateur : http://www.protonbasic.co.uk/

Print At 1, 1, "C = ", Dec2 CONSIGNE
Print At 1, 7, " M = ",Dec2 TEMPERATURE
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

conversion hexa->ascii 16bits
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#16 Message par Guest » dim. 20 déc. 2015 21:52

bonsoir

c'est tout simplement une fonction ftoa de ton compilateur BASIC C'EST du flottant en ASCII et qui n'a rien a voir avec du BCD .

Le sujet du fil c'est une fonction ou un sous programme , tu l'as plus haut décortiqué car en ASM pas de fonction toute faite il transforme par exemple 0X3163 Nombre en Hexadécimale, contenu dans NBHEXH(31) ET NBHEXL(63) EN CARACTÈRE ASCII 49 50 54 52 51dans ASCII4..... ASCII0 que l'on envoi ensuite au LCD. Regarde dans une table ASCII et tu vas retrouver le chiffre 1 puis le 2 puis le 6 puis le 4 et enfin le 3 qui correspond bien a 12 643 ou a 0x3163en hexa

A+

conversion hexa->ascii 16bits
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#17 Message par Gérard » dim. 20 déc. 2015 23:08

Mais quel est l'intérêt de transformer un nombre (quel que soit son format, hex ou BCD) en ascii?
C'était ça ma question de départ.
Je n'ai donné qu'un exemple de ce que j'ai pu écrire sur un LCD.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

conversion hexa->ascii 16bits
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#18 Message par Guest » lun. 21 déc. 2015 09:56

Gérard a écrit :Mais quel est l'intérêt de transformer un nombre (quel que soit son format, hex ou BCD) en ascii?
C'était ça ma question de départ.


Pose toi la bonne question. Pourquoi lorsque je demande a ma fonction de m’écrire la température avec 2 chiffres après la virgule transforme un nombre flottant en du style, 24.50 sur afficheur ,car même si tu ne le vois pas c'est ce qui se passe une jolie conversion ,tout comme lorsque tu dis a ton LCD 1,7 la fonction positionnement du LCD va positionner le pointeur sur 1 ligne 7 eme caractère, tu ne le vois pas mais il y a bien un bout de code qui fait cela.

Maintenant si c'est uniquement perso je m'en fou c'est le compilo qui fait cela, On est pas du tout en phase.

A+

conversion hexa->ascii 16bits
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#19 Message par paulfjujo » lun. 21 déc. 2015 20:26

maï a écrit :
Gérard a écrit :Mais quel est l'intérêt de transformer un nombre (quel que soit son format, hex ou BCD) en ascii?
C'était ça ma question de départ.


L'ASCII est un vieux standard de representation de Texte et donc de nombre.
Tout simplement que c'est parceque c'est le seul moyen de VISUALISER la valeur d 'un nombre sur un terminal ou LCD classique
et suivant son format de stockage, qui de toute facon est binaire à la base, on doit le convertir en ascii
C'est une histoire de convention..

Sur un LCD Grafique, il faudra dessiner les caracteres.. à partir de tableaux definissant chaque caractere
par une matrice 8x8 , 5x8 ...

Si on veut afficher ce nombre sur des Afficheurs 7 segments .. c'est une autre histoire

Bref, il y a à boire et à manger .. tout n'est pas CARRE.
Visualiser un nombre ou valeur est une vue de l'esprit que chacun peut accomoder à sa sauce.

pour la majorité des cas:
entier signe .. IntToStr(nombre,texte) ex : N=1234 IntoStr(N,texte); LCD_Write_Text(1,1, txt);
entier non signé .. WordToStr(nombre,texte)
entier long LongToStr(nombre,texte)

nombre = 8 pour le visualier en ascii on rajoute 48 ..
..ETC...

sujet sans fond...
Aide toi, le ciel ou FantasPic t'aidera

conversion hexa->ascii 16bits
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#20 Message par Gérard » lun. 21 déc. 2015 20:59

J'ai encore des choses à apprendre.
Je crois avoir utilisé des conversions sans le savoir.
Merci à vous 2.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 50 invités