??? 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! |
Topic | Author | Date |
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 |