We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
hi Dis is my program..and its showing error saying 'IDATA' segment too large...does it depend on the version of kiel used ?
#include <REG52.H> #define ST_CNTRL P1 sfr ldata = 0x80; sbit rs = P3^7; sbit rw = P3^6; sbit en = P3^5; sbit busy = P0^7; //--------------Funtion declaration void MSDelay (unsigned int); //Delay void lcdcmd (unsigned char value); void lcddata (unsigned char value); void lcdready (); void stepper(unsigned char k); void antistepper(unsigned char k) ; void delay(void); unsigned char getkey (); unsigned char j,key=0,data1,data2,data0,count ; unsigned char idata msg0[17] = {"R 642"}; unsigned char idata msg1[17] = {"R 2986"}; unsigned char idata msg2[17] = {"R 21440"}; unsigned char idata msg3[17] = {"R "}; unsigned char idata msg4[17] = {"R "}; unsigned char idata msg5[17] = {"R "}; unsigned char idata msg6[17] = {"R "}; unsigned char idata msg7[17] = {"R "}; unsigned char idata msg8[17] = {"R "}; unsigned char idata msg9[17] = {"R "}; unsigned char idata msg10[17] = {"R "}; unsigned char idata msg11[17] = {"R "}; unsigned char idata msg12[17] = {"R "}; unsigned char idata msg13[17] = {"R "}; unsigned char idata msg14[17] = {"R "}; unsigned char idata msg15[17] = {"R "}; unsigned char idata msg16[17] = {"R "}; unsigned char idata msg17[17] = {"R "}; unsigned char idata msg18[17] = {"R "}; unsigned char idata msg19[17] = {"R "}; unsigned char idata msg20[17] = {"R "}; unsigned char idata msg21[17] = {"R "}; unsigned char idata msg22[17] = {"R "}; unsigned char idata msg23[17] = {"R "}; unsigned char idata msg24[17] = {"R "}; unsigned char idata msg25[17] = {"R "}; unsigned char idata msg26[17] = {"R "}; unsigned char idata msg27[17] = {"R "}; unsigned char idata msg28[17] = {"R "}; unsigned char idata msg29[17] = {"R "}; unsigned char idata msg30[17] = {"R "}; unsigned char idata msg31[17] = {"R "}; unsigned char idata msg32[17] = {"R "}; unsigned char idata msg33[17] = {"R "}; unsigned char idata msg34[17] = {"R "}; unsigned char idata msg35[17] = {"R "}; unsigned char idata msg36[17] = {"R "}; unsigned char idata msg37[17] = {"R "}; unsigned char idata msg38[17] = {"R "}; unsigned char idata msg39[17] = {"R "}; unsigned char idata msg40[17] = {"R "}; unsigned char idata msg41[17] = {"R "}; unsigned char idata msg42[17] = {"R "}; unsigned char idata msg43[17] = {"R "}; unsigned char idata msg44[17] = {"R "}; unsigned char idata msg45[17] = {"R "}; unsigned char idata msg46[17] = {"R "}; unsigned char idata msg47[17] = {"R "}; unsigned char idata msg48[17] = {"R "}; unsigned char idata msg49[17] = {"R "}; unsigned char idata msg50[17] = {"R "}; unsigned char idata msg51[17] = {"R "}; unsigned char idata msg52[17] = {"R "}; unsigned char idata msg53[17] = {"R "}; unsigned char idata msg54[17] = {"R "}; unsigned char idata msg55[17] = {"R "}; unsigned char idata msg56[17] = {"R "}; unsigned char idata msg57[17] = {"R "}; unsigned char idata msg58[17] = {"R "}; unsigned char idata msg59[17] = {"R "}; unsigned char idata msg60[17] = {"R "}; unsigned char idata msg61[17] = {"R "}; unsigned char idata msg62[17] = {"R "}; unsigned char idata msg633[17] = {"R "}; unsigned char idata msg64[17] = {"R "}; unsigned char idata msg65[17] = {"R "}; unsigned char idata msg66[17] = {"R "}; unsigned char idata msg67[17] = {"R "}; unsigned char idata msg68[17] = {"R "}; unsigned char idata msg69[17] = {"R "}; unsigned char idata msg70[17] = {"R "}; unsigned char idata msg71[17] = {"R "}; unsigned char idata msg72[17] = {"R "}; unsigned char idata msg73[17] = {"R "}; unsigned char idata msg74[17] = {"R "}; unsigned char idata msg75[17] = {"R "}; unsigned char idata msg76[17] = {"R "}; unsigned char idata msg77[17] = {"R "}; unsigned char idata msg78[17] = {"R "}; unsigned char idata msg79[17] = {"R "}; unsigned char idata msg80[17] = {"R "}; unsigned char idata msg81[17] = {"R "}; unsigned char idata msg82[17] = {"R "}; unsigned char idata msg83[17] = {"R "}; unsigned char idata msg84[17] = {"R "}; unsigned char idata msg85[17] = {"R "}; unsigned char idata msg86[17] = {"R "}; unsigned char idata msg87[17] = {"R "}; unsigned char idata msg88[17] = {"R "}; unsigned char idata msg89[17] = {"POT RESET"}; unsigned char idata keypad[4][4]= { '1','2','3','/', '4','5','6','*', '7','8','9','-', 'Z','0','X','+',};
Are all these messages constants? Why not store them in the code space?
Yes sir all the msgs are constants and I will be calling them as to display those on my LCD...
So how about answering the second part of Per's question:
Why not store them in the code space?
If you don't know what "code space" is, then you need to study the links I gave earlier...
Has it not occurred to you that this is a grossly inefficient way to store nearly a hundred strings where 98% of them are identical?!
It is probably also going to be rather cumbersome to deal with nearly a hundred arrays with names like msg0, msg1, msg2...
None of this is specific to the 8051 - the same would apply, say, on a PC - but the issues become all the more significant on a platform like the 8051 with very limited resources!
Hi can i use above instruction to store thes const and call them wen required to display??
code char test[] = "R-21440,t-27"; <pre/> by naming it test1,test2,test3 so on??
code char test[] = "R-21440,t-27";
1) this is not an 'instruction' 2) yes you can 3) names like test1 make no sense, use descriptive names
Erik
oh ok..So I can assign around 90 constants using this right??
Have you actually read the Keil C51 manual at all? That would tell you what specific limitations apply to Keil C51.
Have you actually read those basic documents about the 8051 architecture? Those would tell you what limitations apply to the architecture.
Apart from whether you can define around 90 constants, have you thought about whether you really should be doing that at all? Does it really seem like an efficent or effective approach?!