<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.mcselec.com/bavr/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.mcselec.com/bavr/index.php?action=history&amp;feed=atom&amp;title=DIM%2Fde</id>
		<title>DIM/de - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.mcselec.com/bavr/index.php?action=history&amp;feed=atom&amp;title=DIM%2Fde"/>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=DIM/de&amp;action=history"/>
		<updated>2026-04-26T02:54:07Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.18.6</generator>

	<entry>
		<id>http://wiki.mcselec.com/bavr/index.php?title=DIM/de&amp;diff=2323&amp;oldid=prev</id>
		<title>Admin: 1 revision</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=DIM/de&amp;diff=2323&amp;oldid=prev"/>
				<updated>2013-02-15T19:14:14Z</updated>
		
		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
		&lt;tr valign='top'&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
		&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:14, 15 February 2013&lt;/td&gt;
		&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://wiki.mcselec.com/bavr/index.php?title=DIM/de&amp;diff=2322&amp;oldid=prev</id>
		<title>Admin at 17:50, 8 February 2013</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=DIM/de&amp;diff=2322&amp;oldid=prev"/>
				<updated>2013-02-08T17:50:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== (**COPIED FROM ENGLISH PAGE**) === &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Action&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Dimension a variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Syntax&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Syntax&amp;quot;&amp;gt;DIM&amp;lt;/span&amp;gt;&amp;amp;nbsp;var AS [XRAM/SRAM/ERAM]type [AT location/variable] [OVERLAY]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Remarks&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 0px; margin: 0px 0px 0px 4px;&amp;quot;&amp;gt;&lt;br /&gt;
{| width=&amp;quot;547&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;border: 2px solid rgb(0, 0, 0); border-spacing: 0px; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;18%&amp;quot; style=&amp;quot;width: 95px; height: 48px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Var&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;85%&amp;quot; style=&amp;quot;width: 443px; height: 48px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Any valid variable name such as b1, i or longname. var can also be an array : ar(10) for example.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;18%&amp;quot; style=&amp;quot;width: 95px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Type&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;85%&amp;quot; style=&amp;quot;width: 443px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Bit, Byte, Word, Integer, Long, Dword, Single, Double or String&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;18%&amp;quot; style=&amp;quot;width: 95px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
XRAM&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;85%&amp;quot; style=&amp;quot;width: 443px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Specify XRAM to store variable into external memory&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;18%&amp;quot; style=&amp;quot;width: 95px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
SRAM&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;85%&amp;quot; style=&amp;quot;width: 443px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Specify SRAM to store variable into internal memory (default)&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;18%&amp;quot; style=&amp;quot;width: 95px; height: 16px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
ERAM&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;85%&amp;quot; style=&amp;quot;width: 443px; height: 16px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Specify ERAM to store the variable into EEPROM&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;18%&amp;quot; style=&amp;quot;width: 95px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
OVERLAY&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;85%&amp;quot; style=&amp;quot;width: 443px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Specify that the variable is overlaid in memory.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;18%&amp;quot; style=&amp;quot;width: 95px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
location&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;85%&amp;quot; style=&amp;quot;width: 443px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The address of name of the variable when OVERLAY is used.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A string variable needs an additional length parameter:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-style: italic;&amp;quot;&amp;gt;Dim s As XRAM String * 10&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the string can have a maximum length of 10 characters. Internally one additional byte is needed to store the end of string marker. Thus in the example above, 11 bytes will be used to store the string.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that BITS can only be stored in internal memory.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
You may also specify IRAM. IRAM is the place in memory where the registers are located : absolute address 0 - 31. BASCOM uses most of these addresses, depending on the instructions/options you use. For a&amp;amp;nbsp;[[$TINY]]&amp;amp;nbsp;chip it makes sense to use IRAM since there is NO SRAM in most tiny AVR chips (TINY15 for example). You may also use to IRAM to overlay registers in memory.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;See also&amp;amp;nbsp;[[Memory_usage|Memory usage]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;SCOPE&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The scope for DIM is global. So no matter where you use the DIM statements, the variable will end up as a global visible variable that is visible in all modules, procedures and functions.&lt;br /&gt;
&lt;br /&gt;
When you need a LOCAL variable that is local to the procedure or function, you can use&amp;amp;nbsp;[[LOCAL]].&lt;br /&gt;
&lt;br /&gt;
Since LOCAL variables are stored on the frame, it takes more code to dynamic generate and clean up these variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;AT&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The optional&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;AT&amp;lt;/span&amp;gt;&amp;amp;nbsp;parameter lets you specify where in memory the variable must be stored. When the memory location already is occupied, the first free memory location will be used. You need to look in the report file to see where the variable is located in memory.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;OVERLAY&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;OVERLAY&amp;lt;/span&amp;gt;&amp;amp;nbsp;option will not use any variable space. It will create a sort of phantom variable.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Dim&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;x&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;as&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Long&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;at&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;$60&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'long uses 60,61,62 and 63 hex of SRAM&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Dim&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;B1&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;As&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Byte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;At&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;$60&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Overlay&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; color: rgb(0, 128, 0);&amp;quot;&amp;gt;'$60 is the same as &amp;amp;H60&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Dim&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;B2&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;As&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Byte&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;At&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;$61&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Overlay&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
B1 and B2 are no real variables! They refer to a place in memory. In this case to &amp;amp;H60 and &amp;amp;H61. By assigning the phantom variable B1, you will write to memory location &amp;amp;H60 that is used by variable X.&lt;br /&gt;
&lt;br /&gt;
So to define it better, OVERLAY does create a normal usable variable, but it will be stored at the specified memory location which could be already be occupied by another OVERLAY variable, or by a normal variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|left]]Take care with the OVERLAY option. Use it only when you understand it.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span class=&amp;quot;f_ImageCaption&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also read the content of B1:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Print&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;B1&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will print the content of memory location &amp;amp;H60.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By using a phantom variable you can manipulate the individual bytes of real variables.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Overlay example 2&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Dim&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;L&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;as&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Long&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;at&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; color: rgb(255, 0, 0);&amp;quot;&amp;gt;&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;H60&amp;lt;/span&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Dim&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;W&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;as&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;Word&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;at&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; color: rgb(255, 0, 0);&amp;quot;&amp;gt;&amp;amp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier;&amp;quot;&amp;gt;H62&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;OVERLAY&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
W will now point to the upper two bytes of the long.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Overlay example 3&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Following you find the Bascom-AVR Simulator Memory status when you run the following example in Bascom-AVR Simulator. This example is intended to be used with the simulator. You need to uncomment the&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-size: 8pt; font-family: Courier; font-weight: bold; color: rgb(0, 0, 128);&amp;quot;&amp;gt;$sim&amp;amp;nbsp;&amp;lt;/span&amp;gt;when you want to test it on an real AVR.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
[[File:Notice.jpg|left|Notice.jpg]]Strings need an additional byte (Null termination). So you need an overlay of 8 bytes when you overlay a string with 7 bytes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Overlay example 1.jpg|center|Overlay example 1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
$regfile = &amp;quot;m644pdef.dat&amp;quot;&lt;br /&gt;
$crystal = 4000000&lt;br /&gt;
$hwstack = 60&lt;br /&gt;
$swstack = 60&lt;br /&gt;
$framesize = 60 'frame space can grow rapid when using it on variables with a big size (strings)&lt;br /&gt;
 &lt;br /&gt;
