Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

petit prob avec 16f628



  1. #1
    jvcxtrem

    petit prob avec 16f628


    ------

    bonjour
    voilà je dois faire un projet avec un pic 16f628 mais l'ensemble ne fonctionne pas
    j'ai donc décidé de tester mon pic et sa config avec un simple petit programme d'un chenillard
    seulement voilà ca marche pas non plus
    j'utilise l'OSC interne sans clk externe et dans mplab en mettant code protect etc... à off j'ai le code de config 3f18
    mais rien!!
    voici mon petit programme
    si quelqu'un sait y jetter un coup d'oeil

    merci d'avance

    ;
    ;Directive d' assemblage pour MPLAB
    ;


    LIST p=16F628 ; Définition de processeur
    #include <p16F628.inc> ; fichier include
    __config H'3F18'

    ;
    ;Définition des registres temporaires
    ;

    retard1 EQU 0x20 ; le registre temporaire retard1 se trouve à l' adresse 20
    retard2 EQU 0x21 ; le registre temporaire retard2 se trouve à l' adresse 21

    ;--------------
    ;Programme principal
    ;-------------
    ORG 0
    clrw ;
    MOVLW 0X07 ;on met 07 dans le registre w
    MOVWF CMCON ;on met 07= B'111' dans le registre CMCON qui désactive les entrées en comparateur
    ; du portA

    BSF STATUS,5 ;on met à 1 le 5eme bit du registre status pour accéder
    ; à la 2eme page mémoire trisb

    MOVLW B'00000000' ; on met 00h dans le registre W
    MOVWF TRISB ; on met 0h dans le port A il est programmé partiellement en E/S

    BCF STATUS,5 ; on remet à 0 le 5eme bit du registre status pour accéder
    ; à la 1eme page mémoire
    movlw D'32' ;
    movwf test ;
    movlw 0x04 ; on met 1 dans W
    movwf PORTB ; on met donc 1 sur le portb
    call tempo ; tempo de 255 µs
    bcl rlf PORTB,0 ; rotation à gauche
    call tempo ;
    decfsz test,0 ;
    goto bcl ; boucle à l'infini
    goto fin ;
    ;---------------
    ;temporisation
    ;------------

    tempo
    clrw ;
    MOVLW 0xFF ; on met ff dans le registre W
    MOVWF retard1 ; on met W dans le registre retard1
    MOVWF retard2 ; on met W dans le registre retard2

    attente

    DECFSZ retard1,0 ; on décrémente retard1 et on saute la prochaine instruction si
    GOTO attente ; le registre retard1 = 0 sinon retour à tempo

    movlw 0xFF ; on recharge retard1
    movwf retard1

    DECFSZ retard2,0 ; on décrémente retard2 et on saute la prochaine instruction si
    GOTO attente ; le registre retard2 = 0 sinon retour à tempo
    return

    fin
    end

    -----

  2. Publicité
  3. #2
    DavidDB

    Re : petit prob avec 16f628

    Salut,

    Où est la déclaration de la variable "test" ?

    Le sous-programme fin est incomplet, si tu le laisses tel-quel, c'est un reset assuré...

    David.

  4. #3
    Gérard

    Re : petit prob avec 16f628

    Citation Envoyé par jvcxtrem
    bonjour
    voilà je dois faire un projet avec un pic 16f628 mais l'ensemble ne fonctionne pas
    j'ai donc décidé de tester mon pic et sa config avec un simple petit programme d'un chenillard
    seulement voilà ca marche pas non plus
    j'utilise l'OSC interne sans clk externe et dans mplab en mettant code protect etc... à off j'ai le code de config 3f18
    mais rien!!
    voici mon petit programme
    si quelqu'un sait y jetter un coup d'oeil

    merci d'avance

    ;
    ;Directive d' assemblage pour MPLAB
    ;


    LIST p=16F628 ; Définition de processeur
    #include <p16F628.inc> ; fichier include
    __config H'3F18'

    ;
    ;Définition des registres temporaires
    ;

    retard1 EQU 0x20 ; le registre temporaire retard1 se trouve à l' adresse 20
    retard2 EQU 0x21 ; le registre temporaire retard2 se trouve à l' adresse 21

    ;--------------
    ;Programme principal
    ;-------------
    ORG 0
    clrw ;
    MOVLW 0X07 ;on met 07 dans le registre w
    MOVWF CMCON ;on met 07= B'111' dans le registre CMCON qui désactive les entrées en comparateur
    ; du portA

    BSF STATUS,5 ;on met à 1 le 5eme bit du registre status pour accéder
    ; à la 2eme page mémoire trisb

    MOVLW B'00000000' ; on met 00h dans le registre W
    MOVWF TRISB ; on met 0h dans le port A il est programmé partiellement en E/S
    tu mets 0 dans le registre de direction (TRIS) du port B et non du port A
    Citation Envoyé par jvcxtrem

    BCF STATUS,5 ; on remet à 0 le 5eme bit du registre status pour accéder
    ; à la 1eme page mémoire
    movlw D'32' ;
    movwf test ;
    movlw 0x04 ; on met 1 dans W
    tu mets 4 dans W et test n'est pas défini
    Citation Envoyé par jvcxtrem

    movwf PORTB ; on met donc 1 sur le portb
    non, tu mets 4
    Citation Envoyé par jvcxtrem

    call tempo ; tempo de 255 µs
    bcl rlf PORTB,0 ; rotation à gauche
    call tempo ;
    decfsz test,0 ;
    goto bcl ; boucle à l'infini
    goto fin ;
    goto fin est inutile
    Citation Envoyé par jvcxtrem

    ;---------------
    ;temporisation
    ;------------

    tempo
    clrw ;
    MOVLW 0xFF ; on met ff dans le registre W
    MOVWF retard1 ; on met W dans le registre retard1
    MOVWF retard2 ; on met W dans le registre retard2

    attente

    DECFSZ retard1,0 ; on décrémente retard1 et on saute la prochaine instruction si
    GOTO attente ; le registre retard1 = 0 sinon retour à tempo

    movlw 0xFF ; on recharge retard1
    movwf retard1

    DECFSZ retard2,0 ; on décrémente retard2 et on saute la prochaine instruction si
    GOTO attente ; le registre retard2 = 0 sinon retour à tempo
    return

    fin
    end
    fin ne sert à rien
    Gérard.
    Dernière modification par Gérard ; 03/06/2006 à 13h52.

  5. #4
    DavidDB

    Re : petit prob avec 16f628

    Salut Gérard,

    Je pense que jcvxtrem, veut simplement dire qu'il met le PORTB, 2 à un et du fait place une sorite à l'état haut.

    Sinon, l'utilisation de la boucle Fin (ou une instruction du style goto) est indipensable si il utilise la variable test...
    Par contre sans l'ulilisation de la variable "test" plusieurs lignes du programme deviennent inutiles sans nuire au fonctionnement du chenillard.

    David.

  6. A voir en vidéo sur Futura
  7. #5
    Gérard

    Re : petit prob avec 16f628

    Citation Envoyé par DavidDB
    Salut Gérard,

    Je pense que jcvxtrem, veut simplement dire qu'il met le PORTB, 2 à un et du fait place une sorite à l'état haut.
    Je ne comprends pas ce que tu veux dire.
    Citation Envoyé par DavidDB

    Sinon, l'utilisation de la boucle Fin (ou une instruction du style goto) est indipensable si il utilise la variable test...
    Par contre sans l'ulilisation de la variable "test" plusieurs lignes du programme deviennent inutiles sans nuire au fonctionnement du chenillard.

    David.
    Ce n'est pas très clair dans son prog.
    Gérard.

  8. #6
    DavidDB

    Re : petit prob avec 16f628

    0X04 hexa donne :
    en binaire 100 -> soit bit 2 ou encore PORTB, 2...

    Concernant la clareté de son programme, je ne le commente pas, car comme tous les débutants, il y a du travail...

    David.

  9. Publicité
  10. #7
    Gérard

    Re : petit prob avec 16f628

    Citation Envoyé par DavidDB
    0X04 hexa donne :
    en binaire 100 -> soit bit 2 ou encore PORTB, 2...
    OK, c'est vraiment tiré par les cheveux, le commentaire est plutôt flou

    Citation Envoyé par DavidDB
    Concernant la clareté de son programme, je ne le commente pas, car comme tous les débutants, il y a du travail...

    David.
    ... et pas qu'un peu
    Gérard.

Discussions similaires

  1. programmateur (timer)avec pic 16F628
    Par alainav1 dans le forum Électronique
    Réponses: 13
    Dernier message: 01/11/2008, 15h27
  2. comment utiliser le 74ls48p avec un 16F628
    Par silvo dans le forum Électronique
    Réponses: 23
    Dernier message: 03/09/2007, 23h11
  3. Gestion de batterie avec 16f628
    Par Magneau dans le forum Électronique
    Réponses: 1
    Dernier message: 01/11/2006, 17h55
  4. Problème avec 16F628
    Par maho dans le forum Électronique
    Réponses: 5
    Dernier message: 04/03/2005, 13h02
Découvrez nos comparatifs produits sur l'informatique et les technologies.