problème variable 2octets et PIC
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

problème variable 2octets et PIC



  1. #1
    invite958adb57

    Cool problème variable 2octets et PIC


    ------

    Salut à tous, j'ai élaboré un programme compteur d'impulsion (décodage d'un récepteur de modélisme) qui incrémente une variable de 2 octet toutes les 10µs pendant que l'impulsion est à l'état haut. Seulement voilà, au bout de 256 incrémentations (au lieu de 65536) la variable repasse à 0, j'ai pourtant bien sélectionné deux octets lors de la déclaration de la variable. J'ai éssayé sur le simulateur (MPLAB) , il n'y a rien a faire.
    qqn a t'il déjà eu ce genre de problème?
    merci
    Louis

    -----

  2. #2
    invite2bb0502c

    Re : problème variable 2octets et PIC

    bonjour

    tu programmes en C ou asm

    bye

  3. #3
    invite958adb57

    Re : problème variable 2octets et PIC

    en assembleur
    Louis

  4. #4
    invite2bb0502c

    Re : problème variable 2octets et PIC

    Bonsoir je programme seulement
    en C

    mais les pic sont des 8 bits donc en asm il me semble que c'est normal

    bye

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

    Re : problème variable 2octets et PIC

    En effet, c'est tout à fait normal. Si tu veux gérer du 16 bits, il faut le faire toi même.

    Code:
    VAR	: 2 octets
    
    
    	Si (VAR == 256) Alors
    	 {
    	  VAR <- 0
    	  (VAR+1) <- (VAR+1) + 1
    	    Si ((VAR+1) == 256) Alors
    	     (VAR+1) <- 0
    	 }

  7. #6
    invitebf62768c

    Re : problème variable 2octets et PIC

    salut,
    il y a un problème dans ton code car VAR va de 0 à 255, donc 256 ca ne marche pas.
    Il faut, après l'incrémentation, tester la retenue (Carry).
    donc:
    Code:
    VAR <- VAR +1
    Si (Carry) Alors
       {
          VAR <- 0
          (VAR+1) <- (VAR+1) + 1
          Si (Carry) Alors
                {
    	     (VAR+1) <- 0
                }
       }
    je fais pas l'assembleur c'est plus clair comme ca

    @++

  8. #7
    invite958adb57

    Re : problème variable 2octets et PIC

    Donc si je comprned bien je suis obligé de passer par deux variables ou plus en fonction du nombre d'octets. Ca va pas être pratique sachant qu'à la base une fois que j'ai une valeur dans ma variable de 2 octets, je la décompose et j'affiche sa valeur sur 4 afficheur 7 segments. J'ai refais un petit programme qui incrémente une variable de 2 octets toutes les secondes et qui l'affiche sur 4 afficheurs 7 segments: après 255, la variable repasse à 0, donc je sais pas trop comment faire.
    Louis

  9. #8
    inviteb6d767d2

    Re : problème variable 2octets et PIC

    Salut
    ------

    Il faut effectivement travailler sur des variables de 2 octets.

    Genre


    variable : 2 ; poids fort/poids faible


    addition d'une valeur se trouvant dans W :

    addwf variable+1,f ; ajouter W au poids faible de variable
    btfsc STATUS,C ; tester si débordement
    incf variable,f ; oui, incrémenter poids fort

    C'est simple

    Pour afficher, il faut convertir la valeur hexa en valeur ascii. Il y a des routines toutes faites sur le site de Microchip.
    Si tu ne trouves pas, tu m'écris, j'en ai peut-être quelque part, et ces temps-ci je suis tellement surchargé que j'arrive à peine à jeter un oeil sur les forums.

    Une autre méthode est de faire directement l'addition sur 4 variables en ASCII ou en BCD. Ainsi, tu détectes le débordement des valeurs 0/9, et tu reportes sur la variable de poids plus fort. C'est un peu plus compliqué, mais l'avantage est que tu n'as plus besoin de routine de conversion.

    Un internaute sur ce forum pourra probablement t'expliquer comment faire

    A+
    Bigonoff

  10. #9
    invite958adb57

    Re : problème variable 2octets et PIC

    Merci Bigonoff (au fait ton cours est génial) pour ta réponse
    Sinon je viens de passer 2h à réécrire des routines: j'incrémente une première variable (1octet) et dès qu'elle repasse à 0, j'incrémente la 2eme variable (1 octet aussi). Je convertis les 2 variables en passant dans ma routine de sorte qu'il ne me reste plus que les valeurs des: unités,dizaines,centaines,mill iers et dix-milliers.
    J'ai modifié mon programme qui m'affiche la valeur de la variable sur 4 afficheurs 7 segments et cette fois ça marche (il compte bien de 0 à 9999).
    @+
    Louis

Discussions similaires

  1. [PIC] PORTB,VAR ? (choisir le no du port avec une variable)
    Par invitea516a87c dans le forum Électronique
    Réponses: 5
    Dernier message: 20/02/2010, 12h18
  2. Statistiques : lien entre variable binaire et variable continue
    Par invitecf228342 dans le forum Mathématiques du supérieur
    Réponses: 17
    Dernier message: 10/02/2010, 21h34
  3. Concatenation de variable pic 16F628
    Par inviteaa634380 dans le forum Électronique
    Réponses: 6
    Dernier message: 11/12/2006, 07h57
  4. [PIC] Sauvegarde de variable...
    Par invitef900c612 dans le forum Électronique
    Réponses: 20
    Dernier message: 06/06/2006, 13h38
  5. Incrémenter une variable avec un PIC
    Par invite67d96d45 dans le forum Électronique
    Réponses: 1
    Dernier message: 24/06/2003, 14h05
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...