Skip to content

Instantly share code, notes, and snippets.

@nuttt
Last active December 18, 2015 16:39
Show Gist options
  • Save nuttt/5812628 to your computer and use it in GitHub Desktop.
Save nuttt/5812628 to your computer and use it in GitHub Desktop.
EEPROM Read/Write for ATMega168
.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