Last active
December 18, 2015 16:39
-
-
Save nuttt/5812628 to your computer and use it in GitHub Desktop.
EEPROM Read/Write for ATMega168
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.INCLUDE "m168def.inc" | |
.LIST | |
.CSEG | |
.ORG 0 | |
jmp main | |
.DEF addr1 = R30 | |
.DEF addr2 = R31 | |
.DEF data = R29 | |
; Read from addr(r30:r31) put into r29 | |
read: | |
; Wait for completion of previous write | |
sbic EECR, EEPE | |
rjmp read | |
; Set up address (r30:r31) in address register | |
out EEARH, R30 | |
out EEARL, R31 | |
; Start eeprom read by setting EERE | |
sbi EECR, EERE | |
in R29, EEDR | |
ret | |
; Write r29 to addr (r30:r31) | |
write: | |
; Wait for completion of previous write | |
sbic EECR, EEPE | |
rjmp write | |
; Set up address (r30:r31) in address register | |
out EEARH, R30 | |
out EEARL, R31 | |
; Write data (r29) to register | |
out EEDR, R29 | |
; Write logical one to EEMPE | |
sbi EECR, EEMPE | |
; Start eeprom write by setting EEPE | |
sbi EECR, EEPE | |
ret | |
main: | |
ldi addr1, 0x00 | |
ldi addr2, 0x00 | |
ldi data, 0xF1 | |
call write | |
ldi addr2, 0x01 | |
ldi data, 0xE2 | |
call write | |
ldi addr2, 0x00 | |
call read | |
jmp loop | |
loop: | |
NOP | |
jmp loop |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment