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

#81 Message par Guest » jeu. 10 nov. 2016 14:20

Pour moi, reste plus, que tu me donnes, le décomptage avec un joli arrêt tout a ZERO.
ALLEZ j'ai des œufs à cuire :sifflotte:

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

#82 Message par JMarc » jeu. 10 nov. 2016 20:31

pas facile, j'ai arrêté le timer mais j'ai un décompte de trop. j'ai tourné ca a ma sauce. :lol: pour etre a 0

Code : Tout sélectionner

;*******************************************************************
;
;********************************************************************
;
;   
Auteur   :maï/JMarc
;   Version   :1.1
;   Date   :11/2016   
;
;********************************************************************
;            
Note:PIC 16F877         
;********************************************************************
   
ERRORLEVEL-302
   ERRORLEVEL
-305
   
   
list       p=16f877         ;liste directive du 16F876a
   
#include    "p16f877.inc"

CONFIG
 __CONFIG _FOSC_HS 
_WDTE_OFF _PWRTE_OFF _BOREN_OFF _LVP_OFF _CPD_OFF _WRT_OFF _CP_OFF
   
;*********************** Déclarations des définitions ***************

;********************************************************************
    
#DEFINE BOUTONPLUS PORTB,0
#DEFINE BOUTONMOINS PORTB,1
#DEFINE BOUTONVALID PORTB,2

;*********************** Assignations *******************************

DRAM   EQU 0x20         ;début Mémoire Ram banque0
FRAM    EQU 0X7F         
;fin Mémoire Ram banque0
Fosc   EQU .04            
;Valeur du quartz en MHz      
;********************** calcul pour une boucle de temporisation ****************
a 2 niveaux sur un 16F boucle secondaire en 756 cycles
;*******************************************************************************   
TEMPS1   EQU .2000000         ;en ns a modifier suivant besoin ici 2ms
TEMPO   EQU 
((TEMPS1/(.4000/Fosc))/.768)

;********************** 
calcul pour timer1 *************************************   
DIVISEUR1   equ   .8         ;ici 8 du TMR
TEMPS   EQU .100000         
;Valeur en µs a modifier suivant besoin
TIMER1   EQU .65535
-((Fosc*TEMPS)/(.4*DIVISEUR1)-2);les-2 pour temps chargement timer1
TIMER1L   EQU LOW TIMER1         
;valeur
TIMER1H   EQU HIGH TIMER1         
;pour 100 ms qu'il faudra incorporer dans le timer 1
   
;*********************** GLOBAL ************************************************
   GLOBAL   ComptSu
   GLOBAL   ComptSd
   GLOBAL   ComptMu
   GLOBAl   ComptMd
 udata    0x30
ComptSu   res 1            ;comteur seconde
ComptSd   res 1
ComptMu   res 1            ;compteur minute
ComptMd   res 1
   
;*********************** Définitions variables en RAM PAGE0 *********
    CBLOCK   0x20
    Sauv
    Sauv1
    Temp            ;compteur temps
    i,j               ;temporaire boucle
   
   ENDC
   
;*********************** Macro **************************************

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
   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
   MOVFW   ComptSd
   CALL   LedTable
   MOVWF   PORTC
   CALL   Tem2ms         ;idem digit1
   BCF   PORTA,1
   
   BSF   PORTA,2
   MOVFW   ComptMu
   CALL   LedTable
   MOVWF   PORTC
   CALL   Tem2ms         ;idem digit2         
   BCF   PORTA,2
   
   BSF   PORTA,3
   MOVFW   ComptMd
   CALL   LedTable
   MOVWF   PORTC         ;idem digit3
   CALL   Tem2ms
   BCF   PORTA,3
   ENDM
         
;********************************************************************

   ORG 0x00

    GOTO    Principale

;****************** Gestion des interruptions ***********************
   ORG 0x04
   
   MOVWF   Sauv         ;sauve W
   SWAPF   STATUS, 0      ; 
   MOVWF   Sauv1         ;sauve status
   
   MOVLW   TIMER1L         ;oui
   MOVWF   TMR1L
   MOVLW   TIMER1H         ;on recharge le timer1
   MOVWF   TMR1H
       
   BCF   PIR1,TMR1IF      ;RAZ du drapeau de TMR1
       
   INCF   Temp,F         ; à 10 cela fera 1s

   SWAPF   Sauv1,0
   MOVWF   STATUS         ;restaure status
   SWAPF   Sauv, 1 
   SWAPF   Sauv, 0         ;restaure W
   
   RETFIE            ; retour int
   
