gnupic@linuxhacker.org
gnupic@linuxhacker.org
I can manage to find out my problem.
if someone can help me, here is the very heart of my bug:
list p=16f877
include "p16f877.inc"
CONFIG CP OFF & DEBUG OFF & CPD OFF & LVP ON & BODEN OFF &
PWRTE ON & WDT OFF & HS OSC
;------------------------------------------
; début du programme
;
ORG 0x0000
nop
goto main
;------------------------------------------
; routine d'interuption
;
; tout le traitement du vol est fait dans cette interruption
; on ne rentre dans cette interruption que si le décollage a
; été correctement détecté (accéléro + SV >= 1)
;
ORG 0x0004
retfie ; fin de l'interruption
;------------------------------------------
; routine principale
;
main:
movlw TRISB ; on configure le portB
movwf FSR ;
movlw b'11111111'
; 1 non utilisée
; 1 non utilisée
; 1 non utilisée
; 1 non utilisée
; 1 non utilisée
; 1 signal 2/3
; 1 signal 2/3
; 1 signal accéléro-contact
movwf INDF
movlw PORTB
movwf FSR
clrw
movwf INDF ; par défaut, les sorties sont à zéro
; on configure le PIC pour sortir du mode sleep
; lorsque l'accéléro-contact s'enclenchera (front montant)
movlw INTCON
movwf FSR
bcf INDF, INTF ; INTF = 0 IT nettoyée
bsf INDF, INTE ; INTE = 1 IT permise pour réveil
movlw OPTION REG
movwf FSR
bsf INDF, INTEDG ; RB0 int sur front montant
nop
; puis on s'endort
;sleep
scan:
nop
goto scan
; si on s'est réveillé et que l'on revient ici,
; c'est que l'enclenchement de l'accéléro n'était
; pas justifié, il faut donc recommencer au début
goto main
END
gnupic@linuxhacker.org