IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres architectures Assembleur Discussion :

[PIC 16F628a] Réaliser une boucle qui compte de 0 à 9 et qui affiche un chiffre


Sujet :

Autres architectures Assembleur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 291
    Points : 49
    Points
    49
    Par défaut [PIC 16F628a] Réaliser une boucle qui compte de 0 à 9 et qui affiche un chiffre
    Bonjour, tout est dans le titre.Je dois rélaiser un décodeurpour l'affichage 7 segments et réaliser une boucle qui compte de 0 à 9 et qui affiche un chiffre.J'ai déjà fait quelque chose mais ça ne fonctionne pas.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    list	p=16f628a
    include "p16f628a.inc"
     
    segcounter EQU 21
     
    	org 0
     
    	bsf STATUS, RP0 	
    	bcf STATUS, RP1
     
    	movlw B'00000000'
    	movwf TRISB
     
    	movlw B'00000000'
    	movwf TRISA
     
    	bcf STATUS, RP0		
    	bcf STATUS, RP1
     
     
    bigloop
    	clrf PORTB ; desactiver tous les segments
    	movlw B'00000001' 
    	movwf PORTA ; activer le chiffre 1
    	movlw D'9'
    	movwf segcounter ; segcounter := 9
    loop1	
    	movf segcounter,w ; w:= segcounter
    	movwf PORTB	  ; afficher
    	decfsz segcounter,f ; segcounter -=1
    	goto loop1
     
    	end

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 291
    Points : 49
    Points
    49
    Par défaut
    Petite précision: Je dois faire ceci à l'aide d'un afficheur 7 segments en siùulation sur gpsim.

    J'arrive par exemple à afficher la valeur 1 avec le programme ci dessous.Mais je ne vois pas comment faire pour augmenter ce chiffre de 1 pour aller jusqu'a 9 sachant que je rentre pas une valeur en décimal mais en binaire dans le portB qui me sert a afficher le chiffre souhaité !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    list	p=16f628a
    include "p16f628a.inc"
     
    	org	0
     
    	bsf STATUS, RP0 	
    	bcf STATUS, RP1
     
    	movlw B'00000000'
    	movwf TRISB
     
    	movlw B'00000000'
    	movwf TRISA
     
     
    	bcf STATUS, RP0		
    	bcf STATUS, RP1
     
     
    	clrf PORTB 
    	movlw B'00000001'
    	movwf PORTA 		
    	movlw B'00000110'                         //chiffre 1
     	movwf PORTB		
     
    	end

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Points : 533
    Points
    533
    Par défaut
    Tu as la réponse : tu dois faire correspondre ta valeur binaire à ton compteur. En gros, à chaque valeur de 1 à 9, tu dois charger sur le port correspondant la valeur binaire associée. Y a une autre méthode plus soft, mais je ne m'en souviens plus. Désolé.

    Donc, en prenant les choses dans l'ordre, tu as ton compteur, tu décrémentes et tu teste avec btfss. Si ça vaut zéro, tu es à un, donc tu loope sur afficher_1 et, dans afficher_1, tu charges les LEDs correspondantes à 1. Ensuite, tu incrémentes ton compteur et tu reboucles. Le premier btfss sera pas bon vu que tu seras à 1 avec le décrément. Tu en refais un et donc, là, tu sais que tu es à 2 (le seul nombre à qui on retranche 2 qui vaille 0 c'est 2 ) et ainsi de suite.

    Code x86 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    loop :
    DECF
    BTFSS
    GOTO afficher_1
    BTFSS
    GOTO afficher_2
    .......
    GOTO afficher_9
    GOTO afficher_0  // si c'est aucun des chiffres entre 1 et 9 c'est obligatoirement 0
    INCF compteur 
    GOTO loop

    N'oublie pas de recharger compteur à 0 quand tu arrives dans afficher_0 (après l'affichage). De mémoire, ça donne à peu près ça. Comme je l'ai dit, ce n'est pas la méthode la plus propre (mais c'est la seule dont je me souvienne ).

Discussions similaires

  1. [XL-2003] Répéter une macro, réaliser une boucle
    Par zazrun dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/02/2012, 19h11
  2. [XL-2007] Réaliser une boucle
    Par alexandrek dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 02/02/2011, 11h19
  3. Réaliser une boucle
    Par guigui69 dans le forum VBScript
    Réponses: 0
    Dernier message: 16/06/2010, 11h03
  4. Comment réaliser une boucle pour remplir un tableau
    Par LVChatel dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 03/04/2009, 11h20
  5. réaliser une boucle pour afficher des sources
    Par cloridriks dans le forum Langage
    Réponses: 9
    Dernier message: 17/03/2008, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo