Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
04/08/09 08:09
Read: times


 
#164480 - You are mistaken
Responding to: ???'s previous message
Mahesh Joshi said:
But infact (if I will develope this system) this file will be only 1 module of my program. The pointer in snippet will be declared as extern in other modules

That is still unneccessary!

You just need to declare the name of the array as extern - you don't need the extra pointer!

eg, in 8255.c
xdata unsigned char at 0x4000 MY_8255_BASE[4];

//MY_8255_BASE[4] represents Port-A, Port-B, Port-C & Control Registor of 8255
 

Then, in 8255.h
enum
{
   PPI_PORT_A  = 0, // Index for Port-A
   PPI_PORT_B  = 1, // Index for Port-B
   PPI_PORT_C  = 2, // Index for Port-C
   PPI_CONTROL = 3  // Index for the Control register
}

extern xdata unsigned char MY_8255_BASE[];
 

And any module can just #include 8255.h to gain direct access to the 8255 without having to know its address!


Benifit of which is, other modules may not need to know actual address of 8255.

They don't need to anyhow - see above.

Also I dont need to write routine such as
unsigned char read_porta(void) or void write_to_portb(unsigned char val)

You don't need that, either - just use the array!

Ofcourse, we will have to take care that value of ptr_8255 is not changed anywhere in program

Removing the pointer removes all risk of that!



List of 25 messages in thread
TopicAuthorDate
How to access memory mapped 8255 with SDCC?            01/01/70 00:00      
   also asked here:            01/01/70 00:00      
   8255 with SDCC            01/01/70 00:00      
   Wrong question?            01/01/70 00:00      
      It's C            01/01/70 00:00      
         not on the 8051            01/01/70 00:00      
            Oh yes it is!            01/01/70 00:00      
   Use XBYTE macro            01/01/70 00:00      
      Isn't there a problem with that?            01/01/70 00:00      
         Oops. I used a wrong example            01/01/70 00:00      
            Portability            01/01/70 00:00      
               like this...            01/01/70 00:00      
   How about a macro in ASM, callable from 'C'?            01/01/70 00:00      
      This is HOW I will Prefer            01/01/70 00:00      
         LST output of my previously posted code            01/01/70 00:00      
            Try the comparison            01/01/70 00:00      
         Unnecessarily complicated!            01/01/70 00:00      
            NOT UNNECESSARILY            01/01/70 00:00      
               You are mistaken            01/01/70 00:00      
               Array or pointer similar            01/01/70 00:00      
      That should not be necessary            01/01/70 00:00      
         SFRX(...,. ..) worked            01/01/70 00:00      
            SFRX - presumably, that's an SDCC extension?            01/01/70 00:00      
               Found it!            01/01/70 00:00      
                  RE: Found it!            01/01/70 00:00      

Back to Subject List