;------------------------------------------------ ;- EEprom AT24C32 - ;- Es werden immer 2 Byte gelesen oder - ;- geschrieben - Übergabe in EE_copy - ;------------------------------------------------ EEPROM_write: rcall i2c_start ;i²C starten ldi accu,0xA0 ;Adresse DS1307 "W" rcall i2c_write ;schreiben mov accu,EE_Adr ;"Page" Adresse laden rcall i2c_write ;schreiben mov accu,EE_index ;Adresse unteres Byte rcall i2c_write ;schreiben lds accu,EE_copy+0 ;EE_copy schreiben rcall i2c_write ; lds accu,EE_copy+1 ; rcall i2c_write ; rcall i2c_stop ;stop ret EEPROM_read: ldi yl,low(EE_copy) ;y-pointer auf EE_Wecker ldi yh,high(EE_copy) ; rcall i2c_start ;i2c starten ldi accu,0xA0 ;adresse Ds1307 "W" rcall i2c_write ;schreiben mov accu,EE_Adr ;Page Adresse laden rcall i2c_write ;schreiben mov accu,EE_index ;Unter adresse als EE_index laden rcall i2c_write ;schreiben rcall i2c_start ;restart ldi accu,0xA1 ;Adresse DS1307 "R" rcall i2c_write ;schreiben ldi index,0x02 ;index 2 Byte EE_r: rcall i2c_read ;Byte auslesen st y+,accu ;speichern tst index ;schon 2 gespeichert? brne EE_r ;nicht, dann noch ein rcall i2c_stop ;i2c stoppen ret