$baud = 9600&lt;br /&gt;
 &lt;br /&gt;
$sim '$sim to use this example in Bascom-AVR simulator&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;-------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Dim Array(5) As Byte&lt;br /&gt;
Dim My_string As String * 4 At Array Overlay&lt;br /&gt;
Dim K As Byte&lt;br /&gt;
 &lt;br /&gt;
K = 1&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
My_string = &amp;quot;Test&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
'---&amp;gt; 4 ASCII but 5 Bytes because of 0 Termination of String which is another byte&lt;br /&gt;
'This is how it will be stored in SRAM&lt;br /&gt;
' Array(1) Array(2) Array(3) Array(4) Array(5)&lt;br /&gt;
' +--------+--------+--------+--------+--------+&lt;br /&gt;
' | T | e | s | t | 00 |&lt;br /&gt;
' +--------+--------+--------+--------+--------+&lt;br /&gt;
 &lt;br /&gt;
Print Chr(array(1))&lt;br /&gt;
Print Chr(array(2))&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;-------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim Teststring As String * 5&lt;br /&gt;
Dim Ar(6) As Byte At Teststring Overlay&lt;br /&gt;
Dim J As Byte&lt;br /&gt;
J = &amp;amp;H03&lt;br /&gt;
 &lt;br /&gt;
Ar(5) = 47&lt;br /&gt;
 &lt;br /&gt;
