Bonjour a vous collègues électroniciens...
Cela fait maintenant plusieurs jours que je butte sur mon problème. Je vous explique:
Avec un 16f84a, j'ai créé un petit circuitqui commande une led et un relais en fonction d'une programmation choisie par l'utilisateur (microswitch sur le portb).
Mon circuit doit fonctionner en 4 modes (sélectionnables): Temporisé, retardé, Retardé-temporisé et Cadencé à 5 Hz pendant un temps défini par l'utilisateur.
Mes trois premiers modes fonctionnent correctement, mais j'ai le problème avec la cadence. Il me compte les premières 5 sec. et il s'arrète brusquement lorsque il arrive a l'instruction bcf porta,1 je ne trouve pas de solution pour qu'il continue.
Ah oui, toutes mes valeurs utiles au comptage de tempts sont stockées en EEPROM cela me permet une maintenance simple si je doit modifier une durée.
Voici mon code pour la cadance:
;***************************** ******** 4 Temporisé Cadencé
Reset_Cadencé
RelaisOff ; On désactive le relais
LedOff ; On désactive la led
Cadencé
btfsc BoutonProg ; Entrée en prog?
Goto Lecture_configurateur_tempo ; recommance depuis le début
Attend_départ_Cadencé
LedOff
btfss Bouton ; teste si le départ est donné si non
GOTO Cadencé ; on recommance
LedOn ; On active la led
; Active le relais 5sec.
Cadence_5sOn
RelaisOn
Décrément_cadence
decfsz Cadence_1, f ; on décrémente Cadence_1 si il vaut 0 on saute
Goto Décrément_cadence ; si non on recommance
nop
btfsc BoutonReset ; teste si le bouton Reset est pressé si non
GOTO Reset_Cadencé ; on ca à Reset_Cadencé
decfsz Cadence_2, f ; on décrémente Cadence_2 si il vaut 0 on saute
Goto Décrément_cadence ; si non on recommance
decfsz Cadence_3, f ; on décrémente Cadence_3 si il vaut 0 on saute
Goto Décrément_cadence ; si non on recommance
;Précision
movlw 0x96 ; on met 150 dans w
movwf Cadence_2 ; on met w dans cadence_2
Précision
decfsz Cadence_1, f ; on décrémente Cadence_1 si il vaut 0 on saute
Goto Précision ; si non on recommance
decfsz Cadence_2, f ; on décrémente Cadence_2 si il vaut 0 on saute
Goto Précision ; si non on recommance
Lecture_de_cadence_en_EE ; On lit la Cadence fixe de 5sec.
decfsz Compteur, f ; on décrémente Compteur si il vaut 0 on saute
goto Cadence_5sOff ; si non on va à cadence_off
goto stop ; si oui on va à stop
; Désactive le relais 5 sec
Cadence_5sOff
RelaisOff
Cadence_Off
decfsz Cadence_1, f ; on décrémente Cadence_1 si il vaut 0 on saute
Goto Cadence_Off ; si non on recommance
nop
btfsc BoutonReset ; teste si le bouton Reset est pressé si non
GOTO Attend_départ_Cadencé ; on recommance
decfsz Cadence_2, f ; on décrémente Cadence_2 si il vaut 0 on saute
Goto Cadence_Off ; si non on recommance
decfsz Cadence_3, f ; on décrémente Cadence_3 si il vaut 0 on saute
Goto Cadence_Off ; si non on recommance
Lecture_de_cadence_en_EE ; on lit la Cadence fixe de 5sec.
decfsz Compteur, f ; on décrémente Compteur si il vaut 0 on saute
goto Cadence_5sOn ; si non on va à Décrément_cadence
goto stop ; si oui on va à stop
stop
LedOff
RelaisOff
Lecture_de_cadence_en_EE ; On lit la Cadence fixe de 5sec.
Lecture_du_compteur ; On lit le compteur de 5 sec.
UN GRAND MERCI A CEUX QUI M'AIDERONS.
-----