;*********************** Alumage segments afficheur ****************************
LedTable
    addwf   PCL,f          ; ajout au PC
    retlw   B'
00111111'             ; LED allum?es pour afficher 0
    retlw   B'
00000110'             ; LED allum?es pour afficher 1
    retlw   B'
01011011'             ; LED allum?es pour afficher 2
    retlw   B'
01001111'             ; LED allum?es pour afficher 3
    retlw   B'
01100110'             ; LED allum?es pour afficher 4
    retlw   B'
01101101'             ; LED allum?es pour afficher 5
    retlw   B'
01111101'             ; LED allum?es pour afficher 6
    retlw   B'
00000111'             ; LED allum?es pour afficher 7
    retlw   B'
01111111'             ; LED allum?es pour afficher 8
    retlw   B'
01100111'             ; LED allum?es pour afficher 9
    retlw   B'
00000000'             ; Effacement toutes LED
   
;*******************************************************************
;         Début du Programme
;*******************************************************************
Principale

;*********************** Mise a zéro de la mémoire RAM banque0 ******
    MOVLW    DRAM
     MOVWF   FSR
Effa   CLRF    INDF
     INCF    FSR,F         ;RAZ RAM
     BTFSS    FSR,7
     GOTO    Effa

;*********************** Initialisation des ports *******************
   CLRF   PORTA
   CLRF   PORTB
   CLRF   PORTC
   Banque1            ;accés bank1
   
   CLRF   TRISA         ;PortA en sortie
    movlw   B'
00000111'        ; Direction PORTB RB0,RB1 et RB2 en entrée
    movwf   TRISB        ; écriture dans registre direction
   CLRF   TRISC         ;Broches RC0:RC7 en sortie
   
   MOVLW   B'
00000110'      ;PORTA digitale
   MOVWF   ADCON1         ;
   
;*********************** validation des INT ************************
   BSF   INTCON,GIE      ;validation des INT
   BSF   INTCON,PEIE

        BSF   PIE1,TMR1IE      ;valide le TMR1
   
   Banque0            ;acces banque 0 
   
 
   
;******************* 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
   
   BSF   T1CON,TMR1ON      ;arrêt TMR1    Mise en route du timer1
;*****************************************************
;  pour l'
exercieje charge les variables a 9
cette parti sera remplacé par un accée a l'eeprom
   movlw    0X09
   movwf    ComptSu
   movlw    0X05
   Movwf    ComptSd
   movlw    0X09
   movwf    ComptMu
   movlw    0X05
   Movwf    ComptMd
   bsf        PORTB,3    ; allumage led sur le port3
;*********************** Affichage sur 4 digits ********************************
AFFI  
   AFFICHAGE
    BTFSC    BOUTONVALID    ; si +5volts sur RB2 alors goto
    goto Traitementboutonvalid

;********************** Boucle principale *************************************   
BouP   MOVLW   0X0A         ;on test si 10fois 100mS
   SUBWF   Temp,W
   BTFSS   STATUS,Z
   GOTO   AFFI         ;NON
   CLRF   Temp         ;RAZ compteur temp
   decf        ComptSu        ; decrémentation, sauté si 0

   movlw    0XFF        ; 
   subwf    ComptSu,W        ; teste si passage sous 0
   btfss    STATUS,C        ; oui saut pour traitement
   goto        AFFI        ; non afficher le chiffre
   decf        ComptSd
   movlw    0X09
   movwf    ComptSu        ; recharger unité a 9
   
 
   
   MOVLW   0XFF         ;ici on test si inférieur a 0
   SUBWF   ComptSd,W
   BTFSS   STATUS,Z
   GOTO   AFFI         ;NON on affiche et boucleP
   decf        ComptMu
   movlw    0X05        
   movwf    ComptSd    ; recharger dizaine a 5
   
   
   MOVLW   0XFF        ; on test si sous 0
   SUBWF   ComptMu,W
   BTFSS   STATUS,C
   GOTO   AFFI         ;NON   
   decf        ComptMd
   movlw    0X09
   movwf    ComptMu    ; recharge Centaine

  
   MOVLW   0XFF        ;ici on test si inférieur 0
   SUBWF   ComptMd,W
   BTFSS   STATUS,Z
   GOTO   AFFI         ;NON on affiche et boucleP

    bcf T1CON,TMR1ON    ; timer off
    INCF    ComptMd
     
     clrf  ComptSu
     clrf   ComptSd
     clrf   ComptMu
    call    Tem2ms
