Hallo,
Du sollst allerdings vor dem lesen testen, ob Dein EEPROM überhaupt bereit ist
gelesen zu werden.
Ich poste Dir mal zwei Makros aus meinem aktuellen Projekt:
1. lesen
2. schreibenCode:.macro READMOTORVALUE wait4eep1: sbic EECR,EEPE rjmp wait4eep1 ldi tmp,LOW(radrechts) out EEARL,tmp sbi EECR,EERE in tmp,EEDR wait4eep2: sbic EECR,EEPE rjmp wait4eep2 ldi tmp1,LOW(radlinks) out EEARL,tmp sbi EECR,EERE in tmp1,EEDR .endmacroDie EEprom adressen werden so deklariertCode:.macro SAVEMOTORVALUEFUNC wait4ready1: sbic EECR,EEPE rjmp wait4ready1 out EECR,null ldi tmp,LOW(radrechts) out EEARL,tmp in tmp,OCR0A in tmp1,OCR0B out EEDR,tmp cli sbi EECR,EEMPE sbi EECR,EEPE sei wait4ready2: sbic EECR,EEPE rjmp wait4ready2 out EECR,null ldi tmp,LOW(radlinks) out EEARL,tmp out EEDR,tmp1 cli sbi EECR,EEMPE sbi EECR,EEPE sei .endmacro
Es werden zwar 2 Adressen nacheinander gelesen, das sollte aber das Prinzip zeigen.Code:;; EEPROM Segment .eseg radrechts: .db 0x80 radlinks: .db 0x80
Zu HIGH und LOW habe ich hier
was geschrieben, ich hoffe es ist verständlich genug.
Gruß Sebastian






Zitieren

Lesezeichen