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

Adresse Case mémoire PIC16F628



  1. #1
    zied74

    Adresse Case mémoire PIC16F628


    ------

    Bonjour à Tous,

    Je suis entrain de réaliser un petit projet dont une partie et basée sur une communication via Bus I2C entre 2 PIC 16F628A.
    Mon problème est le suivant :
    Pour pouvoir réaliser cette communication, le Protocole I2C nous indique et nous oblige à mettre sur la Bus l'Adresse de la Donnée à transférer ainsi que sa valeur se trouvant sur le Pic Slave. Comment je peux savoir c'est quoi l'adresse de cette variable.?

    Exp: Si j'ai une variable "N_jour" de type int déclarée dans le Slave, quelle est son adresse ???.

    NB: J'utilise :
    - Compilateur CCS C.
    - Environnement : MPLAB.
    - ISIS v6.3

    Merci et bonne journée pour Tous.

    -----

  2. #2
    sdec25

    Re : Adresse Case mémoire PIC16F628

    Salut.
    Si tu as une variable N_jour, son adresse c'est :
    Code:
    &N_Jour
    Elle est normalement codée sur 16 bits.
    Pour faire l'inverse (utiliser une variable avec son adresse, que ce soit en lecture ou écriture), il faut faire :
    Code:
    *adresse
    Voir les pointeurs pour plus d'infos.
    A+

  3. #3
    zied74

    Re : Adresse Case mémoire PIC16F628

    Bonjour et Merci pour votre intervention assez rapide,

    Peut-on avoir cette adresse en Hexa ??? car et suivant un petit code source que j'ai trouvé sur le web portant sur une communication entre PIC et DS1307 (circuit Horloge Temps Réel- RTC) fait avec le compilateur CCS l'adresse est écrite en décimal - voici le code :
    1-
    void write_DS1307(byte address, BYTE data)
    {
    short int status;
    i2c_start();
    i2c_write(0xd0);
    i2c_write(address);
    i2c_write(data);
    i2c_stop();
    i2c_start();
    status=i2c_write(0xd0);
    while(status==1)
    {
    i2c_start();
    status=i2c_write(0xd0);
    }
    }


    2-

    void main(void)
    {
    int8 sec,min,hour,day,date,month,ye ar;

    delay_ms(50);
    init_ds1307(); // initial DS1307
    sec=read_ds1307(0);
    write_ds1307(0,sec & 0x7F); // enable oscillator(bit 7 =0)
    }

    Dans les limites de possible, voulez vous m'expliquer ça : sec & 0x7F

    Merci et m'execuse pour tout dérangement.

  4. #4
    sdec25

    Re : Adresse Case mémoire PIC16F628

    Citation Envoyé par zied74
    Peut-on avoir cette adresse en Hexa ??? car et suivant un petit code source que j'ai trouvé sur le web portant sur une communication entre PIC et DS1307 (circuit Horloge Temps Réel- RTC) fait avec le compilateur CCS l'adresse est écrite en décimal
    L'hexa et le décimal ne sont que des représentations d'un nombre. Si on n'affiche pas l'adresse il n'y a pas besoin qu'elle soit en hexa. Elle n'est ni en hexa, ni en décimal. Le type spécifie uniquement la taille du nombre (en octets).

    Code:
    sec & 0x7F
    L'opérateur & est le ET bit à bit.
    0x7F = 0b01111111. "sec & 0x7F" permet de s'assurer que le bit n°7 est à 0.
    Dernière modification par sdec25 ; 07/08/2009 à 13h15.

Sur le même thème :

Discussions similaires

  1. Pic16f628/648 i²c
    Par thesheep dans le forum Électronique
    Réponses: 2
    Dernier message: 21/04/2009, 09h18
  2. stabilité du pic16f628
    Par elsena dans le forum Électronique
    Réponses: 3
    Dernier message: 16/04/2009, 11h49
  3. Dip switchs et adresse mémoire
    Par tonyman dans le forum Électronique
    Réponses: 3
    Dernier message: 11/03/2008, 19h22
  4. Problème PIC16F628
    Par Patrick dans le forum Électronique
    Réponses: 8
    Dernier message: 10/03/2007, 18h21
  5. PIC16F628 et rs232
    Par Yannux dans le forum Électronique
    Réponses: 3
    Dernier message: 29/06/2006, 23h27
Découvrez nos comparatifs produits sur l'informatique et les technologies.