Alarm 
    AFFICHAGE
    bcf        PORTB,3    ; extention de la led sur portB
    bsf        PORTB,4    ; sonnerie sur portb en fonction
    btfss   BOUTONVALID ; attente appuis sur bpvalid
    goto    Alarm    ; non alors boucler
alarm2
    AFFICHAGE
    call    Tem2ms
    btfsc   BOUTONVALID    ; relachement du bpvalid
    goto    alarm2    ; non alors boucler
    bcf        PORTB,4    ; arret de la sonnerie
    bsf        T1CON,TMR1ON    ; demarage timer
    bsf        PORTB,3 
    movlw    0X09        ; rechargement variables
    movwf    ComptSu
    movlw    0X05
    Movwf    ComptSd
    movlw    0X09
    movwf    ComptMu
    movlw    0X05
    Movwf    ComptMd
   GOTO   AFFI         ; affiche
;*********************** Ici c'
est les sous Programmes *************************   

Tem2ms   
   CLRF   i
   MOVLW   TEMPO
   MOVWF   j         
;charge variable boucle principale
   
Tem0   DECFSZ   i         
;test si boucle secondaire =0
   
GOTO   Tem0         ;NON retoure dans boucle secondaire
   DECFSZ   j         
;test si boucle principale =0
   
GOTO   Tem0         ;NON recharge boucle secondaire
   
RETURN            ;oui fin de la tempo
   
;*****************************************************************************
Traitementboutonvalid
   AFFICHAGE
   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    boucleafficheurdizaine
    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
   
   MOVLW   0X0A         
on test si poid faible >9
   SUBWF   ComptSu
,W
   BTFSC   STATUS
,C
   CLRF   ComptSu    
remise a zéro
    
    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
    decfsz  ComptSu
,f    sauté l'instruction suivante si 0
    goto    suitemoins    ; pas 0 allé plus loing
    movfw   ComptSu
    CALL    LedTable
    movwf   PORTC
    movlw   0X0A        ; essai pour remetre a 10 dans w
    movwf   ComptSu        ; de w au registre comptsu
    goto    bouclevalid
suitemoins
    MOVFW   ComptSu         ;charge la donnée
    CALL   LedTable      ;recherche donnée
    MOVWF   PORTC         ;envoi donnée
    goto bouclevalid
    
;*****************************************************************************
;        suite provisoire car bientot traitement par macro
;*****************************************************************************
; Traitementboutonvalid
boucleafficheurdizaine
  
   call Tem2ms
   btfsc    BOUTONVALID    ; test si RB2 +5 volt si non sauté l'
instruction suivante
   
goto boucleafficheurdizaine    boucle pour attendre le relachement du bouton
   BCF   PORTA
,0         ;arrêt digit0
   BSF   PORTA
,1         ;allumage digit1
   MOVFW   ComptSd         
;charge la donnée
   CALL   LedTable      
;recherche donnée
   MOVWF   PORTC         
;envoi donnée

;**************************************************************************************
;            
ma boucle d'attente d'appuie des boutons poussoirs
;*************************************************************************************
bouclevalid2
    call Tem2ms
    btfsc    BOUTONVALID    
test appuie boutonvalid (RB2)
    goto    
boucleafficheurcentaine
    btfsc   BOUTONMOINS  
    
goto    bouclemoins2
    btfss    BOUTONPLUS        
test appuie boutonplus (RB0), si non sauté l'instruction suivante
    goto bouclevalid2        ; boucle pour attendre soit appuie de valid soit appuie de plus