Teststring = &amp;quot;Hello&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
' ---&amp;gt; 5 ASCII but 6 Bytes because of 0 Termination of String&lt;br /&gt;
'This is how it will be stored in SRAM&lt;br /&gt;
' Ar(1) Ar(2) Ar(3) Ar(4) Ar(5) Ar(6)&lt;br /&gt;
' +--------+--------+--------+--------+--------+--------+&lt;br /&gt;
' | H | e | l | l | o | 00 |&lt;br /&gt;
' +--------+--------+--------+--------+--------+--------+&lt;br /&gt;
 &lt;br /&gt;
For K = 1 To 5&lt;br /&gt;
Print Chr(ar(k)) ;&lt;br /&gt;
Next&lt;br /&gt;
Print&lt;br /&gt;
 &lt;br /&gt;
K = 1&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;-------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim My_word As Word&lt;br /&gt;
Dim Low_byte As Byte At My_word Overlay&lt;br /&gt;
Dim High_byte As Byte At My_word + 1 Overlay&lt;br /&gt;
 &lt;br /&gt;
Low_byte = &amp;amp;B0000_1111&lt;br /&gt;
High_byte = &amp;amp;B1111_0000&lt;br /&gt;
 &lt;br /&gt;
'This is how it will be stored in SRAM&lt;br /&gt;
' &amp;lt;-------my_word--------&amp;gt;&lt;br /&gt;
' +-----------+----------+&lt;br /&gt;
' | Low_byte |High_byte |&lt;br /&gt;
' +-----------+----------+&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'But when you print it with print bin(Variable) you will see it as&lt;br /&gt;
 &lt;br /&gt;
' &amp;lt;-------my_word--------&amp;gt;&lt;br /&gt;
' 11110000 00001111&lt;br /&gt;
' +-----------+----------+&lt;br /&gt;
' | High_byte |Low_byte |&lt;br /&gt;
' +-----------+----------+&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;My_word = &amp;quot; ; Bin(my_word)&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;-------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Dim My_long_1 As Long&lt;br /&gt;
Dim Byte_1 As Byte At My_long_1 Overlay&lt;br /&gt;
Dim Byte_2 As Byte At My_long_1 + 1 Overlay&lt;br /&gt;
Dim Byte_3 As Byte At My_long_1 + 2 Overlay&lt;br /&gt;
Dim Byte_4 As Byte At My_long_1 + 3 Overlay&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Byte_1 = 1&lt;br /&gt;
Byte_2 = 2&lt;br /&gt;
Byte_3 = 3&lt;br /&gt;
Byte_4 = 4&lt;br /&gt;
 &lt;br /&gt;
Print Bin(my_long_1)&lt;br /&gt;
 &lt;br /&gt;
'This is how it will be stored in SRAM&lt;br /&gt;
' &amp;lt;-------my_long_1------------&amp;gt;&lt;br /&gt;
' +-------+------+------+------+&lt;br /&gt;
' | Byte_1|Byte_2|Byte_3|Byte_4|&lt;br /&gt;
' +-------+------+------+------+&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'But when you print it with print bin(Variable) you will see it as&lt;br /&gt;
 &lt;br /&gt;
' &amp;lt;-------my_long_1------------&amp;gt;&lt;br /&gt;
' +-------+------+------+------+&lt;br /&gt;
' | Byte_4|Byte_3|Byte_2|Byte_1|&lt;br /&gt;
' +-------+------+------+------+&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;-------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim My_dword As Dword At $140 'This places the my_long_2 variable at a fixed SRAM address starting at HEX 140&lt;br /&gt;
Dim Byte__1 As Byte At $140 Overlay 'NOTICE: because this will be stored at the specified memory location&lt;br /&gt;
Dim Byte__2 As Byte At $141 Overlay ' which could be already be occupied by another OVERLAY variable, or by a normal variable the&lt;br /&gt;
Dim Byte__3 As Byte At $142 Overlay ' compiler generate an ERROR &amp;quot;Address already occupied&amp;quot; in this case.&lt;br /&gt;
Dim Byte__4 As Byte At $143 Overlay&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Byte__1 = 1&lt;br /&gt;
Byte__2 = 2&lt;br /&gt;
Byte__3 = 3&lt;br /&gt;
Byte__4 = 4&lt;br /&gt;
 &lt;br /&gt;
