Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : mazertoc
compteur décompteur sur 7 segments
Bonjour
J'ai rajouté les commentaires, cela sera plus clair, fait avec vérification au débuger (j'adore ce logiciel
)
RB recoit +5 volt si le bouton est appuyé car ma platine est faite comme cela
je regarde le reste des posts pour y repondre plus tard
J'ai rajouté les commentaires, cela sera plus clair, fait avec vérification au débuger (j'adore ce logiciel
RB recoit +5 volt si le bouton est appuyé car ma platine est faite comme cela
Code : Tout sélectionner
;*****************************************************************************
Traitementboutonvalid
nop ; pour arrivé ici le bouton valid (RB2) recoit +5 volts
call Tem20ms ; petite tempo de 20 milli seconde
BTFSC BOUTONVALID ; test si RB2 +5 volt si non sauté l'instruction suivante
goto Traitementboutonvalid ; boucle pour attendre le relachement du bouton
nop ; bouton relaché RB2= 0 volt
BSF PORTA,0 ;allumage digit0
MOVFW ComptSu ;charge la donnée
CALL LedTable ;recherche donnée
MOVWF PORTC ;envoi donnée
CALL Tem20ms ;petite tempo 20ms
bouclevalid
nop
BTFSC BOUTONVALID ; test du bouton valid appuyé, si non sauté l'instruction suivante
goto Suitevalid ; bouton appuyé retour au compteur normal
CALL Tem20ms ; petite tempo que je peux supprimé le point d'arret est ici
btfsc BOUTONPLUS ; test appuie boutonplus (RB0), si non sauté l'instruction suivante
goto Traitementboutonplus ; saut pour traitement
goto bouclevalid ; boucle pour attendre soit appuie de valid soit appuie de plus
Suitevalid
; CALL Tem20ms
BTFSC BOUTONVALID
goto Suitevalid ; boucle pour attendre que le bouton soit relaché
nop
BCF PORTA,0 ;arrêt digit0
CLRF Temp ;RAZ compteur temp
GOTO AFFI
RETURN
Traitementboutonplus
call Tem20ms
btfsc BOUTONPLUS
goto Traitementboutonplus ; attendre le relachement du bouton
incf ComptSu
MOVFW ComptSu ;charge la donnée
CALL LedTable ;recherche donnée
MOVWF PORTC ;envoi donnée
goto bouclevalid
je regarde le reste des posts pour y repondre plus tard
compteur décompteur sur 7 segments
Prend ton temps ,pas très disponible, aujourd’hui et demain ma moitié est en repos
Déjà j'aime pas la gestion de ton BP. trop compliqué,(allez 5 lignes suffisent pour gérer cela). Relis les posts notamment ici viewtopic.php?f=11&t=220&p=4356#p4356 . Tu as la gestion d'un BP avec un très bon organigramme. Ton code, doit le suivre, au plus prés . C'est UNE TRES bonne approche, cela permet de mettre au clair ta logique. je fais des organigrammes (crayon papier) et je t'invite à faire, de même. C'est pas un pic c'est un Z80, mais le raisonnement est le même.
a+
PS j'ai ressorti, décidément, ma plaque à trou (et de 2) .J'ai fait avec un 16F et un 3 digits ,le programme de comptage qui tourne à cote de moi ,attend la suite...
A ce soir
Déjà j'aime pas la gestion de ton BP. trop compliqué,(allez 5 lignes suffisent pour gérer cela). Relis les posts notamment ici viewtopic.php?f=11&t=220&p=4356#p4356 . Tu as la gestion d'un BP avec un très bon organigramme. Ton code, doit le suivre, au plus prés . C'est UNE TRES bonne approche, cela permet de mettre au clair ta logique. je fais des organigrammes (crayon papier) et je t'invite à faire, de même. C'est pas un pic c'est un Z80, mais le raisonnement est le même.
a+
PS j'ai ressorti, décidément, ma plaque à trou (et de 2) .J'ai fait avec un 16F et un 3 digits ,le programme de comptage qui tourne à cote de moi ,attend la suite...
A ce soir
compteur décompteur sur 7 segments
compteur décompteur sur 7 segments
Je pédale
le code en cour mais c'est pas fini
le code en cour mais c'est pas fini
Code : Tout sélectionner
;*****************************************************************************
Traitementboutonvalid
call Tem2ms
btfsc BOUTONVALID ; test si RB2 +5 volt si non sauté l'instruction suivante
goto Traitementboutonvalid ; boucle pour attendre le relachement du bouton
BSF PORTA,0 ;allumage digit0
MOVFW ComptSu ;charge la donnée
CALL LedTable ;recherche donnée
MOVWF PORTC ;envoi donnée
;**************************************************************************************
; ma boucle d'attente d'appuie des boutons poussoirs
;*************************************************************************************
bouclevalid
call Tem2ms
btfsc BOUTONVALID ; test appuie boutonvalid (RB2)
goto bouclesortie
btfss BOUTONPLUS ; test appuie boutonplus (RB0), si non sauté l'instruction suivante
goto bouclevalid ; boucle pour attendre soit appuie de valid soit appuie de plus
;***************************************************************************************
boucleplus
call Tem2ms
btfsc BOUTONPLUS
goto boucleplus ; attendre le relachement du bouton
incf ComptSu
MOVFW ComptSu ;charge la donnée
CALL LedTable ;recherche donnée
MOVWF PORTC ;envoi donnée
goto bouclevalid
bouclesortie
call Tem2ms
btfsc BOUTONVALID
goto bouclesortie ; boucle pour attendre que le bouton soit relaché
BCF PORTA,0 ;arrêt digit0
CLRF Temp ;RAZ compteur temp
GOTO AFFIcompteur décompteur sur 7 segments
le probleme c'est que tu veux tout gerer affichage et la gestion des BP
alors pour faire le vide. Avant toute choses,tu as bien arrêté le TIMER1 ?????
BCF T1CON,TMR1ON ;OFF TMR1
APRES IL faut transformer AFFICHAGE en routine
tu dois avoir cela j'ai laisse un grand blanc c'est la qu'il faut traiter les BP
tient mon traitement des BP
en principe les + et - doivent se ressentir sur AFFICHAGE, validation ne fait rien POUR le moment
Ne tient pas compte de index j'anticipe d’ailleurs il faut que l'on fasse un cahier des charges pour ce cuiseur d’œufs
PS c'est mieux ton programme,une simple question que vient faire cette tempo:
call Tem2ms avant la gestion de tes boutons et je ne vois plus ta boucle qui ne servait a RIEN
alors pour faire le vide. Avant toute choses,tu as bien arrêté le TIMER1 ?????
BCF T1CON,TMR1ON ;OFF TMR1
Code : Tout sélectionner
;******************* Initialisation des timers/compteurs *************
; ici on va travailler avec le TIMER1
;*********************************************************************
MOVLW (0)|(0)|(1<<T1CKPS1)|(1<<T1CKPS0)|(0<<T1OSCEN)|(0<<T1SYNC)|(0<<TMR1CS)|(0<<TMR1ON)
MOVWF T1CON
MOVLW TIMER1H ;on charge le TIMER1
MOVWF TMR1H
MOVLW TIMER1L ;voir son calcul dans
MOVWF TMR1L ;assignation
BCF T1CON,TMR1ON ;OFF TMR1
APRES IL faut transformer AFFICHAGE en routine
Code : Tout sélectionner
;*********************** Affichage sur 4 digits ********************************
AFFICHAGE
BSF PORTA,0 ;allumage digit0
;BTFSC Index,0
;BCF PORTA,0 ; on eteint si doit clignoter
MOVFW ComptSu ;charge la donnée
CALL LedTable ;recherche donnée
MOVWF PORTC ;envoi donnée
CALL Tem2ms ;petite tempo 2ms
BCF PORTA,0 ;arrêt digit0
BSF PORTA,1
BTFSC Index,1
BCF PORTA,1
MOVFW ComptSd
CALL LedTable
MOVWF PORTC
CALL Tem2ms ;idem digit1
BCF PORTA,1
BSF PORTA,2
BTFSC Index,2
BCF PORTA,2
MOVFW ComptMu
CALL LedTable
MOVWF PORTC
CALL Tem2ms ;idem digit2
BCF PORTA,2
BSF PORTA,3
BTFSC Index,3
BCF PORTA,3
MOVFW ComptMd
CALL LedTable
MOVWF PORTC ;idem digit3
CALL Tem2ms
BCF PORTA,3
RETURN
tu dois avoir cela j'ai laisse un grand blanc c'est la qu'il faut traiter les BP
Code : Tout sélectionner
;********************** Boucle principale **************************************
AFFI CALL AFFICHAGE
MOVLW 0X0A ;on test si 10fois 100mS
SUBWF Temp,W
BTFSS STATUS,Z
GOTO AFFI ;NON
CLRF Temp ;RAZ compteur temp
INCF ComptSu ; oui compteur seconde +1
tient mon traitement des BP
Code : Tout sélectionner
;********************** Bouton validation**************************************
BTFSS BP_Val
GOTO Plus
CALL Temp800µs
Val BTFSC BP_Val
GOTO Val
;?????????????????????????????????
;?????????????????????????????????
GOTO AFF
;*********************** Bouton plus *******************************************
Plus BTFSS BP_Plus
GOTO Moins
CALL Temp800µs
Plus0 BTFSc BP_Plus
GOTO Plus0
INCF ComptSu
GOTO AFF
;*********************** Bouton moins ******************************************
Moins BTFSS BP_Moins
GOTO Affich
CALL Temp800µs
Moins0 BTFSC BP_Moins
GOTO Moins0
DECF ComptSu,F
GOTO AFF
en principe les + et - doivent se ressentir sur AFFICHAGE, validation ne fait rien POUR le moment
Ne tient pas compte de index j'anticipe d’ailleurs il faut que l'on fasse un cahier des charges pour ce cuiseur d’œufs
PS c'est mieux ton programme,une simple question que vient faire cette tempo:
call Tem2ms avant la gestion de tes boutons et je ne vois plus ta boucle qui ne servait a RIEN
compteur décompteur sur 7 segments
compteur décompteur sur 7 segments
maï a écrit :le probleme c'est que tu veux tout gerer affichage et la gestion des BP
alors pour faire le vide. Avant toute choses,tu as bien arrêté le TIMER1 ?????
C'est parce que tu m'avais dit moins d'empilage sur la pile, je vais faire comme tu le préconises
J'ai pas encore regardé pour le timer car j'ai essayé de réduire le code des boutons poussoirs, j'ai rajouté le bouton moins
je regarde ton post
Code : Tout sélectionner
bouclevalid
call Tem2ms
btfsc BOUTONVALID ; test appuie boutonvalid (RB2)
goto bouclesortie
btfsc BOUTONMOINS
goto bouclemoins
btfss BOUTONPLUS ; test appuie boutonplus (RB0), si non sauté l'instruction suivante
goto bouclevalid ; boucle pour attendre soit appuie de valid soit appuie de plus
;***************************************************************************************
boucleplus
call Tem2ms
btfsc BOUTONPLUS
goto boucleplus ; attendre le relachement du bouton
incf ComptSu
MOVFW ComptSu ;charge la donnée
CALL LedTable ;recherche donnée
MOVWF PORTC ;envoi donnée
goto bouclevalid
bouclemoins
call Tem2ms
btfsc BOUTONMOINS
goto bouclemoins ; attendre le relachement du bouton
decf ComptSu
MOVFW ComptSu ;charge la donnée
CALL LedTable ;recherche donnée
MOVWF PORTC ;envoi donnée
goto bouclevalid
compteur décompteur sur 7 segments
Tout a fait d'accord avec toi, pour la pile. mais c'est du provisoire .je t’ai, aussi proposé de faire un autre fil, car on est toujours avec des projets qui ce superpose. on reviendra sur l'affichage avec une macro c'est comme une SPG sans les appels a la pile .Mais il y a bien ce problème de bouton a régler. Puis j'insiste, il faut que l'on définisses ce que l'on veux faire .2 fois que je me fais avoir avec c'est projets qui ce superpose pas 2 sans 3
donc regarde ces bouton puis on parle cahier des charges toujours si tu le veux bien.
donc regarde ces bouton puis on parle cahier des charges toujours si tu le veux bien.
compteur décompteur sur 7 segments
maï a écrit :en principe les + et - doivent se ressentir sur AFFICHAGE, validation ne fait rien POUR le moment![]()
Ne tient pas compte de index j'anticipe d’ailleurs il faut que l'on fasse un cahier des charges pour ce cuiseur d’œufs
PS c'est mieux ton programme,une simple question que vient faire cette tempo:
call Tem2ms avant la gestion de tes boutons et je ne vois plus ta boucle qui ne servait a RIEN
mon idée etait l'appuis sur valid (il fallait trouvé un nom, j'ai mis valid) pour sortir du chrono et entrée dans la parti correction des unités avec l'allumage que des unités, alors si appuie du bouton plus = incrementation des unités de 0 a 9 et repassage a 0. si appuie sur valid = passage sur les dizaines puis les centaines puis les milliers puis retour au chrono.
si chrono affiché, si appuie sur plus alors demarage du chrono, nouvel appuis arret
plus tard, après reglage du chrono, envoie des données dans l'eprom mais cela sera plus tard
J'ai plusieur idée, un compteur manuel, une minuterie pour les abreuvoirs, .... mais pour l'instant c'est pour l'entrainement
Modifié en dernier par JMarc le lun. 7 nov. 2016 20:52, modifié 1 fois.
compteur décompteur sur 7 segments
voila la version macro de affichage rien de compliqué
et son appel
c'est comme les SPG sans le CALL
A+
Code : Tout sélectionner
*********************** MACROS pour les acces au banques *********************
Banque0 MACRO
BCF STATUS,RP0 ;Acces bank0
BCF STATUS,RP1
ENDM
Banque1 MACRO
BSF STATUS,RP0 ;Acces bank1
BCF STATUS,RP1
ENDM
Banque2 MACRO
BCF STATUS,RP0 ;acces bank2
BSF STATUS,RP1
ENDM
Banque3 MACRO
BSF STATUS,RP0 ;Acces bank4
BSF STATUS,RP1
ENDM
AFFICHAGE MACRO
BSF PORTA,0 ;allumage digit0
BTFSC Index,0
BCF PORTA,0 ; on eteint si doit clignoter
MOVFW ComptSu ;charge la donnée
CALL LedTable ;recherche donnée
MOVWF PORTC ;envoi donnée
CALL Tem2ms ;petite tempo 2ms
BCF PORTA,0 ;arrêt digit0
BSF PORTA,1
BTFSC Index,1
BCF PORTA,1
MOVFW ComptSd
CALL LedTable
MOVWF PORTC
CALL Tem2ms ;idem digit1
BCF PORTA,1
BSF PORTA,2
BTFSC Index,2
BCF PORTA,2
MOVFW ComptMu
CALL LedTable
MOVWF PORTC
CALL Tem2ms ;idem digit2
BCF PORTA,2
BSF PORTA,3
BTFSC Index,3
BCF PORTA,3
MOVFW ComptMd
CALL LedTable
MOVWF PORTC ;idem digit3
CALL Tem2ms
BCF PORTA,3
ENDM
et son appel
Code : Tout sélectionner
BCF T1CON,TMR1ON ;OFF TMR1
;********************** Boucle principale **************************************
AFFI
AFFICHAGE
c'est comme les SPG sans le CALL
A+
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : venom et 4 invités

