This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

XBYTE [] Addressing Problem

HI,

How to specify a address while writing to EEPROM in 89c51ED2.

It is writing to EEPROM when I give the following code after setting the flags of EECON register.


  XBYTE[0x0050] = '1';

But if I declare a variable with following type and assign a value to it, it is not writing to EEPROM

  unsigned char xdata *addr;
  *addr = '1';

//after setting all the flags i write this code for assigning;

 *addr = '2';

But this is not writing to EEPROM.

Kindly provide the solution for this.

Parents
  • Dear,

    I have called the function in the following manner

    Write(0x0050,'x');

    While defining I used following format.

    void Write(unsigned char xdata* Addr,char element)

    While writing I have given this code after setring the EECON register.

    (*Addr) = element;

    But I am unable to write to EEPROM.

    CODE:

    #define BUSY EECON = EECON & 0X01
    #define E_EECON EECON  = EECON | 0X02
    #define D_EECON EECON = EECON & 0X00
    
    
    Write(unsigned char xdata* Addr, char element)
    {
      while(BUSY)
      EA = 0;
      E_EECON;
      *Addr = element;
      D_EECON;
      EA = 1;
    }
    
    

Reply
  • Dear,

    I have called the function in the following manner

    Write(0x0050,'x');

    While defining I used following format.

    void Write(unsigned char xdata* Addr,char element)

    While writing I have given this code after setring the EECON register.

    (*Addr) = element;

    But I am unable to write to EEPROM.

    CODE:

    #define BUSY EECON = EECON & 0X01
    #define E_EECON EECON  = EECON | 0X02
    #define D_EECON EECON = EECON & 0X00
    
    
    Write(unsigned char xdata* Addr, char element)
    {
      while(BUSY)
      EA = 0;
      E_EECON;
      *Addr = element;
      D_EECON;
      EA = 1;
    }
    
    

Children