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

Interruption sur PORTB du PIC 16F877



  1. #1
    HCM7

    Interruption sur PORTB du PIC 16F877

    Bonjour à tous,
    Je suis débutant en programmation des pic. je voulais faire un programme avec interruption mes ça marche pas !!!!
    y a t il un expert qui peut m'indiquer ou est le probleme?
    test isis.png
    test C.png

    -----


  2. Publicité
  3. #2
    Jack

    Re : Interruption sur PORTB du PIC 16F877

    Merci de faire l'immense effort de lire les règles du forum info: Les pics, c'est en électronique!

    http://forums.futura-sciences.com/pr...ves-forum.html

  4. #3
    kevin8z

    Re : Interruption sur PORTB du PIC 16F877

    Il y a plusieurs problèmes:

    - Ton PORTB est en sorti.
    - Tu test le flag avec un "==0" au lieu d'un "==1", + pas de remise à 0 de celui-ci
    - Pour configurer une entrée en entrée digital, il faut configurer le registre ANSEL et pas ADCON0/1
    - Il faut mettre une pull-up sur MCLR sauf si elle est configurée en entrée numérique.

    Il faudrait que tu revienne aux bases, regarde les cours de BIGONOFF tout est bien expliqué dedans.

  5. #4
    HCM7

    Thumbs up Re : Interruption sur PORTB du PIC 16F877

    Merci bien Kevin8z je vais corriger les fautes dont tu as indiqué

  6. #5
    HCM7

    Re : Interruption sur PORTB du PIC 16F877

    Kevin j'ai changé la comparaison du bit flag RBIF et j'ai configurer le port B en entrée et ca marche bien...
    Sauf que je dois t'informer que le registre ANSEL n'existe pas sur le 16F877 et pour configurer les port en digital il faut faire avec ADCON0/1.
    Merci pour ton aide

  7. A voir en vidéo sur Futura
  8. #6
    kevin8z

    Re : Interruption sur PORTB du PIC 16F877

    Citation Envoyé par HCM7 Voir le message
    Kevin j'ai changé la comparaison du bit flag RBIF et j'ai configurer le port B en entrée et ca marche bien...
    Sauf que je dois t'informer que le registre ANSEL n'existe pas sur le 16F877 et pour configurer les port en digital il faut faire avec ADCON0/1.
    Merci pour ton aide
    C'est sympa d'avoir un retour.

    Je te confirme que le registre ANSEL existe bien sur le PIC16f887, et que celui-ci doit être configuré.
    Le lien de la doc : http://ww1.microchip.com/downloads/e...Doc/41291F.pdf A regarder page 42

  9. Publicité
  10. #7
    HULK28

    Re : Interruption sur PORTB du PIC 16F877

    Bonsoir,

    oui sans doute sur le PIC16F887, mais HCM7 parle du PIC16F877.
    Tout est bien qui finit.

  11. #8
    kevin8z

    Re : Interruption sur PORTB du PIC 16F877

    Citation Envoyé par HULK28 Voir le message
    oui sans doute sur le PIC16F887, mais HCM7 parle du PIC16F877.
    Autant pour moi, j'avais cru voir 887

  12. #9
    HCM7

    Re : Interruption sur PORTB du PIC 16F877

    Mes amis je veux poser une question : quand il entre dans l'interruption mon programme ne veut s'en sortir ;il fait comme dans une boucle . j'ai mis le flag RBIF à 0 mais même problème. d’après ce que j'ai lu il faut lire aussi le port d'entrée d'interruption ,comment le faire!??

  13. #10
    kevin8z

    Re : Interruption sur PORTB du PIC 16F877

    Montre ton code, ce sera plus simple

  14. #11
    HCM7

    Re : Interruption sur PORTB du PIC 16F877

    kevin c juste un simple code pour maîtriser les interruptions:


    void interrupt(){ // interruption de test allume la 2 eme lampe
    if (INTCON.RBIF==1){


    PORTA.B1=1;
    delay_ms(200);
    PORTA.B2=1;
    delay_ms(200);
    PORTA.B3=1;
    delay_ms(200);
    PORTA.B5=1;
    delay_ms(200);
    PORTB=0xFF;
    INTCON.RBIF==0;
    }

    }

    void main() {


    INTCON=0b10001000;
    TRISB=0xFF;
    PORTB=0x00;

    TRISA=0x00;
    PORTA=0x00;

    delay_ms(500);
    PORTA.B0=1;
    delay_ms(200);
    PORTA.B0=0;

    while(1){};

    }

  15. #12
    spown

    Re : Interruption sur PORTB du PIC 16F877

    Bonjour/Bonsoir,

    Je te conseille de réviser un peu les bases du langage C, pour affecter une valeur à une variable il suffit de mettre un seul '=' , pour comparer on met '=='.

    INTCON.RBIF=0; // flag ã zero

  16. Publicité
  17. #13
    kevin8z

    Re : Interruption sur PORTB du PIC 16F877

    J'ajoute aussi que tu essai de modifier le PORTB dans ton interruption alors que tu l'utilise en entrée.

  18. #14
    HCM7

    Re : Interruption sur PORTB du PIC 16F877

    Merci pour votre aide precieuse

Sur le même thème :

Discussions similaires

  1. Question PIC valeur PORTB avec RBO en interruption
    Par boy30 dans le forum Électronique
    Réponses: 1
    Dernier message: 09/04/2013, 11h20
  2. Interruption sur portB (PIC 18F4550)
    Par Francois06 dans le forum Électronique
    Réponses: 5
    Dernier message: 15/06/2012, 14h27
  3. Interruption sur le portB
    Par Mazen21 dans le forum Électronique
    Réponses: 13
    Dernier message: 13/10/2011, 00h46
  4. FLOWCODE-interruption sur PORTB
    Par GINET dans le forum Électronique
    Réponses: 3
    Dernier message: 23/01/2011, 16h45
  5. Interruption portB pic
    Par nirvo dans le forum Électronique
    Réponses: 34
    Dernier message: 11/08/2010, 13h56