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
    invite3d4f2ff3

    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
    invite07b6682b

    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
    invite89303051

    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

  4. #4
    invite60c6fa7f

    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
    invite3d4f2ff3

    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
    invitedb9b1ced

    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 invitedd558ae9 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 invite458a37e0 dans le forum Électronique
    Réponses: 39
    Dernier message: 22/09/2007, 10h41
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...