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

[PIC]-Manipulations des bits



  1. #1
    jorg1n

    [PIC]-Manipulations des bits


    ------

    Bonjour,

    1/je souhaite completer une libraire qui me permettrai de gérer le fonctionnement d'afficheur, mais je rencontre quelques problèmes pour la compléter, je n'arrive pas coder ça en C (compilateur C18):
    /* 4. Set LCD reset line /RST active low (if /RST is connected to a port bit) */
    /* 5. Set LCD reset line /RST passive high (if /RST is connected to a port bit) */
    2/De plus, j'aurai voulu savoir la différence qu'il y a entre:
    LATA=0x00;
    et
    PORTA=0x00;
    Je sais que PORTA=0x00 permet de fixer l'état du PORTA à 0, mais LATA?

    3/Au final, je souhaite compléter des fonctions du style:
    Code:
    void sim_reset( void )
       {
       /* 1. Init data port setup (if required by port architecture) */
    	TRISD=0x00;		//Déclaration du PORTD en sortie (Data)
    	PORTD=0x00;		//Initialisation à 0 du PORTD
       /* 2. Make RS, RW, CS0, CS1, RST to outputs (if required by port architecture) */
    	TRISB=0x07;		//Déclaration du PORTB en sortie (RST)
    	TRISC=0X00;		//Déclaration du PORTC en sortie (RS,R/W,E,/CSA,/CSB)
       /* 4. Set LCD reset line /RST active low   (if /RST is connected to a port bit) */
       /* 5. Set LCD reset line /RST passive high (if /RST is connected to a port bit) */
       }
    Que j'ai déja commencé à compléter (si c'est faux, n'hésiter pas à me dire)
    Merci d'avance

    -----

  2. Publicité
  3. #2
    Seb.26

    Re : [PIC]-Manipulations des bits

    Citation Envoyé par jorg1n Voir le message
    LATA=0x00;
    et
    PORTA=0x00;
    Il y a une explication technique (que j'ai oubliée ) mais en gros, utiliser PORTA pourrait générer des problèmes si tu fais des lectures/écritures ( voir le forum de Microchip pour le détail )

    En théorie je crois qu'on lit sur PORTA et qu'on écrit sur LATA ... à confirmer ...

    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  4. #3
    jorg1n

    Re : [PIC]-Manipulations des bits

    Et as tu une idée pour ma question 1/?
    Merci encore

  5. #4
    Seb.26

    Re : [PIC]-Manipulations des bits

    Citation Envoyé par jorg1n Voir le message
    Et as tu une idée pour ma question 1/?
    Merci encore

    1/je souhaite completer une libraire qui me permettrai de gérer le fonctionnement d'afficheur, mais je rencontre quelques problèmes pour la compléter, je n'arrive pas coder ça en C (compilateur C18)
    C'est quoi ta question ? ... Tu veux coder quoi en C ?

    Si tu veux manipuler un bit, fais toi un #define dessus, genre :
    #define LCD_RST PORTA.RA2

    Et ensuite tu l'utilise :
    LCD_RST=1; // ou 0 ... ;o)
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

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

    Re : [PIC]-Manipulations des bits

    Salut à vous,

    J'avais il y a quelque temps répondu à un post de traxxa que tu trouvera: ici sur ce topic.

    Si je ne me trompe pas, ça te donnera peut-être quelques pistes de réflexion, le cas échéant, n'hésite pas à insister sur ce que tu veux faire VRAIMENT

    Sur ce, bon courage et vive les champs de bits (non c'est pas une insulte () cf: ici ou ici ou autre hein )

  8. #6
    freepicbasic

    Re : [PIC]-Manipulations des bits

    La méthode de Seb.26 est la plus direct si l'adresse est fixe.

    Par contre si l'adresse est variable et le bit est variable aussi Il faut utiliser des mask.

    pour convertir un chiffre binaire de 1 à 8 en mask
    Code:
    movf  LeBit,w
    movlw 1
    movwf Mask
    loop:
    decfsz Lebit,f
    goto MaskOk
    rrl Mask,f
    goto loop
    Une fois le bit converti , on fera un masque avec cette valeur mask et on remet le résultat à la même place

    Pour "Setter" le bit
    Code:
    movf mask,w
    IORWF  DATA,f
    Pour "Resetter" le bit
    Code:
    ; inverse le mask pour effacer le bit
    comf mask,w
    ANDWF  DATA,f


    Si le data est a une adresse variable

    Pour "Setter" le bit
    Code:
    Movlw 0x20h ; adresse de la data
    Movwf FSR
    movf mask,w
    IORWF  INDF,f
    Pour "Resetter" le bit
    Code:
    Movlw 0x20h ; adresse de la data
    Movwf FSR
    comf mask,w
    ANDWF  INDF,f
    ici l'adresse est fixe on pourrait avoir un pointeur et l'incrémenter
    si 0x20 est un pointeur alors on écrira
    movf 0x20,w au lieu movlw 0x20
    ainsi incf 0x20,f pointera sur l'adresse suivante du tableau.
    A+, pat

  9. Publicité
  10. #7
    jorg1n

    Re : [PIC]-Manipulations des bits

    Merci...
    et en C ça donne quoi...

    Merci encore
    Bonne journée

  11. #8
    ChRiiS

    Re : [PIC]-Manipulations des bits

    Ca donne ce que j'ai dis plus haut

  12. #9
    Seb.26

    Re : [PIC]-Manipulations des bits

    Citation Envoyé par jorg1n Voir le message
    Merci...
    et en C ça donne quoi...
    Merci encore
    Bonne journée
    En gros, ça donne ça ( test le code, c'est du pifomètre en live )
    Code:
    void bit_set_0(volatile near uChar *adr, char bit_pos )
    {
     *adr &= ~(0x01<<bit_pos);
    }
    
    void bit_set_1(volatile near uChar *adr, char bit_pos )
    {
     *adr |= (0x01<<bit_pos);
    }
    Et tu utilise comme ça :
    Code:
    [...]
    bit_set_0( &PORTA, 5 );
    [...]
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  13. #10
    jorg1n

    Re : [PIC]-Manipulations des bits

    Je vous remercie pour votre aide...
    bonne fin de journée..

Discussions similaires

  1. PIC assembleur et gestion de mots de 16 bits
    Par Nico8583 dans le forum Électronique
    Réponses: 10
    Dernier message: 07/10/2009, 05h53
  2. Comment ajouter des bits
    Par Alex12 dans le forum Électronique
    Réponses: 5
    Dernier message: 25/12/2006, 22h25
  3. Qui connais logi pic & et question à propos des pic
    Par Floris dans le forum Électronique
    Réponses: 10
    Dernier message: 29/05/2006, 22h40
  4. Des bits aux atomes, la fusion réel-virtuel
    Par RSSBot dans le forum Commentez les actus, dossiers et définitions
    Réponses: 0
    Dernier message: 25/11/2005, 07h36
  5. Convertir 12 bits série en 7 bits paralléle avec un HC11 ?
    Par djsat dans le forum Électronique
    Réponses: 2
    Dernier message: 03/03/2005, 08h39
Découvrez nos comparatifs produits sur l'informatique et les technologies.