'This is how it will be stored in SRAM&lt;br /&gt;
' &amp;lt;----------my_dword----------&amp;gt;&lt;br /&gt;
' +-------+------+------+------+&lt;br /&gt;
' | Byte_1|Byte_2|Byte_3|Byte_4|&lt;br /&gt;
' +-------+------+------+------+&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'But when you print it with print bin(Variable) you will see it as&lt;br /&gt;
' &amp;lt;----------my_dword----------&amp;gt;&lt;br /&gt;
' +-------+------+------+------+&lt;br /&gt;
' | Byte_4|Byte_3|Byte_2|Byte_1|&lt;br /&gt;
' +-------+------+------+------+&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;my_dword = &amp;quot; ; Bin(my_dword)&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;-------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Dim My_dword_2 As Dword&lt;br /&gt;
Dim My_word_2 As Word At My_dword_2 Overlay&lt;br /&gt;
Dim My_byte3 As Byte At My_dword_2 + 2 Overlay&lt;br /&gt;
Dim My_byte4 As Byte At My_dword_2 + 3 Overlay&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
My_word_2 = &amp;amp;B11111111_00000000&lt;br /&gt;
My_byte3 = &amp;amp;B00000011&lt;br /&gt;
My_byte4 = &amp;amp;B10000000&lt;br /&gt;
 &lt;br /&gt;
'This is how it will be stored in SRAM&lt;br /&gt;
' &amp;lt;--------------my_dword_2------------&amp;gt;&lt;br /&gt;
' +---------+--------+--------+--------+&lt;br /&gt;
' | my_word_2 |my_byte3|my_byte4|&lt;br /&gt;
' +---------+--------+--------+--------+&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'But when you print it with print bin(Variable) you will see it as&lt;br /&gt;
' &amp;lt;--------------my_dword_2------------&amp;gt;&lt;br /&gt;
' +---------+--------+--------+--------+&lt;br /&gt;
' | my_byte4|my_byte3| my_word_2 |&lt;br /&gt;
' +---------+--------+--------+--------+&lt;br /&gt;
 &lt;br /&gt;
Print Bin(my_dword_2)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;-------------------------&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
' Now we examine the Null terminator in Strings&lt;br /&gt;
 &lt;br /&gt;
Dim My_date(11) As Byte '8 strings + 3 Null terminator = 11 Byte&lt;br /&gt;
Dim Day As String * 2 At My_date(1) Overlay&lt;br /&gt;
Dim Null_terminator As Byte At My_date(1) + 2 Overlay 'Null terminator&lt;br /&gt;
Dim Month As String * 2 At My_date(1) + 3 Overlay&lt;br /&gt;
Dim Null_terminator_2 As Byte At My_date(1) + 5 Overlay 'Null terminator&lt;br /&gt;
Dim Year As String * 4 At My_date(1) + 6 Overlay&lt;br /&gt;
Dim Null_terminator_3 As Byte At My_date(1) + 10 Overlay 'Null terminator&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Day = &amp;quot;16&amp;quot;&lt;br /&gt;
Month = &amp;quot;11&amp;quot;&lt;br /&gt;
Year = &amp;quot;2011&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
Print &amp;quot;Day= &amp;quot; ; Day&lt;br /&gt;
Print &amp;quot;Month= &amp;quot; ; Month&lt;br /&gt;
Print &amp;quot;Year= &amp;quot; ; Year&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'For example the print function use the Null Terminator to check the end of the string&lt;br /&gt;
'When we set now the Null_terminator to &amp;quot;/&amp;quot; (forward slash) instead of 0 then the print function print until a Null terminator is recognised&lt;br /&gt;
Null_terminator = 47 '47 = &amp;quot;/&amp;quot; (forward slash) '&lt;br /&gt;
 &lt;br /&gt;
