Répondre à la discussion
Affichage des résultats 1 à 22 sur 22

resultat d'une conversion A/N



  1. #1
    solid_sneak06

    Question resultat d'une conversion A/N


    ------

    bonjour à tous,
    J'ai reussi à faire une conversion A/N avec mon pic 16F877,le resultat de ma conversion est dans mes deux registres ADRESH et ADRESL. Ce que je veux savoir c'est la nature ou le type du resultat,est ce que c'est un resultat binaire et il faut juste le convertir en decimale et apres je l'affiche sur mon ecran LCD? sinon c'est quoi et comment faire?plz
    et merci

    -----

  2. Publicité
  3. #2
    Jack
    Modérateur

    Re : resultat d'une conversion A/N

    Dans les systèmes numériques, µC entre entres, les données sont toujours constituées de 0 et de 1.

    Après, binaire, octal, décimal, hexadécimal sont des bases de numération qui expriment toutes la même quantité.

    Pour afficher cette valeur sur ton LCD, il va falloir utiliser des instructions qui manipulent ces bits ou octets afin de les représenter dans une base ou code que l'on peut comprendre.

    exemple: tu convertis ton octet en décimal, puis tu le convertis en un code 7 segments avant de l'afficher sur un afficheur 7 segments.

    A+

  4. #3
    solid_sneak06

    Unhappy Re : resultat d'une conversion A/N

    tout ce que je veux moi, c'est convertir le resultat de mes deux registres ADRESH et ADRESL en decimal. le resultat est sur 10 bits: les huit bits du poid faible sont sur le registre ADRESL et les deux qui restent sont dans le ADRESH...pour l'affichage sur l'ecran LCD et l'initialisation je sais comment faire.j'ai besoin de votre aide

  5. #4
    PA5CAL

    Re : resultat d'une conversion A/N

    Sans rentrer dans le détail du code (je ne sais pas ce que le 16F877 propose comme instruction) l'algorithme de conversion binaire->décimal repose sur suite de divisions par 10, dont on extrait les restes successifs.

    Si tu dois convertir la valeur positive A0 sur 10 bits de binaire en décimal, tu dois faire les opérations suivantes:
    - A1 = A0 divisé par 10 ($0A), reste dans B0
    - A2 = A1 divisé par 10 ($0A), reste dans B1
    - A3 = A2 divisé par 10 ($0A), reste dans B2
    A ce stade, A3 doit être égal à 0 ou 1 puisqu'il n'y avait que 10 bits au départ (A0<1024).
    Le résultat est A3 B2 B1 B0.
    Pour traiter les valeurs négatives, on teste et on change de signa avant la conversion.

    Application numérique: conversion de $0387.
    $0387/$0A = $005A reste $03
    $005A/$0A = $0009 reste $00
    $0009/$0A = $0000 reste $09
    Donc $0387 donne 0903 en décimal. CQFD.

  6. A voir en vidéo sur Futura
  7. #5
    solid_sneak06

    Re : resultat d'une conversion A/N

    merci pascal, mais la tu fais une conversion de l'hexa en decimal et en plus je crois pas que le pic fait une division!vraiment je panique la!!!!

  8. #6
    McFly

    Talking Aidez le le pauvre !!

    vraiment je panique la!!!!
    Allez binome accroche toi !!

  9. Publicité
  10. #7
    Jack
    Modérateur

    Re : resultat d'une conversion A/N

    Si tu programme en langage C ça ne devrait pas poser de problème.

    Si c'est en assembleur, il faut revenir aux bases de la division: faire une division consiste à faire des soustractions successives.

    A+

  11. #8
    solid_sneak06

    Re : resultat d'une conversion A/N

    Oui,je travaille en assembleur,ce que je dois faire c'est concaténer mes deux resultats que j'ai enregistré sur deux varyable x et y et je dois convertir en decimal.
    est ce que tu peux me donner plus d'explication sur la conersion en binaire - la soustraction-...

  12. #9
    Jack
    Modérateur

    Re : resultat d'une conversion A/N

    tu prends ton nombre de 10 bits et tu fais une boucle en lui retirant 10 jusqu'à ce que le résultat devienne négatif.

    Ajoute 1 au nombre d'itérations que tu auras effectuées et tu aura le résultat de la division.
    Ajoute 10 au nombre négatif que tu as obtenu à la dernière soustraction et tu auras le reste de la division.

    Par exemple 35/10 -> 100011/1010
    100011 - 1010 = 11001 1ère itération
    11001 - 1010 = 1111 2ème itération
    1111 - 1010 = 101 3ème itération
    101 - 1010 = négatif 4ème itération

    4-1 = 3
    le nombre négatif + 1010 = 101 -> 5

    3 dizaine et 5 unités ça fait bien 35 en décimal

    A+

  13. #10
    solid_sneak06

    Re : resultat d'une conversion A/N

    merci bcp jack,ca va bcp m'aider...j'ai juste une derniére question,est ce que t'as une idée comment on fait pour concaténer deux valeur?:
    ex '00' avec '11111111'--->'0011111111'

  14. #11
    Jack
    Modérateur

    Re : resultat d'une conversion A/N

    il ne me semble pas que cette famille de pic possède de registres 16 bits.

    Il te faudra donc travailler octet par octet.

    Mais es-tu sur d'avoir besoin d'une résolution de bits sur ton convertisseur.

    Si 8 bits suffisent, le problème devient plus simple.

    A+

  15. #12
    solid_sneak06

    Re : resultat d'une conversion A/N

    j'ai pas encore tester mon programme de conversion car car j'ai pas chez moi le materiel qu'il faut...mais je crois que comme tu as dit un resultat sur 8 bits et l'argement suffisant puisque moi je vais pas mesurer des grandes tensions et non plus les tension negatives.non?

  16. Publicité
  17. #13
    Jack
    Modérateur

    Re : resultat d'une conversion A/N

    c'est à toi de le savoir. Je ne connais pas ton cahier des charges.

    Je te laisse tomber pour ce soir

    Bon courage

    A+

  18. #14
    solid_sneak06

    Re : resultat d'une conversion A/N

    ok,merci jack

  19. #15
    McFly

    Re : resultat d'une conversion A/N

    Oui merci pour lui aussi Jack

  20. #16
    PA5CAL

    Re : resultat d'une conversion A/N

    Je répond même s'il semble qu'une autre solution plus simple soit trouvée.

    Citation Envoyé par solid_sneak06
    merci pascal, mais la tu fais une conversion de l'hexa en decimal (...)
    Non pas du tout. J'ai pris une valeur codée en binaire sur 10 bits, et j'en ai extrait quatre valeurs codées en binaire sur 4 bits représentant les quatre chiffres décimaux à afficher. Si j'ai écrit en hexa, c'est parce qu'il faut bien représenter les valeurs d'une manière ou d'une autre.

    Citation Envoyé par solid_sneak06
    (...) et en plus je crois pas que le pic fait une division!vraiment je panique la!!!!
    Ce n'est pas grave. Quand j'ai commencé à faire de l'informatique, peu de microprocesseurs faisaient les multiplications, et encore plus rares étaient ceux qui faisaient les divisions.

    Ce n'est pas très compliqué à coder.

    Les divisions binaires se font de la même manière qu'on nous a appris à l'école pour les divisions décimales, sauf que c'est encore plus simple, parce que chaque chiffre à trouver ne peut être que 1 ou 0. Il faut faire une comparaison pour savoir s'il y va 1 fois ou s'il y va 0 fois.

    Par exemple, si je veux diviser 29 par 5, ça donne (notation en base 2) :
    Code:
    11101|101
     10  |---- 
         |1 (111/101, il y a va 1 fois, reste 10)
    
    11101|101
     100 |---- 
     100 |10 (100/101, il y a va 0 fois, reste 100)
    
    11101|101
     100 |---- 
     1001|101 (1001/101, il y a va 1 fois, reste 100)
      100|
    Donc 29 (11101b) divisé par 5 (101b) égale 5 (101b), et il reste 4 (100b).
    Dernière modification par PA5CAL ; 20/05/2006 à 23h50.

  21. #17
    solid_sneak06

    Thumbs up Re : resultat d'une conversion A/N

    Oui Pascal,merci. J'ai bien compris ce quil faut faire mnt...et voici le sous programme de conversion que j'ai mi:
    Code:
    base_10 movlw	D'0'
    		movwf	cpt_1		; initialisation du compteur 1
    bcl1	movlw	B'1010'
    		incf	cpt_1,1     ; compteur 1
    		subwf	Uy	;Uy est la variable où j'ai mon resultat en binaire... on calcule les dizaines
    		btfsc	STATUS,C    ; 
    		goto	bcl1        ; on boucle
    		addwf	Uy          ;
    		movlw	D'0'        ;
    		movwf	cpt_2       ;
    bcl2	movlw	B'1'        ;
    		incf	cpt_2,1     ;compteur 2
    		subwf	Uy          ; on calcule les unités
    		btfss	STATUS,Z    ;
    		goto	bcl2        ; on boucle
    		movlw	D'9'
    		movwf	var         ; variable qui nous permet de reboucler 10 fois afin de calculer les dizaine cpt_2*10
    		movlw	cpt_1
    dizaine	addwf	cpt_1
    		decfsz	var
    		goto	dizaine
    		movlw	cpt_1		; on fait la somme des deux
    		addwf	cpt_2,resu  ; notre resultat final est dans resu
    		RETURN
    Et merci bcp les gars, vous etes forts et je vous felicite pour ce forum...

  22. #18
    McFly

    Cool Remerciements

    De rien binome ...
    t'es tranquil mnt c'est la fiesta pour toi !!

  23. Publicité
  24. #19
    solid_sneak06

    Re : Remerciements

    Citation Envoyé par McFly
    De rien binome ...
    t'es tranquil mnt c'est la fiesta pour toi !!
    binome! je parle avec les gens qui m'ont aidé pas avec toi

  25. #20
    PA5CAL

    Re : resultat d'une conversion A/N

    Citation Envoyé par solid_sneak06
    Code:
    (...)
    dizaine   addwf  cpt_1
              decfsz var
              goto	 dizaine
    (...)
    Je ne connais pas trop cet assembleur. Je ne vois pas comment on sort de la boucle.

  26. #21
    solid_sneak06

    Re : resultat d'une conversion A/N

    je crois que l'instruction "decfsz var" va decrementer ma variable que j'ai initialisé à 10 et une fois ma variable "var" arrive à 0 on saut l'instruction suivante...c'est bien ca,non?

  27. #22
    PA5CAL

    Re : resultat d'une conversion A/N

    ok. merci.

Discussions similaires

  1. Conversion Binaire(résultat conv AD) en décimal
    Par jorg1n dans le forum Électronique
    Réponses: 7
    Dernier message: 20/11/2007, 07h26
  2. Résultat conversion A/D sur PIC
    Par jorg1n dans le forum Électronique
    Réponses: 12
    Dernier message: 18/10/2007, 21h04
  3. recherche le résultat d'une suite
    Par nathas dans le forum Science ludique : la science en s'amusant
    Réponses: 0
    Dernier message: 27/07/2007, 14h15
  4. Résultat d'une biopsie
    Par jess88 dans le forum Santé et médecine générale
    Réponses: 1
    Dernier message: 25/02/2007, 19h25
  5. Programmation en C PIC et résultat conversion A/N
    Par smartise73 dans le forum Électronique
    Réponses: 3
    Dernier message: 17/05/2006, 15h57
Découvrez nos comparatifs produits sur l'informatique et les technologies.