;***************************************************************************************
boucleplus2
    call Tem2ms
    btfsc    BOUTONPLUS
    goto    boucleplus2    ; attendre le relachement du bouton
    incf    ComptSd
   
   MOVLW   0X06        ; on test si poid faible >9
   SUBWF   ComptSd,W
   BTFSC   STATUS,C
   CLRF   ComptSd    ; remise a zéro
    
    MOVFW   ComptSd         ;charge la donnée
    CALL   LedTable      ;recherche donnée
    MOVWF   PORTC         ;envoi donnée
    goto bouclevalid2
    
bouclemoins2
    call    Tem2ms
    btfsc   BOUTONMOINS
    goto    bouclemoins2    ; attendre le relachement du bouton
    decfsz  ComptSd,f    ; sauté l'
instruction suivante si 0
    
goto    suitemoins2    pas 0 allé plus loing
    movfw   ComptSd
    CALL    LedTable
    movwf   PORTC
    movlw   0X06        
essai pour remetre a 10 dans w
    movwf   ComptSd        
de w au registre comptsu
    
goto    bouclevalid2
suitemoins2
    MOVFW   ComptSd         
;charge la donnée
    CALL   LedTable      
;recherche donnée
    MOVWF   PORTC         
;envoi donnée
    
goto bouclevalid2
 
;***************************************************************************
 ; 
Traitementboutonvalid
boucleafficheurcentaine
  
;  AFFICHAGE
   call Tem2ms
   btfsc    BOUTONVALID    
test si RB2 +5 volt si non sauté l'instruction suivante
   goto boucleafficheurcentaine    ; boucle pour attendre le relachement du bouton
   BCF   PORTA,1         ;arrêt digit1
   BSF   PORTA,2         ;allumage digit2
   MOVFW   ComptMu        ;charge la donnée
   CALL   LedTable      ;recherche donnée
   MOVWF   PORTC         ;envoi donnée

;**************************************************************************************
;            ma boucle d'
attente d'appuie des boutons poussoirs
;*************************************************************************************
bouclevalid3
    call Tem2ms
    btfsc    BOUTONVALID    ; test appuie boutonvalid (RB2)
    goto    boucleafficheurmillier
    btfsc   BOUTONMOINS  
    goto    bouclemoins3
    btfss    BOUTONPLUS        ; test appuie boutonplus (RB0), si non sauté l'
instruction suivante
    
goto bouclevalid3        boucle pour attendre soit appuie de valid soit appuie de plus
;***************************************************************************************
boucleplus3
    call Tem2ms
    btfsc    BOUTONPLUS
    
goto    boucleplus3    attendre le relachement du bouton
    incf    ComptMu
   
   MOVLW   0X0A         
on test si poid faible >9
   SUBWF   ComptMu
,W
   BTFSC   STATUS
,C
   CLRF   ComptMu    
remise a zéro
    
    MOVFW   ComptMu         
;charge la donnée
    CALL   LedTable      
;recherche donnée
    MOVWF   PORTC         
;envoi donnée
    
goto bouclevalid3
     
bouclemoins3
    call    Tem2ms
    btfsc   BOUTONMOINS
    
goto    bouclemoins3    attendre le relachement du bouton
    decfsz  ComptMu
,f    sauté l'instruction suivante si 0
    goto    suitemoins3    ; pas 0 allé plus loing
    movfw   ComptMu
    CALL    LedTable
    movwf   PORTC
    movlw   0X0A        ; essai pour remetre a 10 dans w
    movwf   ComptMu        ; de w au registre comptsu
    goto    bouclevalid3
suitemoins3
    MOVFW   ComptMu         ;charge la donnée
    CALL   LedTable      ;recherche donnée
    MOVWF   PORTC         ;envoi donnée
    goto bouclevalid3
 ;*************************************************************
 ; afficheur millier
 ; Traitementboutonvalid
boucleafficheurmillier
  ;  AFFICHAGE
   call Tem2ms
   btfsc    BOUTONVALID    ; test si RB2 +5 volt si non sauté l'
instruction suivante
   
goto boucleafficheurmillier    boucle pour attendre le relachement du bouton
   BCF   PORTA
,2         ;arrêt digit2
   BSF   PORTA
,3         ;allumage digit3
   MOVFW   ComptMd         
;charge la donnée
   CALL   LedTable      
;recherche donnée
   MOVWF   PORTC         
;envoi donnée