Print Day 'This will now print &amp;quot;16/11&amp;quot; because the first Null terminator will be found after the &amp;quot;11&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
End 'end program&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Using variable name instead of address&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
As variables can be moved though the program during development it is not always convenient to specify an address. You can also use the name of the variable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DIM W as WORD&lt;br /&gt;
&lt;br /&gt;
Dim B as BYTE AT W OVERLAY&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now B is located at the same address as variable W.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For XRAM variables, you need&amp;amp;nbsp;[[Adding_XRAM_with_External_Memory_Interface|additional hardware&amp;amp;nbsp;]]: an external RAM and address decoder chip.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;ERAM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
For ERAM variables, it is important to understand that these are not normal variables. ERAM variables serve as a way to simple read and write the EEPROM memory. You can use READEEPROM and WRITEEEPROM for that purpose too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To write to an ERAM variable you have to use an SRAM variable as the source : eramVAR= sramVAR&lt;br /&gt;
&lt;br /&gt;
To read from an ERAM variable you have to use an SRAM variable as the targer : sramVAR=eramVAR&lt;br /&gt;
&lt;br /&gt;
Both variables need to be of the same data type. So when writing to an ERAM double, the source variable need to be of the double type too.&lt;br /&gt;
&lt;br /&gt;
ERAM can be assigned with a numeric value too : eramVAR= 123&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
You can not use an ERAM variable as you would use a normal variable.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Also keep in mind that when you write to ERAM, you write to EEPROM, and that after 100.000 times, the EEPROM will not erase properly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dim b as byte, bx as ERAM byte&lt;br /&gt;
&lt;br /&gt;
B= 1&lt;br /&gt;
&lt;br /&gt;
Bx=b ' write to EEPROM&lt;br /&gt;
&lt;br /&gt;
B=bx ' read from EEPROM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Xmega&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;The XMEGA need an additional configuration command :&amp;amp;nbsp;[[CONFIG_EEPROM|CONFIG EEPROM]]&amp;amp;nbsp;= MAPPED, in order to use ERAM.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Size&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
The maximum size of an array depends on the available memory and the data type. The XMEGA supports up to 8 MB of external memory. BASCOM supports this but the implementation is still considered BETA. It should not be used for production. The only thing you need to do to activate the big memory is to specify the size with $XRAMSIZE.&lt;br /&gt;
&lt;br /&gt;
For example : $XRAMSIZE=8000000 will tell the compiler that you use 8 MB of external memory.&lt;br /&gt;
&lt;br /&gt;
Additional registers must be set to pass the 24 bit address. This will create more code.&lt;br /&gt;
&lt;br /&gt;
There is only one restriction : you can/may not pass variables located in the external memory to a sub or function.&lt;br /&gt;
&lt;br /&gt;
The compiler will always pass a word address and does not support to pass the additional byte.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;See Also&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
[[CONST]]&amp;amp;nbsp;,&amp;amp;nbsp;[[LOCAL]]&amp;amp;nbsp;,&amp;amp;nbsp;[[Memory_usage|Memory usage]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Example&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&amp;lt;source lang=&amp;quot;bascomavr&amp;quot;&amp;gt;&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
'name : dim.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : demo: DIM&lt;br /&gt;
'micro : Mega48&lt;br /&gt;
'suited for demo : yes&lt;br /&gt;
'commercial addon needed : no&lt;br /&gt;
'-----------------------------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
$regfile = &amp;quot;m48def.dat&amp;quot; ' specify the used micro&lt;br /&gt;
$crystal = 4000000 ' used crystal frequency&lt;br /&gt;
$baud = 19200 ' use baud rate&lt;br /&gt;
$hwstack = 32 ' default use 32 for the hardware stack&lt;br /&gt;
$swstack = 10 ' default use 10 for the SW stack&lt;br /&gt;
$framesize = 40 ' default use 40 for the frame space&lt;br /&gt;
 &lt;br /&gt;
Dim B1 As Bit 'bit can be 0 or 1&lt;br /&gt;
Dim A As Byte 'byte range from 0-255&lt;br /&gt;
Dim C As Integer 'integer range from -32767 - +32768&lt;br /&gt;
Dim L As Long&lt;br /&gt;
Dim W As Word&lt;br /&gt;
Dim S As String * 11 'length can be up to 11 characters&lt;br /&gt;
 &lt;br /&gt;
'new feature : you can specify the address of the variable&lt;br /&gt;
Dim K As Integer At &amp;amp;H120&lt;br /&gt;
'the next dimensioned variable will be placed after variable s&lt;br /&gt;
Dim Kk As Integer&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
'Assign bits&lt;br /&gt;
B1 = 1 'or&lt;br /&gt;
Set B1 'use set&lt;br /&gt;
 &lt;br /&gt;
'Assign bytes&lt;br /&gt;
A = 12&lt;br /&gt;
A = A + 1&lt;br /&gt;
 &lt;br /&gt;
'Assign integer&lt;br /&gt;
C = -12&lt;br /&gt;
C = C + 100&lt;br /&gt;
Print C&lt;br /&gt;
 &lt;br /&gt;
W = 50000&lt;br /&gt;
Print W&lt;br /&gt;
 &lt;br /&gt;
'Assign long&lt;br /&gt;
L = 12345678&lt;br /&gt;
Print L&lt;br /&gt;
 &lt;br /&gt;
'Assign string&lt;br /&gt;
S = &amp;quot;Hello world&amp;quot;&lt;br /&gt;
Print S&lt;br /&gt;
End&lt;br /&gt;
&amp;lt;/source&amp;gt;&amp;lt;br/&amp;gt;{{Languages}}&lt;br /&gt;
&lt;br /&gt;
[[Category:BASCOM Language Reference/de]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>