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

projet PIC 16f84 mesure de temps



  1. #1
    fred GIM

    projet PIC 16f84 mesure de temps

    Bonjours,

    Je suis étudiant en DUT GIM. Et j'ai un projet qui consiste à créer un programme permettant de mesurer le temps entre 2 fronts montants d'un signal carré. J'ai a ma disposition un microcontrôleur 16f84 avec un quartz de 4Mhz, j'utilise comme assembleur MPLAB.

    Je souhaite mesurer le temps entre 2 impulsions sur la broche RB0, et je suppose que ce temps soit tel que plusieurs débordements du tmr0 puissent avoir lieu.

    Je pense suivre la méthode suivante :

    - A la première impulsion sur RB0, on lance le timer0 en mode intéruption
    - A chaque intéruption de tmr0, on incrémente une variable
    - A la seconde interruption de RB0, on lit tmr0 et on arréte les interruptions
    - le temps total sera donc (256*variable)+tmr0


    je suis novice dans la programmation et ne sais pas par quel bout commencer, donc je vous remercie d'avance si quelqu'un peut me renseigner .

    -----


  2. #2
    Gérard

    Re : projet PIC 16f84 mesure de temps

    http://www.abcelectronique.com/bigonoff/
    Voila le bon bout pour commencer.

  3. #3
    fred GIM

    Re : projet PIC 16f84 mesure de temps

    Je te remerci pour ce lien

  4. #4
    fred GIM

    Re : projet PIC 16f84 mesure de temps

    Voila le programme que j'ai réussie a faire. Mais j'ai un souci pour l'affichage car je dois sortir du registre W les bits une par une pour les connecté a 8 leds. Je pense utiliser une fonction ET (andlw) et ensuite faire une rotation pour chaque bits.

    Je ne vois pas trop comment faire, ou s'il existe une solution plus simple????

    Merci d'avance pour votre aide

    ;***************************** ********
    ; timer *
    ;***************************** ********

    #include<p16f84.inc>
    org 0
    bsf STATUS,RP0 ; passer en bank 1
    movlw '00000001' ; mettre '00000001' dans W
    movwf TRISB ; mettre W dans TRISB
    bsf TRISA,4 ; RA4 en entrée
    bcf TRISA,0 ; RA0 en sortie
    bcf STATUS,RP0



    ;***************************** ********
    ; initialisations *
    ;***************************** ********


    init
    clrf PORTA ; sortie de portA à 0
    clrf PORTB ; sortie de portB à 0
    clrf EEADR ; permet de diminuer la consommation





    ;***************************** ********
    ; registres *
    ;***************************** ********



    bsf INTCON,7 ; mettre GIE à 1
    bsf INTCON,5 ; mettre TOIE à 1
    bcf OPTION,5 ; mettre TOCS à 0
    bsf OPTION,4 ; mettre TOSE à 1




    ;***************************** *******
    ; progarmme principal *
    ;***************************** *******



    clrf tmr0 ; début du comptage
    bcf INTCON,TOIF ; effacement du flag
    loop1
    btfss INTCON,TOIF ; tester si compteur a débordé
    goto loop1 ; non, attendre débordement
    incf mvariable,f ; incrémentation de 1 et stockage dans mvariable
    btfsc PORTB,0
    goto loop1
    loop2
    btfss INTCON,TOIF ; tester si compteur a débordé
    goto loop2 ; non, attendre débordement
    incf mvariable,f ; incrémentation de 1 et stockage dans mvariable
    btfss PORTB,0
    goto loop2
    bcf INTCON,5 ; mettre TOIE à 0
    movf mvariable,w




    end

Sur le même thème :

Discussions similaires

  1. Mesure d'un temps et son utilisation par PIC
    Par houcemgo dans le forum Électronique
    Réponses: 0
    Dernier message: 27/06/2008, 10h18
  2. mesure de temps par PIC
    Par saliwar dans le forum Électronique
    Réponses: 7
    Dernier message: 13/05/2008, 12h16
  3. pic 16f84
    Par clinon dans le forum Électronique
    Réponses: 7
    Dernier message: 10/01/2007, 14h50
  4. Réponses: 11
    Dernier message: 15/03/2006, 15h17
  5. Pic 16f84
    Par Nico G. dans le forum Électronique
    Réponses: 2
    Dernier message: 11/12/2005, 18h28