;**************************************************************************************
;            
ma boucle d'attente d'appuie des boutons poussoirs
;*************************************************************************************
bouclevalid4
    call Tem2ms
    btfsc    BOUTONVALID    
test appuie boutonvalid (RB2)
    goto    
bouclesortie
    btfsc   BOUTONMOINS  
    
goto    bouclemoins4
    btfss    BOUTONPLUS        
test appuie boutonplus (RB0), si non sauté l'instruction suivante
    goto bouclevalid4        ; boucle pour attendre soit appuie de valid soit appuie de plus
;***************************************************************************************
boucleplus4
    call Tem2ms
    btfsc    BOUTONPLUS
    goto    boucleplus4    ; attendre le relachement du bouton
    incf    ComptMd
   
   MOVLW   0X06        ; on test si poid faible >5
   SUBWF   ComptMd,W
   BTFSC   STATUS,C
   CLRF   ComptMd    ; remise a zéro
    
    MOVFW   ComptMd         ;charge la donnée
    CALL   LedTable      ;recherche donnée
    MOVWF   PORTC         ;envoi donnée
    goto bouclevalid4
    
bouclemoins4
    call    Tem2ms
    btfsc   BOUTONMOINS
    goto    bouclemoins4    ; attendre le relachement du bouton
    decfsz  ComptMd,f    ; sauté l'
instruction suivante si 0
    
goto    suitemoins4    pas 0 allé plus loing
    movfw   ComptMd
    CALL    LedTable
    movwf   PORTC
    movlw   0X06        
essai pour remetre a 6 dans w
    movwf   ComptMd        
de w au registre comptsu
    
goto    bouclevalid4
suitemoins4
    MOVFW   ComptMd         
;charge la donnée
    CALL   LedTable      
;recherche donnée
    MOVWF   PORTC         
;envoi donnée
    
goto bouclevalid4
;****************************************************************************
;        
fin du provisoire
;*******************************************************************************
bouclesortie
    call Tem2ms
    btfsc    BOUTONVALID
    
goto bouclesortie        boucle pour attendre que le bouton soit relaché
    BCF   PORTA
,3         ;arrêt digit0
    CLRF   Temp         
;RAZ compteur temp
    
GOTO AFFI  
   
    END

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

#83 Message par Guest » ven. 11 nov. 2016 07:57

Bonjour

Ma moitie n'est pas de repos, donc...

Pour le décomptage avec arrêt a zéro, il ne fonctionne pas correctement.

comme nous sommes dans une programmation par fonction,module. Un avantage est que l'on peu tester le module tout seul .Un tuyau pour passer directement au module:

Code : Tout sélectionner

;********************** fixation des variables *********************************
Goto ici    

et dans le module

Code : Tout sélectionner

ici    
    
    decf        ComptSu        
; decrémentation, sauté si 0

   movlw    0XFF        
; 
   subwf    ComptSu
,W        ; teste si passage sous 0
   btfss    STATUS
,C        ; oui saut pour traitement
   goto        BouP        
; non afficher le chiffre
   decf        ComptSd
   movlw    0X09
   movwf    ComptSu        
; recharger unité a 9
   
 
   
   MOVLW   0XFF         
;ici on test si inférieur a 0
   SUBWF   ComptSd
,W
   BTFSS   STATUS
,Z
   GOTO   BouP         
;NON on affiche et boucleP
   decf        ComptMu
   movlw    0X05        
   movwf    ComptSd    
; recharger dizaine a 5
   
   
   MOVLW   0XFF        
; on test si sous 0
   SUBWF   ComptMu
,W
   BTFSS   STATUS
,C
   GOTO   BouP         
;NON   
   decf        ComptMd
   movlw    0X09
   movwf    ComptMu    
; recharge Centaine

  
   MOVLW   0XFF        
;ici on test si inférieur 0
   SUBWF   ComptMd
,W
   BTFSS   STATUS
,Z
   GOTO   BouP         
;NON on affiche et boucleP

    bcf T1CON
,TMR1ON    ; timer off
    INCF    ComptMd
     
     clrf  ComptSu
     clrf   ComptSd
     clrf   ComptMu    
     GOTO   ici

j'ai rajouté un goto ici en fin de module pour faire une boucle de décomptage

