<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.arm.com/utility/feedstylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>newbie question re DATA / IDATA</title><link>https://community.arm.com/developer/tools-software/tools/f/keil-forum/33173/newbie-question-re-data-idata</link><description> I use uVision2, and am moving from 87C51 to 87C51RA2 . . . going from 128B of RAM to 512B RAM. 
 
Was having trouble with lack of RAM in the C51 due to a large number of variables. From what I understand, in order to utilize some of the upper 128B of</description><dc:language>en-US</dc:language><generator>Telligent Community 10</generator><item><title>RE: newbie question re DATA / IDATA</title><link>https://community.arm.com/thread/39547?ContentTypeID=1</link><pubDate>Fri, 20 Dec 2002 09:19:01 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:92113bff-91a4-4319-90a8-3d1db20dedc7</guid><dc:creator>Jon Ward</dc:creator><description>&lt;p&gt;Refer to the following knowledgebase articles for more information:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.keil.com/support/docs/302.htm"&gt;http://www.keil.com/support/docs/302.htm&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.keil.com/support/docs/1978.htm"&gt;http://www.keil.com/support/docs/1978.htm&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Jon&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: newbie question re DATA / IDATA</title><link>https://community.arm.com/thread/54890?ContentTypeID=1</link><pubDate>Fri, 20 Dec 2002 07:52:04 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:41e4d23a-fbf4-4e24-ae2a-30ed05fbd880</guid><dc:creator>erik  malund</dc:creator><description>&lt;p&gt;&lt;i&gt;I use uVision2, and am moving from 87C51 to 87C51RA2 . . . going from 128B of RAM to 512B RAM.&lt;/i&gt;&lt;br /&gt;
Do not confuse IDATA and EDATA&lt;br /&gt;
Idata is the traditional &amp;#39;52 internal RAM, EDATA is &amp;quot;external RAM moved onto the chip&amp;quot;&lt;br /&gt;
The RA2 has 256 bytes of &amp;#39;52 type memory, the first 128 or less being DATA, the remainder being IDATA. PLUS 256 bytes of EDATA.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Was having trouble with lack of RAM in the C51 due to a large number of variables. From what I understand, in order to utilize some of the upper 128B of RAM it seems that I want to stay with the Small Memory Model, and explicitly define some variables (which are not in speed sensitive areas of the program) as IDATA type. &lt;br /&gt;
True ???&lt;/i&gt;&lt;br /&gt;
yes&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;If I&amp;#39;m on track so far, is it also true that I can only specify those variables that are indirectly addressed throughout the program? &lt;/i&gt;&lt;br /&gt;
As far as C: the above should read &amp;quot;defined as IDATA.  As far as assembler: yes.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;if I define a variable as IDATA type, it will compile, even though that variable is directly addressed (from my understanding of direct vs. inderect addressing&lt;/i&gt;&lt;br /&gt;
anything below 128 is directly addressable regardless if how it is defined.&lt;br /&gt;
Any suggestions as to where to get definitive info re direct vs. indirect addressing.  in the&lt;br /&gt;
&amp;lt;a href=&amp;quot;&lt;a href="http://www.semiconductors.philips.com/acrobat/various/80C51_FAM_HARDWARE_1.pdf"&gt;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;http://www.semiconductors.philips.com/acrobat/various/80C51_FAM_HARDWARE_1.pdf&amp;quot;&amp;gt;ch3&lt;/a&gt; of the &amp;#39;51 &amp;quot;bible&amp;quot;&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erik&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: newbie question re DATA / IDATA</title><link>https://community.arm.com/thread/39545?ContentTypeID=1</link><pubDate>Fri, 20 Dec 2002 05:37:44 GMT</pubDate><guid isPermaLink="false">dd9e70c8-6d3c-4c71-b136-2456382a7b5c:cd2f855c-d750-4404-8e0e-b9e7859eac19</guid><dc:creator>John Donaldson</dc:creator><description>&lt;p&gt;&amp;quot;True ???&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Yes!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;is it also true that I can only specify those variables that are indirectly addressed throughout the program&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Don&amp;#39;t worry about direct/indirect addressing. The compiler does all the work for you, just go ahead and declare IDATA variables and use them exactly as you would DATA variables. Bear in mind (as you have already realised) that access to them will be somewhat slower than DATA variables.&lt;br /&gt;
&lt;br /&gt;
Stefan&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>