In my developinp system there has no external ram. So if i want to define a data array more than 128 bytes, how should i do? How can i access 80h-0ffh inchip ram of 89c52 in c code?
The 8051 architecture can only access internal RAM from 80H - FFH indirectly. (Direct access to those addresses goes to the SFR space instead.) So, you must put those variables into "idata". The C compiler will let you declare "idata" variables larger than 128 bytes. They'll just take up some of your "data" space as well.