Maintenant rentre 1S et fait tourner la boucle.
Puis rentre 1mn et fait tourner la boucle.C'est jamais a zéro alors qu'il y a arrêt timer

Une fois le test OK, on vire tout ce qui est en rapport avec ici.

Je me répète, tu vas trop vite, c'est quoi cette EEPROM ???? Fini tes quatre modules AFFICHAGE, GESTION BOUTONS, DÉCOMPTAGE, ALARME, après tu rajoutera un autre module.

AMHA pour le moment, aucun ne tournent, correctement.Peso je me projette dans ma réalisation, pour définir ce que je veux,(cahier des charges encore et toujours, OUI) une fois fait et mis sur papier, je prend , fonction après fonction, et si pas ok je me concentre sur cela.Après si toi tu fais du global et que tu retrouves tes petits alors :bravo: moi je ne sais pas faire,2fois plantés depuis le début du fil

A+

PS; Bon hier soir,j'ai fais cuire des œufs :sifflotte:

compteur décompteur sur 7 segments
Jérémy
Administrateur du site
Administrateur du site
Messages : 2750
Âge : 46
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#84 Message par Jérémy » ven. 11 nov. 2016 08:03

Bonjour,

C'est malin dés que je faire des cuire des œufs je pense à JMarc maintenant ! :lol:

Bravo continuez !
C'est en faisant des erreurs, que l'on apprend le mieux !!!

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

#85 Message par Guest » ven. 11 nov. 2016 08:04

Jérémy a écrit :Bonjour,

C'est malin dés que je faire des cuire des œufs je pense à JMarc maintenant ! :lol:

Bravo continuez !


de plus il était bien bons :lol:

bonjour jeremy

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

#86 Message par Guest » ven. 11 nov. 2016 08:13

JMarc

Pour le décomptage, je ne te donne pas le code, mais la piste.

-Pas de test sur les Md un simple decf.
Cela va a un moment du décomptage te ramener toutes tes variables a zéro. Il suffit donc, avant de faire un décomptage de tester, si toutes tes variables sont à zéro, si oui on sort, sinon bien on decompte
Avec, un joli organigramme, c'est très facile a voir, allez crayon papier

Ps: tu dois avoir de ton compilateur des avertissement en rapport avec le mani sur variable exemple sur

Code : Tout sélectionner

DECF variable
il manque la boite de reception ici la variable donc

Code : Tout sélectionner

DECF variable,F
toujours avoir le résultat d'une compli sans erreur

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

#87 Message par JMarc » ven. 11 nov. 2016 12:34

Bonjour Maï

Je ne trouve pas "fixation des variables" pour mettre le goto
Le "ici" j'ai trouvé

Ce qui est démoralisant c'est que j'essaie a chaque fois avec débug et ensuite en réel et chez moi cela fonctionne :cry: :mur:
J'ai mon comptage qui s'arrête avec tous les chiffres allumer inscrit zéro, la led de la plaque qui s'éteint et celle de la sirène allumé. Cela tourne en boucle jusqu'à l'appuie bpvalid, qui éteint la sirène et repart dans le de comptage.

Il faut que je supprime le code du bpmoins car il ne sert pas

Ben moi mes œufs sont cramés oops

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

#88 Message par Guest » ven. 11 nov. 2016 12:38

Normal c'est dans mon code donc pardon je travaille, avec mon code

Tient voila le décomptage pour me faire pardonner

Code : Tout sélectionner

;*********************** Lance decomptage **************************************    
Decom    MOVLW   0X0A            
;on test si 10fois 100mS
    SUBWF   Temp
,W
    BTFSS   STATUS
,Z
    GOTO    BouP            
;NON
    CLRF    Temp            
;OUI RAZ compteur temps et on decompte
    
;***********************
    CLRW    
    SUBWF    ComptMd
,W
    BTFSS    STATUS
,Z
    GOTO    Decom0            
;pas  a zero
    
    CLRW
    SUBWF    ComptMu
,W
    BTFSS    STATUS
,Z
    GOTO    Decom0            
; on verifie que le compteur

    CLRW
    SUBWF    ComptSd
,W        ; ne soit pas a zero
    BTFSS    STATUS
,Z        
    GOTO    Decom0            
; avant de decompte
    
    CLRW
    SUBWF    ComptSu
,W
    BTFSC    STATUS
