Hallo,
ich hoffe doch der Urlaub war okay.
Ja, das kann so noch nicht funktionieren aus mehreren Gründen.
1) Der PIC18F4455 hat ab Adresse 0x800 gar keinen RAM mehr, er besitzt nur 2048 Bytes und damit endet der RAM bei 0x07FF.
Siehe Datenblatt Seite 60
2) Der Ram ist unterteilt in verschiedene Blöcke. Um entsprechend darauf zuzugreifen benötigt man ein sogenanntes BANKSELECT.
Zuständig ist dafür das Register BSR
Solange Du mit MOVFF arbeitest, brauchst Du Dir keine Gedanken um das Bankselect machen. Sobald aber MOVWF oder MOVF ins Spiel kommt, musst Du sicherstellen, daß auch die richtige Rambank aktiv ist.
ich hab mal deinen Code abgeändert und ausprobiert. So geht es dann:
ich hoffe, ich konnte Dir damit helfen.Code:#include P18F4455.inc org 0 goto main var_Address_Low EQU 0x0100 var_Address_High EQU 0x0101 Zeichen EQU 0x102 main: ; ich schreibe in diesem Beispiel an die Adresse 0x0600 eine 6 ; und an die Adresse 0x0700 eine 7 BANKSEL var_Address_Low ; so kannst Du dafür sorgen, daß MPLAB (der Assembler) automatisch die richtige Bank auswählt movlw D'0' movwf var_Address_Low movlw D'6' movwf var_Address_High ; hier brauchen wir kein Bankselect wegen dem MOVFF movff var_Address_Low,FSR0L movff var_Address_High,FSR0H movlw D'6' movwf POSTINC0;INDF0 ; hier setze ich z.B die BANK mal direkt mit dem BSR Register, ; eigentlich brauche ich es nicht mehr, da die Bank immer noch richtig steht ; nur zur Verdeutlichung... bsf BSR,0 ; BANK 1 Speicherbereich 100..1FF auswählen movlw D'7' movwf var_Address_High movff var_Address_Low,FSR0L movff var_Address_High,FSR0H movlw D'7' movwf POSTINC0;INDF0 ;auslesen: movlw D'0' movwf var_Address_Low movlw D'6' movwf var_Address_High movff var_Address_Low,FSR0L movff var_Address_High,FSR0H movf POSTINC0,W movwf Zeichen ; call SendeZeichen ; call WarteLänger movlw D'0' movwf var_Address_Low movlw D'7' movwf var_Address_High movff var_Address_Low,FSR0L movff var_Address_High,FSR0H movf POSTINC0,W movwf Zeichen ; call SendeZeichen ; call WarteLänger end
Siro







Zitieren

Lesezeichen