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