ATtiny13 >> Assembly

EEPROM


在寫入EEPROM之前EEMPE必須先設定,接著才能開始寫入數據


main.s

  .equ EEARL, 0x1e
  .equ EEDR,  0x1d
  .equ EECR,  0x1c

  .org 0x0000
  rjmp main
   
  .org 0x0020
main:
  ldi r16, 0x55
  ldi r17, 0x00
  rcall eeprom_write
  
  ldi r16, 0xaa
  ldi r17, 0x01
  rcall eeprom_write

loop:
  rjmp loop

eeprom_write:
  sbic EECR, 1
  rjmp eeprom_write
  out EEARL, r17
  out EEDR, r16
  sbi EECR, 2
  sbi EECR, 1
  ret

eeprom_read:
  sbic EECR, 1
  rjmp eeprom_read
  out EEARL, r17
  sbi EECR, 0
  in r16, EEDR
  ret 

編譯和燒錄

$ avr-as -mmcu=attiny13 -o main.o main.s
$ avr-ld -o main.elf main.o
$ avr-objcopy --output-target=ihex main.elf main.ihex
$ sudo avrdude -c usbasp -p t13 -B 1024 -U flash:w:main.ihex:i

接著讀取Flash

$ sudo avrdude -c usbasp -p t13 -B 1024 -U eeprom:r:eeprom.bin:r

完成


返回上一頁