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

programmation du pic16f887 sous Mikroc



  1. #1
    didca7

    programmation du pic16f887 sous Mikroc


    ------

    Bonjour tout le monde,

    j'apprends la programmation du c, voici mon code pour convertir une valeur analogique et envoyer le resultat sur port b et c du pic16f887.

    j'ai essayé le code et simuler sous proteus et ca marche. Le hic, c'est que j'ai ajouté un interrupteur sur RD7 ( pin30) je voulais que le CAD se met en marche si RD7 (pin30)

    passe a zero, ce qui est pas le cas, le convertisseur converti sans tenir compte de l'interrupteur. fermé ou ouvert il converti. voici mon code. Merci d'avance si qqn peut m'aider.



    Code:
    unsigned int adc;
    void main()
    {
     ADCON1 = 0x80;
     TRISA = 0xFF;         // PORTA is input
     TRISC = 0; // Pins RC7, RC6 are outputs
     TRISB = 0;        // PORTB is output
     TRISD = 1;       // PORTB is input
     PORTB = 0;     //LED OFF
         ADC_Init(); //Initializes ADC Module
     do
     {
     
     if(PORTD.F7 == 0) ; //If the switch is pressed
        {
           Delay_ms(100);    //Switch Debounce
           if(PORTD.F7 == 0);//If the switch is still pressed
                {
                  adc = ADC_Read(1); // Get 10-bit results of AD conversion //of channel 1
                  PORTB = adc;      // Send lower 8 bits to PORTB
                  PORTC = adc >> 8; // Send 2 most significant       //bits to RC0, RC1
                }
        }
     } while(1);
    
    }

    -----
    Dernière modification par Antoane ; 09/02/2017 à 16h44. Motif: Ajout balises [code]

  2. Publicité
  3. #2
    satinas

    Re : programmation du pic16f887 sous Mikroc

    Salut,
    Quand tu fais TRISD = 1, c'est D0 que tu sélectionnes en input, et D1 à D7 en output
    TRISD = 0x80;

  4. #3
    didca7

    Re : programmation du pic16f887 sous Mikroc

    salut Satinas et merci pour la reponse.
    J ai corrigé le port D , mais la conversion ( qui marche ) ne tient pas compte du bouton poussoir si D7 est a zero ou a 5v.
    Dernière modification par didca7 ; 09/02/2017 à 15h10.

  5. #4
    Fantas-Pic

    Re : programmation du pic16f887 sous Mikroc

    bonjour,

    Il faudrait mettre ta broche du BP en numérique ! et la lecture de tension sur RA1 en analogique.

    Code:
    ANSELD = 0;  // Le PORTD en numérique
    ANSELA = 1;  // seulement RA1 en analogique

    Comment as tu câblé ton Bp ? Un schéma ?

    d’après ta logique de programmation, tu devrais avoir mis ta broche RD7 avec une Pull-up ! est ce bien le cas ?


    Regarde ici : Lien vers tuto

  6. A voir en vidéo sur Futura
  7. Comparatifs

    Gagnez du temps et de l'argent grâce à nos comparatifs de produits. Parmi nos sujets :
  8. #5
    didca7

    Re : programmation du pic16f887 sous Mikroc

    salut Fantas, merci de votre reponse,

    en fait le cad fonctionne correctement, j'ai just ajouté un bp pour que le cad se mette en marche une fois R7 sera a zero.
    voici le shema de cablage.
    Images attachées Images attachées

  9. #6
    satinas

    Re : programmation du pic16f887 sous Mikroc

    Tu mets des ; derrière tes if, c'est pas de jeu.
    if ( ... ) {
    ...
    }

    le bloc { ...} est toujours exécuté dans le cas qui suit :
    if ( ...) ;
    {
    ...
    }
    Dernière modification par satinas ; 09/02/2017 à 17h48.

  10. Publicité
  11. #7
    dje8269

    Re : programmation du pic16f887 sous Mikroc

    Bonsoir,

    Je suppose que c'est de la simulation !

    on ne voit pas l'alimentation du PIC ? ainsi que le découplage qui va avec !

    As tu essaye en déclarant l'entrée RD7 en numerique ?
    C'est en faisant des erreurs; que l'on apprend le mieux !!

  12. #8
    didca7

    Re : programmation du pic16f887 sous Mikroc

    Bonsoir tout le monde,


    Merci satinas, le probeme etait ; ca fonctionne maintenant, quand R7 est a zero le cad fonctionne et quand il est a vcc il convertit plus.

    par contre j'ai pas compris la difference if ( ...) ; et la meme chose sans ;

    c'est de la simulaton sous proteus
    merci tout le monde

  13. #9
    satinas

    Re : programmation du pic16f887 sous Mikroc

    En C derrière un if tu êux mettre un bloc ou une instruction, qui sera exécuté si la condition du if est vérifié.

    if ( ...) { bloc }
    if (... ) instruction;

    Un ; tout seul c'est une instruction comme une autre, mais qui fait rien du tout. Donc ton if se limite au ;
    Le programme continue sur le bloc qui suit, qui est devenu indépendant du if par le ; qui tue.

  14. #10
    didca7

    Re : programmation du pic16f887 sous Mikroc

    Bonsoir Satinas,

    Grand merci pour vos précieuses informations.

Discussions similaires

  1. [Programmation] Programmation interruption PIC16F887 avec MPLab
    Par jc_renaud dans le forum Électronique
    Réponses: 13
    Dernier message: 12/11/2015, 21h26
  2. programmation sur MikroC
    Par Marouaa dans le forum Électronique
    Réponses: 16
    Dernier message: 28/08/2014, 19h38
  3. programmation mikroc
    Par nesrine_1991 dans le forum Électronique
    Réponses: 0
    Dernier message: 08/06/2012, 12h29
  4. Programmation dsPIC sous mikroC for dsPIC
    Par flash68 dans le forum Électronique
    Réponses: 8
    Dernier message: 10/03/2009, 08h31
Découvrez nos comparatifs produits sur l'informatique et les technologies.