Is it possible to write a code in C which can be directly used to address more than 16bit for 8051 compiler - uVison2
Yes. Keil calls such memory "far" memory, and uses a three-byte pointer to access it.
For most architectures, you'll have to customize an assembler file that tells the compiler how to find the upper bits of your address bus.
"For most architectures, you'll have to customize an assembler file that tells the compiler how to find the upper bits of your address bus."
If you're lucky, the manufacturer may be able to supply a suitable file, or Keil may have one "ready-rubbed" - do check before re-inventing the wheel!