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

How to access data from Absolute Address



Hi ,

I have used BDATA for my 12 bit ADC program where all the 12 bits are collected at 0x20 by declearing


volatile unsigned int bdata ADC _at_ 0x20


The information of the data accessed from the ADC is stored in the respective locations from the the absolute address.

Now how can I access those two bytes from the specified location i.e., 0x20 and 0x21 in order to process the ADC data ?

I have initilzed as,

volatile unsigned char ReadADC1 _at_ 0x20;
volatile unsigned char ReadADC2 _at_ 0x21;

but I was getting DATA SPACE MEMORY OVERLAP
warning!!

Please suggest me how can I access two bytes from 0x20 and 0x21.

MURALI

Parents
  • If you want to use union, then go for

    union uData
    {
    	unsigned char MSB _at_ 0x20;
    	unsigned char LSB _at_ 0x21;
    
    	unsigned int uiValue _at_ 0x20;
    };
    
    union uData val1;
    void main()
    {
    val1.LSB = 0xff;
    val1.MSB = 0x0f;
    while(1);
    }
    

    or simply you can go as

    unsigned char MSB _at_ 0x20;
    unsigned char LSB _at_ 0x21;
    unsigned int uiADC;
    
    void main()
    {
    
    	MSB = 0x0f;
    	LSB = 0xff;
    	uiADC = (MSB*256) + LSB;
    }
    

Reply
  • If you want to use union, then go for

    union uData
    {
    	unsigned char MSB _at_ 0x20;
    	unsigned char LSB _at_ 0x21;
    
    	unsigned int uiValue _at_ 0x20;
    };
    
    union uData val1;
    void main()
    {
    val1.LSB = 0xff;
    val1.MSB = 0x0f;
    while(1);
    }
    

    or simply you can go as

    unsigned char MSB _at_ 0x20;
    unsigned char LSB _at_ 0x21;
    unsigned int uiADC;
    
    void main()
    {
    
    	MSB = 0x0f;
    	LSB = 0xff;
    	uiADC = (MSB*256) + LSB;
    }
    

Children