(PIC16F / C) Octet sur plus plusieurs sorties (ex: PORTA = 0b10000000)
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

(PIC16F / C) Octet sur plus plusieurs sorties (ex: PORTA = 0b10000000)



  1. #1
    RichardNoirPlus

    (PIC16F / C) Octet sur plus plusieurs sorties (ex: PORTA = 0b10000000)


    ------

    Bonjour à tous, je bloque sur une question de syntaxe en C. Je n'arrive pas à trouver de réponse car je n'ai probablement pas les bons termes et ma question est précise.

    Il est facile de définir l'état des 8 bits d'un port instantanément en faisant par exemple PORTA = 0b10000000.

    Mais je souhaiterai "envoyer" l'état de mes 8 bits sur des sorties qui n'appartiennent pas au meme port. Comment faire ?

    Par exemple, comment faire en une seule commande:

    RA1 = 0;
    RB1 = 1;
    RB2 = 1;
    RC1 = 0;
    RC3 = 0;
    RD0 = 1;
    RD1 = 1;
    RD2 = 1;

    Je suppose qu'il faut faire une "définition" en début de programme mais je n'arrive pas à trouver la syntaxe... si quelqu'un pouvait m'aider, je le remercie d'avance !

    -----

  2. #2
    fdamien12

    Re : (PIC16F / C) Octet sur plus plusieurs sorties (ex: PORTA = 0b10000000)

    Bonjour,

    Ce n'est pas possible.
    Tu ne peux pas écrire simultanément dans plusieurs registres en une seule instruction.

    A+

  3. #3
    RichardNoirPlus

    Re : (PIC16F / C) Octet sur plus plusieurs sorties (ex: PORTA = 0b10000000)

    Merci pour ta réponse ! Donc je n'ai pas d'autre choix que de créer une fonction dédiée.

  4. #4
    RISC

    Re : (PIC16F / C) Octet sur plus plusieurs sorties (ex: PORTA = 0b10000000)

    Salut Richard,

    Voila un exemple comment faire cette "pirouette" pour un PIC24F :
    Code:
    //==============================================================================
    //  FUNCTION:     Display_LEDs(x)
    //  INPUT :       Hex Value to display
    //  RETURNS:      nothing
    //  REQUIREMENTS: none
    //==============================================================================
     void Display_LEDs(unsigned char x)
     {
         LATCbits.LATC6 =  (x & 0b10000000) >> 7;  // bit 7
         LATBbits.LATB12 = (x & 0b01000000) >> 6;  // bit 6
         LATAbits.LATA8 =  (x & 0b00100000) >> 5;  // bit 5
         LATAbits.LATA9 =  (x & 0b00010000) >> 4;  // bit 4
         LATBbits.LATB9 =  (x & 0b00001000) >> 3;  // bit 3
         LATBbits.LATB8 =  (x & 0b00000100) >> 2;  // bit 2
         LATAbits.LATA7 =  (x & 0b00000010) >> 1;  // bit 1
         LATAbits.LATA10 = (x & 0b00000001);      // bit 0
     }
    a+
    Dernière modification par RISC ; 30/10/2013 à 18h10.

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

    Re : (PIC16F / C) Octet sur plus plusieurs sorties (ex: PORTA = 0b10000000)

    Attention: Avec un peu de gymnastique on peut très bien repartir les bit sur plusieurs ports comme le montre RISC, le point important c'est que cela ne se fera pas en une seule instruction, mais en plusieurs donc pas exactement au même moment pour tout les bit. Généralement on s'en fiche, on parle de µs de délai.

Discussions similaires

  1. comment convertir plusieurs entrées analogiques sur un pic16f ou 18f
    Par invite3a59dfad dans le forum Électronique
    Réponses: 4
    Dernier message: 06/02/2013, 21h03
  2. Pull down portA ?
    Par naskar dans le forum Électronique
    Réponses: 3
    Dernier message: 19/11/2012, 15h08
  3. PortA sur PIC16F1825
    Par davidlm dans le forum Électronique
    Réponses: 2
    Dernier message: 01/09/2012, 11h53
  4. PORTA sur 16F877A
    Par flyingrock dans le forum Électronique
    Réponses: 8
    Dernier message: 01/03/2011, 20h23
  5. PORTA/B/C/D/E et LAT/A/B/C/D/E
    Par invite44cfef98 dans le forum Électronique
    Réponses: 1
    Dernier message: 02/06/2010, 13h15
Découvrez nos comparatifs produits sur l'informatique et les technologies.