programmation 16f628
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

programmation 16f628



  1. #1
    kiira69

    programmation 16f628


    ------

    Salut à tout le monde je ne suis pas sur qu'il faut bien poster ce sujet ici corrigé moi si je me suis trompé.
    Je suis en train de programmer un pic 16f628 en Basic mon but est de faire clignoter des leds et aussi de faire un défilement j'ai déjà réussi ces 2 étapes j'ai également réussi faire en sorte de changer de programme en appuyant sur un bouton poussoir. Maintenant, je dois faire en sorte de pouvoir changer la vitesse de clignotement et de défilement des leds en appuyant sur un autre bouton poussoir (3 vitesses). C'est la que je bloque je n'y arrive pas du tout si quelqu'un pouvait me montrer quoi rajouter parce que la je sèche. Je pense qu'il faut jouer au niveau des tempos et faire des tests dedans (comme j'ai fait plus bas) mais je ne sais pas du tout comment taper ça dans mon programme. Je vous tiendrait au courant pour vous dire si ça marche

    merci d'avance.

    voila mon programme

    Code:
    
    
    
    
    
    
    
    		#include<p16f628.inc>
    		CBLOCK 0x020
            cmpt1 : 1
            cmpt2 : 1
            cmpt3 : 1
    		vit1  :	1
    		ENDC
    		#define   LED0               PORTB,0
            #define   LED1               PORTB,1
            #define   LED2               PORTB,2
            #define   LED3               PORTB,3
            #define   LED4               PORTB,4
            #define   LED5               PORTB,5
            #define   LED6               PORTB,6
            #define   LED7               PORTB,7
    		org 0
    		bsf		STATUS,RP0
    		bcf		TRISB,0
    		bcf		TRISB,1
    		bcf		TRISB,2
    		bcf		TRISB,3
    		bcf		TRISB,4
    		bcf		TRISB,5
    		bcf		TRISB,6
    		bcf		TRISB,7
    		bsf		TRISA,0   
    		bcf		STATUS,RP0
    		bsf		CMCON,0
    		bsf		CMCON,1
    		bsf		CMCON,2
    
    		movlw     1
            movwf     vit1
    cligno	
    
    		bsf		PORTB,0
    		bsf		PORTB,1
    		bsf		PORTB,2
    		bsf		PORTB,3
    		bsf		PORTB,4
    		bsf		PORTB,5
    		bsf		PORTB,6
    		bsf		PORTB,7	
    		call	tempo
    		bcf		PORTB,0
    		bcf		PORTB,1
    		bcf		PORTB,2
    		bcf		PORTB,3
    		bcf		PORTB,4
    		bcf		PORTB,5
    		bcf		PORTB,6
    		bcf		PORTB,7	
    		call 	tempo
    	
    		goto	cligno
    		
    
    defile	
    
    		bcf		PORTB,0
    		bcf		PORTB,1
    		bcf		PORTB,2
    		bcf		PORTB,3
    		bcf		PORTB,4
    		bcf		PORTB,5
    		bcf		PORTB,6
    		bcf		PORTB,7	
    		bsf		PORTB,0
    		call	tempo1
    		bcf		PORTB,0
    		bsf		PORTB,1
    		bcf		PORTB,2
    		bcf		PORTB,3
    		bcf		PORTB,4
    		bcf		PORTB,5
    		bcf		PORTB,6
    		bcf		PORTB,7	
    		call 	tempo1
    		bcf		PORTB,0
    		bcf		PORTB,1
    		bsf		PORTB,2
    		bcf		PORTB,3
    		bcf		PORTB,4
    		bcf		PORTB,5
    		bcf		PORTB,6
    		bcf		PORTB,7	
    		call	tempo1
    		bcf		PORTB,0
    		bcf		PORTB,1
    		bcf		PORTB,2
    		bsf		PORTB,3
    		bcf		PORTB,4
    		bcf		PORTB,5
    		bcf		PORTB,6
    		bcf		PORTB,7	
    		call 	tempo1
    		bcf		PORTB,0
    		bcf		PORTB,1
    		bcf		PORTB,2
    		bcf		PORTB,3
    		bsf		PORTB,4
    		bcf		PORTB,5
    		bcf		PORTB,6
    		bcf		PORTB,7	
    		call	tempo1
    		bcf		PORTB,0
    		bcf		PORTB,1
    		bcf		PORTB,2
    		bcf		PORTB,3
    		bcf		PORTB,4
    		bsf		PORTB,5
    		bcf		PORTB,6
    		bcf		PORTB,7	
    		call 	tempo1
    		bcf		PORTB,0
    		bcf		PORTB,1
    		bcf		PORTB,2
    		bcf		PORTB,3
    		bcf		PORTB,4
    		bcf		PORTB,5
    		bsf		PORTB,6
    		bcf		PORTB,7	
    		call	tempo1
    		bcf		PORTB,0
    		bcf		PORTB,1
    		bcf		PORTB,2
    		bcf		PORTB,3
    		bcf		PORTB,4
    		bcf		PORTB,5
    		bcf		PORTB,6
    		bsf		PORTB,7	
    		call 	tempo1
    		
    		goto	defile
    
    
    
    tempo
    		
    boucle3
    		clrf	cmpt2
    boucle2
    		clrf	cmpt1
    boucle1
    		nop
    		btfsc	PORTA,0
    		call	antireboncligno
    		btfsc	PORTA,1
    		call	vit
           	decfsz	cmpt1	,	f
    		goto	boucle1
    		decfsz	cmpt2	,	f
    		goto	boucle2
    		decfsz	cmpt3	,	f
    		goto	boucle3
    		return
    
    
    tempo1
    		movlw	1
    		movwf	cmpt3
    boucle6
    		clrf	cmpt2
    boucle5
    		clrf	cmpt1
    boucle4
    		nop
    		btfsc	PORTA,0
    		call	antirebondefile
    		btfsc	PORTA,1
            goto	vit
          	decfsz	cmpt1	,	f
    		goto	boucle4
    		decfsz	cmpt2	,	f
    		goto	boucle5
    		decfsz	cmpt3	,	f
    		goto	boucle6
    		return
    
    
    
    
    antireboncligno
    
            movlw	10
    		movwf	cmpt3
    boucle9
    		movlw	10
    		movwf	cmpt2
    boucle8
    		movlw	10
    		movwf	cmpt1
    boucle7
    		nop
           	decfsz	cmpt1	,	f
    		goto	boucle7
    		decfsz	cmpt2	,	f
    		goto	boucle8
    		decfsz	cmpt3	,	f
    		goto	boucle9
    		
    anti1	btfss	PORTA,0
    		btfsc     PORTA,1
            goto      vit
    		goto	defile 
    		goto	anti1
    
    antirebondefile
    
            movlw	10
    		movwf	cmpt3
    boucle12
    		movlw	10
    		movwf	cmpt2
    boucle11
    		movlw	10
    		movwf	cmpt1
    boucle10
    		nop
           	decfsz	cmpt1	,	f
    		goto	boucle10
    		decfsz	cmpt2	,	f
    		goto	boucle11
    		decfsz	cmpt3	,	f
    		goto	boucle12
    		
    anti2	btfss	PORTA,0
    		btfsc     PORTA,1
            goto      vit
    		goto	cligno
    		goto	anti2
    		
    
    vit   	btfsc     PORTA,1
            goto      vit
            incf      vit1,f
    		movlw	  vit1
    		sublw	  4
    		btfsc	  STATUS,Z
    		goto	  vit
            return
    
    		end

    -----
    Dernière modification par Philou67 ; 10/03/2014 à 15h42. Motif: Utilisation de la balise CODE au lieu d'une PJ

  2. #2
    paolo123

    Re : programmation 16f628

    Faire clignoter des leds avec de l'assembleur en 2014

  3. #3
    luc_1049

    Re : programmation 16f628

    Bonsoir

    Utilisez un timer peut être une solution .
    Sinon :
    Interruption si appuie sur un des 3 BP, vous pouvez toutefois ajoutez une troisième scrutation sur ce BP VITESSE
    Dans le Test de celui activé :
    Si BP vitesse appuyé et SI VITESSE = V_NORMALE alors VITESSE = X GOTO clignot
    SI BP vitesse appuyé et si VITESSE = X alors VITESSE = Z GOTO clignot
    Si BP vitesse appuyé et si VITESSE = Z alors VITESSE = V_NORMALE GOTO clignot
    Dans votre boucle de clignotement :
    Si VITESSE =X doubler le délai par exemple
    Si VITESSE = Z tripler le delai par exemple
    SI VITESSE = V_NORMALE ne faire qu'un delai

    VITESSE sera initialisée au début de votre programme par V_NORMALE

    Voila dans les grandes lignes !
    Ps : Comme dit si votre PIC a suffisamment de ressources programmez en C car vous n'avez pas besoin de performance de vitesse.
    Il faut faire attention à la taille de pile notamment à l'appel imbriqué de fonctions en C....

    L'assembleur ne motive pas tjs pour aider...
    cdlt
    Dernière modification par luc_1049 ; 10/03/2014 à 22h06.

  4. #4
    mgduc

    Re : programmation 16f628

    Citation Envoyé par paolo123 Voir le message
    Faire clignoter des leds avec de l'assembleur en 2014
    Bien oui, pourquoi pas, moi j'ai toujours codé en ASM , je déteste le C car on ne comprend pas ce que l'on fais et bien souvent on à besoin de plein de fichier include qui fond le travail à notre place. Donc la satisfaction d'avoir réussi est moins grande... de plus, j'y comprend rien en C.

    Je projette d'aprendre le C seulement parce que les PIC32 ne se programme qu'en C et j'aimerais m'y convertir...

  5. A voir en vidéo sur Futura
  6. #5
    luc_1049

    Re : programmation 16f628

    Bonjour

    Ne relançons pas cette discussion sur l'assembleur mais quand même on peut admettre je pense qu'en C dit langage structuré c'est assez intuitif pour faire une boucle.

    Ceci dit l'assembleur appris ne sera pas perdu et si demain KIRA69 maîtrise les interruptions il pourra faire des choses optimisées à l'avenir, même s'il n'a pas de contrainte de performance.

    cdlt

Discussions similaires

  1. aide pour la programmation d'un PIC 16F628
    Par badr-MOB dans le forum Électronique
    Réponses: 14
    Dernier message: 21/01/2011, 22h47
  2. Programmation pic 16f628
    Par invite0b8beced dans le forum Électronique
    Réponses: 7
    Dernier message: 03/08/2008, 06h37
  3. programmation PIC16F648A et 16F628
    Par alainav1 dans le forum Électronique
    Réponses: 3
    Dernier message: 25/03/2007, 15h41
  4. pic 16F628
    Par LTHOMAS dans le forum Électronique
    Réponses: 7
    Dernier message: 29/03/2006, 21h13
  5. pic 16F628
    Par invitea78e17c9 dans le forum Électronique
    Réponses: 1
    Dernier message: 15/03/2004, 21h04
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...