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

Question sur interruption PIC16F628



  1. #1
    bobbycarotte

    Question sur interruption PIC16F628


    ------

    Bonjour,

    Je suis en train de programme un PIC16F628 et je suis actuellement en train de plancher sur la partie interruption sur un front montant ou sur un front descendant. Le truc c'est que je suis vraiment novice en la matière. Je me suis donc inspiré d'un programme déjà écrit (je l'ai quand même pas mal modifié : d'où mes questions, je ne suis pas toujours sûr que la synatxe soit bonne). Je vous remercie donc d'avance si vous pouviez m'indiquer les erreurs de syntaxe ou autres que j'ai pu commettre.

    Voici l'interruption :

    INTERRUPTION RB0/INT *
    ;***************************** ****************************** ******************

    intrb0
    bcf STATUS,RP0

    ; On va tester s'il s'agit d'un front montant ou d'un front descendant
    BANK1 ; VERIFIER SI C'EST LA BONNE BANQUE
    btfss OPTIONVAL INTEDG ; on teste s'il s'agit d'un front montant : DEMANDER SI SYNTAXE BONNE !!!!!
    goto misezero_timer0 ; oui, on met à zéro le timer0
    ; non, on sauvergarde le timer0 et on traite le PWM

    ; Sauvegarde du timer0
    BANK0
    movf TMR0H,w ; on charge les bits de poids fort du timer0
    movwf VALEUR_TMR0H ; on sauvegarde cette valeur
    movf TMR0L,w ; on charge les bits de poids faible du timer0
    movwf VALEUR_TMR0L ; on sauvegarde cette valeur

    misezero_timer0
    BANK0
    clrf TMR0L ; effacer les bits de poids faible du timer0
    clrf TMR0H ; effacer les bits de poids fort du timer0

    goto changer_front_timer0


    ; Récupération de la largeur d'impulsion
    movlw 0x9C ; ca veut dire quoi ? est-ce que c'est l'addition des bits de poids faible et de poids fort
    movwf LARGEUR_IMPULSION ; enregistrement dans variable LARGEUR_IMPULSION de la largeur [0x00<->0x5E]
    movlw D'0' ; on met la valeur littérale dans le registre de travail
    movwf CCPR1L ; on la met ensuite dans le registre CCPR1L
    goto changer_front_timer0

    changer_front_timer0
    BANK1
    movfw OPTION_REG ; on charge le registre OPTIONVAL dans le répertoire de travail
    xorlw B'00000010' ; on indique que la prochaine interruption se fera sur un front descendant (dans le registre OPTIONVAL)
    movwf OPTION_REG ; on initialise le registre OPTION_REG - EST-CE QUE CE NE SERAIT PAS PLUS SIMPLE DE METTRE "OPTIONVAL INTEDG b6 : 0" ??
    BANK0

    return ; fin d'interruption RB0/INT



    PS : si vous avez besoin de tout le squelette, dîtes le moi.

    -----

  2. #2
    Spades92

    Re : Question sur interruption PIC16F628

    JE veux bien effectivement que tu poste le squellette , tu travail sur quel logiciel ? MPLAB ?
    Cordialement

Discussions similaires

  1. Questions de novice sur le PIC16F628
    Par bobbycarotte dans le forum Électronique
    Réponses: 4
    Dernier message: 03/06/2009, 10h38
  2. Interruption Timer0 PIC16F628 et CCS
    Par zied74 dans le forum Électronique
    Réponses: 1
    Dernier message: 15/05/2009, 17h56
  3. interruptions sur pic16f628
    Par elsena dans le forum Électronique
    Réponses: 3
    Dernier message: 08/04/2009, 10h22
  4. interruption sur HI-TECH
    Par lolou77 dans le forum Électronique
    Réponses: 1
    Dernier message: 16/03/2009, 15h26
  5. Problème interruption sur PIC16F
    Par jolindien dans le forum Électronique
    Réponses: 7
    Dernier message: 21/01/2009, 19h26
Découvrez nos comparatifs produits sur l'informatique et les technologies.