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.
-----