Hallo,
seit ein paar Tagen versuche ich mich mit Assembler und dem PIC16F873.
Ich wollte jetzt mal an das interne EEPROM ran. Bevor ich versuche zu schreibe, wollte ich erstmal lesen.
Habe bei Sprut ein paar Zeilen gefunden, wie ich schon Werte beim brennen ins EEPROM schreibe. Nun wollte ich in die erste Zelle einen Wert schreiben und den binär an die LEDs, die ich an PORTC dran habe, ausgeben lassen.
Habe den Code mal soweit kommentiert.
Mein Problem, alle LEDs gehen an. In den übrigen Zellen im EEPROM steht ja auch FF, also lese ich wohl die Falsche.
Code
- #include <P16F873.INC>
- org H'2100' ; bei Sprut gefunden, schreibt auch
- de 0x0F ; 0F in die erste EEPROM Zelle laut MPLAB View - EEPROM
- org 0x0
- ADDR equ 0x20 ; ums wirklich wie im Sample zu machen, definiere ich mal ADDR in den Speicher
- bsf STATUS,RP0
- clrf TRISC ; Alles Ausgang an PORTC (8 LEDs dran)
- bcf STATUS,RP0
- movlw 0x0
- movwf ADDR ; schreiben wir mal 0 nach ADDR
- ; Example 4-1 aus Datasheet 16F87x, EEPROM DATA READ
- bsf STATUS, RP1
- bcf STATUS, RP0
- movf ADDR, W ; ich denke ein clrw hätte es in meinem Fall auch getan, will ja auf 0000h im EEPROM
- movwf EEADR
- bsf STATUS, RP0
- bcf EECON1, EEPGD
- bsf EECON1, RD
- bcf STATUS, RP0
- movf EEDATA, W
- movwf PORTC ; Wert aus erster EEPROM Zelle ausgeben - 4 von 8 LEDs sollten leuchten
- end