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 ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

compteur décompteur sur 7 segments
JMarc
Confirmé
Confirmé
Messages : 607
Enregistré en : août 2016
Localisation : Dans le Sud...

#61 Message par JMarc » lun. 7 nov. 2016 10:05

Bonjour

J'ai rajouté les commentaires, cela sera plus clair, fait avec vérification au débuger (j'adore ce logiciel :razz: )

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 :sifflotte:

compteur décompteur sur 7 segments
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#62 Message par Guest » lun. 7 nov. 2016 11:35

Prend ton temps ,pas très disponible, aujourd’hui et demain ma moitié est en repos :wink:

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
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#63 Message par Guest » lun. 7 nov. 2016 18:52

Bon tu en es ou avec ces boutons ????

compteur décompteur sur 7 segments
JMarc
Confirmé
Confirmé
Messages : 607
Enregistré en : août 2016
Localisation : Dans le Sud...

#64 Message par JMarc » lun. 7 nov. 2016 19:14

Je pédale :lol:

le code en cour mais c'est pas fini :sifflotte:

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 AFFI

compteur décompteur sur 7 segments
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#65 Message par Guest » lun. 7 nov. 2016 19:34

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

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 :wink:

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 :wink:

compteur décompteur sur 7 segments
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#66 Message par Guest » lun. 7 nov. 2016 19:45

je fais mes tempo avec mes macros mais si tu le veux bien on en reparle un peu plus tard VASTE SUJET
j'ai fait aussi un raccourci avec la define des boutons mais tu fais comme bon te semble question de gout :sifflotte:

tu suis ?????? ou j’anticipe un peu TROP ???

compteur décompteur sur 7 segments
JMarc
Confirmé
Confirmé
Messages : 607
Enregistré en : août 2016
Localisation : Dans le Sud...

#67 Message par JMarc » lun. 7 nov. 2016 19:53

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 :wink:

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 :roll:

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
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#68 Message par Guest » lun. 7 nov. 2016 20:04

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 :sifflotte:

donc regarde ces bouton puis on parle cahier des charges toujours si tu le veux bien.

compteur décompteur sur 7 segments
JMarc
Confirmé
Confirmé
Messages : 607
Enregistré en : août 2016
Localisation : Dans le Sud...

#69 Message par JMarc » lun. 7 nov. 2016 20:08

maï a écrit :en principe les + et - doivent se ressentir sur AFFICHAGE, validation ne fait rien POUR le moment :wink:

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 :wink:


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 :sifflotte:

J'ai plusieur idée, un compteur manuel, une minuterie pour les abreuvoirs, .... mais pour l'instant c'est pour l'entrainement :-D
Modifié en dernier par JMarc le lun. 7 nov. 2016 20:52, modifié 1 fois.

compteur décompteur sur 7 segments
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#70 Message par Guest » lun. 7 nov. 2016 20:33

voila la version macro de affichage rien de compliqué

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