,Z
    GOTO    BouP0            
;il est a zero on sort et arrêt comptage
    
;***********************    
Decom0    DECF   ComptSu
,F        ;uS-1
    
    MOVLW    0XFF            
; test si > 0
    SUBWF    ComptSu
,W         
    BTFSS   STATUS
,Z        
    GOTO    BouP            
; NON
    
    MOVLW    0X09
    MOVWF    ComptSu            
;uS= 9
    
;***********************    
    DECF    ComptSd
,F        ;dS +1
    
    MOVLW   0XFF
    SUBWF   ComptSd
,W        ;test si >0
    BTFSS   STATUS
,Z
    GOTO   BouP            
;NON            
    
    MOVLW    0X5
    MOVWF    ComptSd            
;dS =9

;***********************    
    DECF   ComptMu
,F
    
    MOVLW    0XFF
    SUBWF    ComptMu
,W
    BTFSS   STATUS
,Z        ;IDEM Mu
    GOTO    BouP
    
    MOVLW    0X09
    MOVWF    ComptMu
    
;***********************
    DECF   ComptMd                        
    GOTO    BouP
 


a adapter a ton code

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

#89 Message par Guest » ven. 11 nov. 2016 12:41

C'est comme dit un peu plus haut test si les variables ne sont pas a zero et on ne fait que : DECF ComptMd,F en fin décomptage il n'y a que cela a modifier

tient il ya aussi cela qui ne va pas

Code : Tout sélectionner

  decf        ComptSu        ; decrémentation, sauté si 0

   movlw    0XFF        
; 
   subwf    ComptSu
,W        ; teste si passage sous 0
   btfss    STATUS
,C        ; oui saut pour traitement
   goto        AFFI        
; non afficher le chiffre
   decf        ComptSd
   movlw    0X09
   movwf    ComptSu        
; recharger unité a 9


lorsque tu travail sur une variable .Tu finis le travail et apres, tu prends la suivante .Regarde comme je fais

petite explication ou mettre le goto ici

juste avant la BOUCLE PRINCIPALE donc la

Code : Tout sélectionner

  BSF   T1CON,TMR1ON      ;arrêt TMR1    Mise en route du timer1
  
 GOTO ICI 
;*****************************************************
;
  pour l'exercie, je charge les variables a 9
; cette parti sera remplacé par un accée a l'
eeprom
   movlw    0X09

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

#90 Message par Guest » ven. 11 nov. 2016 13:33

Ce qui est démoralisant c'est que j'essaie a chaque fois avec débug et ensuite en réel et chez moi cela fonctionne :cry: :mur:
J'ai mon comptage qui s'arrête avec tous les chiffres allumer inscrit zéro, la led de la plaque qui s'éteint et celle de la sirène allumé. Cela tourne en boucle jusqu'à l'appuie bpvalid, qui éteint la sirène et repart dans le de comptage.


Alors si c'est bon que veux-tu de plus. Mais la il faut que tu m'expliques par ce que moi je ne comprends pas cela
Cela tourne en boucle jusqu'à l'appuie bpvalid, qui éteint la sirène et repart dans le de comptage.

chez c'est comme cela:
A la mise sous tension
-Le 1er digit clignote les 2 autres sont fixe .(j'ai pas 4digits le programme tourne pour 4)
-Avec BP_Val je me déplace pour sélectionner, le digits sur lequel je veux travailler, bien sur le clignotement suit de 1 passe a 2, de 3 a 3 etc.....
_Avec le BP_Plus incrémente ,le digit sélectionné jusqu’à la valeur max en fonction de sa position 9 ou 5

une fois, le temps de programmé,j'appuie longuement sur le BP_Val

le clignotement s'arrête les 3 digits sont fixes, au relâchement du BP_Val le décomptage se met en route.
....si pour X raisons, je considéré que la programmation n'est pas bonne, un appuie long sur BP_Val arrête le décomptage et retour casse mise sous tension
pas d'action lors du décomptage des BP Sauf BP_val sur appuie long
sinon a la fin du temps programmé, validation de l'alarme petite pause et casse mise en service.

je fais cela avec
Capture .png

14 variables et 242 octets de mem Programme 2 timer et 2 tempo(800µs et 2ms)
c'est, comment dire, simple
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités