Question langage C pour programmation PIC
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Question langage C pour programmation PIC



  1. #1
    Pilou81

    Question langage C pour programmation PIC


    ------

    Bonjour,

    Je débute en C, je dois programmer un PIC. Je suis tomber sur une petite routine qui m'intéresse mais je tombe sur un petit inconnu de commande en C.En effet j'ai un bout de code:
    Code:
    char s_write_byte(unsigned char value)   
    //------------------------------------------------------------------------------   
    // writes a byte on the Sensibus and checks the acknowledge   
    {   
       unsigned char i,error=0;   
       
       PORT_COND = 0;        //SHT11 WRITE   
      
       
       for (i=0x80;i>0;i/=2) //shift bit for masking   
       {   
         Delay_us(2);   
         if (i & value)   
             DATA=1; //masking value with i , write to SENSI-BUS   
         else   
             DATA=0;   
         SCK=1; //clk for SENSI-BUS   
            
         Delay_us(2);   //pulswith approx. 5 us   
            
         SCK=0;   
       }
    Il s'agit de faire un masque sur un octet pour ensuite les transmettre en série sur un bus. Mon souci c'est peu être tout bête mais je ne connais pas la commande dans la parenthèse de la boucle for??
    On fixe une valeur de départ à 0x80
    La condition de sortie est pour i>0?
    Et alors là ce i/=2 ?

    Merci pour votre aide

    -----

  2. #2
    pichnochio

    Re : Question langage C pour programmation PIC

    Bonjour,

    i= 0x80 donc 1000 0000 (128) à chaque fois que tu passes dans ta boucle for tu fais i/=2; soit i = i/2, donc tu fais un decalage à droite.
    Après être passé une fois dans ta boucle i= 0x40 donc 0100 0000 (64).
    Et tu fais ceci tant que i est supérieur à 0.

    J'espère que çà pourra t'aider.

  3. #3
    RicounetZap

    Re : Question langage C pour programmation PIC

    Bonjour,

    La notation i /= 2 est une abréviation pour i = i/2
    Tu trouveras aussi comme abréviation i +=2 pour i = i+2
    Tu pourras également trouver i++ pour i = i +1 ou i-- pour i = i-1

    Cordialement
    N'importe quoi, for ever :-)

  4. #4
    r4ph

    Re : Question langage C pour programmation PIC


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

    Re : Question langage C pour programmation PIC

    Ce serait plus lisible avec : "i = i>>1" soit : "i>>=1" ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  7. #6
    Pilou81

    Re : Question langage C pour programmation PIC

    Ok merci, entre temps j'avais trouvé, bon par contre un peu plus loin j'ai une autre commande qui est également un peu "raccourci":
    Code:
    char s_read_byte(unsigned char ack) 
    unsigned char i,val=0;   
       
       PORT_COND = 1;        //SHT11 READ   
       
       
       DATA=1; //release DATA-line   
       
       for (i=0x80;i>0;i/=2) //shift bit for masking   
       {   
         Delay_us(2);   
         SCK=1; //clk for SENSI-BUS   
       
         if (DATA) val=(val | i); //read bit   
         Delay_us(2);   
            
         SCK=0;   
       }
    Mon souci c'est cela : "if (DATA) val=(val | i);"
    Je suppose que l'on vient faire un mask en Ou logique puis on vient lire bit à bit mais je ne comprend pas trop le cheminement. J'aimerais avoir quelque chose de plus lisible quite à rajouter une ou 2 lignes.

    Merci

  8. #7
    amoniaque

    Re : Question langage C pour programmation PIC

    Hello,

    En gros : si Data est à 1 alors val copie le résultat de val OU i .
    Sachant que i est décalé bit à bit alors val se verra appliqué un masque en OU bit à bit.

    ++

Discussions similaires

  1. Besoin d'aide pour de la programmation d'un PIC en PIC BASIC
    Par invitee5982f08 dans le forum Électronique
    Réponses: 24
    Dernier message: 26/01/2010, 10h18
  2. Question programmation C pour PIC
    Par lcoulon dans le forum Électronique
    Réponses: 3
    Dernier message: 20/10/2009, 11h31
  3. Programmation PIC 18F97j60(langage C, MPLAB)
    Par invite304155d6 dans le forum Électronique
    Réponses: 13
    Dernier message: 17/07/2009, 08h41
  4. help me please programmation en langage c avec pic 16f677
    Par invite3f9bcd11 dans le forum Électronique
    Réponses: 3
    Dernier message: 04/06/2009, 10h34
  5. Quel langage pour la programmation des PIC
    Par gaga2410 dans le forum Électronique
    Réponses: 39
    Dernier message: 22/09/2007, 10h41
Découvrez nos comparatifs produits sur l'informatique et les technologies.