<?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=READEEPROM</id>
		<title>READEEPROM - 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=READEEPROM"/>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=READEEPROM&amp;action=history"/>
		<updated>2026-04-07T12:02:21Z</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=READEEPROM&amp;diff=804&amp;oldid=prev</id>
		<title>Admin: Created page with &quot;= &lt;span class=&quot;f_Header&quot;&gt;Action&lt;/span&gt; =  Reads the content from the DATA EEPROM and stores it into a variable.  &lt;span style=&quot;font-family: Arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;  &lt;span style=&quot;...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.mcselec.com/bavr/index.php?title=READEEPROM&amp;diff=804&amp;oldid=prev"/>
				<updated>2013-02-11T21:56:39Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Action&amp;lt;/span&amp;gt; =  Reads the content from the DATA EEPROM and stores it into a variable.  &amp;lt;span style=&amp;quot;font-family: Arial;&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;  &amp;lt;span style=&amp;quot;...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= &amp;lt;span class=&amp;quot;f_Header&amp;quot;&amp;gt;Action&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
Reads the content from the DATA EEPROM and stores it into 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;READEEPROM&amp;lt;/span&amp;gt;&amp;amp;nbsp;var , address&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;604&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;14%&amp;quot; style=&amp;quot;width: 81px; 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;100%&amp;quot; style=&amp;quot;width: 514px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The name of the variable that must be stored&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;14%&amp;quot; style=&amp;quot;width: 81px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
Address&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;100%&amp;quot; style=&amp;quot;width: 514px; border: 1px solid rgb(0, 0, 0);&amp;quot; | &lt;br /&gt;
The address in the EEPROM where the data must be read from.&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;
This statement is provided for backwards compatibility with BASCOM-8051.&lt;br /&gt;
&lt;br /&gt;
You can also use the ERAM variable instead of READEEPROM&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;
Dim V as Eram Byte 'store in EEPROM&lt;br /&gt;
&lt;br /&gt;
Dim B As Byte &amp;amp;nbsp;'normal variable&lt;br /&gt;
&lt;br /&gt;
B = 10&lt;br /&gt;
&lt;br /&gt;
V = B &amp;amp;nbsp; 'store variable in EEPROM&lt;br /&gt;
&lt;br /&gt;
B = V &amp;amp;nbsp; '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;
When you use the assignment version, the data types must be equal!&lt;br /&gt;
&lt;br /&gt;
According to a data sheet from ATMEL, the first location in the EEPROM with address 0, can be overwritten during a reset so don't use it.&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;
You may also use ERAM variables as indexes. Like&amp;amp;nbsp;:&lt;br /&gt;
&lt;br /&gt;
Dim ar(10) as Eram Byte&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;
When you omit the address label in consecutive reads, you must use a new READEEPROM statement. It will not work in a loop:&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;
Readeeprom B , Label1&lt;br /&gt;
&lt;br /&gt;
Print B&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;
Do&lt;br /&gt;
&lt;br /&gt;
Readeeprom B&lt;br /&gt;
&lt;br /&gt;
Print B Loop&lt;br /&gt;
&lt;br /&gt;
Until B = 5&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;
This will not work since there is no pointer maintained. The way it will work&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;
ReadEEprom B , Label1 ' specify label&lt;br /&gt;
&lt;br /&gt;
ReadEEPROM B ' read next address in EEPROM&lt;br /&gt;
&lt;br /&gt;
ReadEEPROM B ' read next address in EEPROM&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Dim Next_Read as Integer&lt;br /&gt;
&lt;br /&gt;
Dim In_byte as Byte&lt;br /&gt;
&lt;br /&gt;
Dim Eerom_position as Integer&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
Eerom_position = 20 &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;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;' Set the start read point in eerom&lt;br /&gt;
&lt;br /&gt;
For Next_Read = 1 To 5 Step 1 &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; ' Set up the bytes to be read from eeprom&lt;br /&gt;
&lt;br /&gt;
Readeeprom In_byte , eeprom_position &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; ' Use a variable as the pointer to eeprom location&lt;br /&gt;
&lt;br /&gt;
Call another_sub_routine &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;amp;nbsp; &amp;amp;nbsp;'&lt;br /&gt;
&lt;br /&gt;
Incr Chr_pos_font &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;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;' Now set pointer for next eeprom data byte&lt;br /&gt;
&lt;br /&gt;
Next&lt;br /&gt;
&lt;br /&gt;
&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;
In the XMEGA, you need to set the mode to mapped&amp;amp;nbsp;:&amp;amp;nbsp;[[CONFIG EEPROM|CONFIG EEPROM]]&amp;amp;nbsp;= MAPPED.&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;
[[WRITEEEPROM]]&amp;amp;nbsp;,&amp;amp;nbsp;[[$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;ASM&amp;lt;/span&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
NONE&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 : eeprom2.bas&lt;br /&gt;
'copyright : (c) 1995-2005, MCS Electronics&lt;br /&gt;
'purpose : shows how to use labels with READEEPROM&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;
'first dimension a variable&lt;br /&gt;
Dim B As Byte&lt;br /&gt;
Dim Yes As String * 1&lt;br /&gt;
 &lt;br /&gt;
'Usage for readeeprom and writeeprom :&lt;br /&gt;
'readeeprom var, address&lt;br /&gt;
 &lt;br /&gt;
'A new option is to use a label for the address of the data&lt;br /&gt;
'Since this data is in an external file and not in the code the eeprom data&lt;br /&gt;
'should be specified first. This in contrast with the normal DATA lines which must&lt;br /&gt;
'be placed at the end of your program!!&lt;br /&gt;
 &lt;br /&gt;
'first tell the compiler that we are using EEPROM to store the DATA&lt;br /&gt;
$eeprom&lt;br /&gt;
 &lt;br /&gt;
'the generated EEP file is a binary file.&lt;br /&gt;
'Use $EEPROMHEX to create an Intel Hex file usable with AVR Studio.&lt;br /&gt;
'$eepromhex&lt;br /&gt;
 &lt;br /&gt;
'specify a label&lt;br /&gt;
Label1:&lt;br /&gt;
Data 1 , 2 , 3 , 4 , 5&lt;br /&gt;
Label2:&lt;br /&gt;
Data 10 , 20 , 30 , 40 , 50&lt;br /&gt;
 &lt;br /&gt;
'Switch back to normal data lines in case they are used&lt;br /&gt;
$data&lt;br /&gt;
 &lt;br /&gt;
'All the code above does not generate real object code&lt;br /&gt;
'It only creates a file with the EEP extension&lt;br /&gt;
 &lt;br /&gt;
'Use the new label option&lt;br /&gt;
Readeeprom B , Label1&lt;br /&gt;
Print B 'prints 1&lt;br /&gt;
'Succesive reads will read the next value&lt;br /&gt;
'But the first time the label must be specified so the start is known&lt;br /&gt;
Readeeprom B&lt;br /&gt;
Print B 'prints 2&lt;br /&gt;
 &lt;br /&gt;
Readeeprom B , Label2&lt;br /&gt;
Print B 'prints 10&lt;br /&gt;
Readeeprom B&lt;br /&gt;
Print B 'prints 20&lt;br /&gt;
 &lt;br /&gt;
'And it works for writing too :&lt;br /&gt;
'but since the programming can interfere we add a stop here&lt;br /&gt;
Input &amp;quot;Ready?&amp;quot; , Yes&lt;br /&gt;
B = 100&lt;br /&gt;
Writeeeprom B , Label1&lt;br /&gt;
B = 101&lt;br /&gt;
Writeeeprom B&lt;br /&gt;
 &lt;br /&gt;
'read it back&lt;br /&gt;
Readeeprom B , Label1&lt;br /&gt;
Print B 'prints 100&lt;br /&gt;
'Succesive reads will read the next value&lt;br /&gt;
'But the first time the label must be specified so the start is known&lt;br /&gt;
Readeeprom B&lt;br /&gt;
Print B 'prints 101&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]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>