-
Hallo *Mario*!
Schon wieder eine einfache Idee, die Dir sicher nicht gefallen wird. Aber trotzdem erkläre ich sie kurz. Wenn man eine look-up table überprufen will, ob sie nicht zu lang ist, dann plaziert man sie auf der letzten Seite (page) des RAMs und assembliert (mit MPASM). Wenn die Tabelle länger als 256 Bytes ist, bringt MPASM eine Meldung: "Adress exceeds maximum range for this processor".
MfG
-
Noch 2 Möglichkeiten für 256 Byte lange Tabellen:
Code:
; 1. Möglichkeit
AnzTage
movlw HIGH(TblTage) ; PCLATH setzen
movwf PCLATH
decf zMon,W ; Monat - 1 nach W-Register
addwf PCL,W ; 1 ; PCL + Monat nach W
btfsc STATUS,C ; 2 ; ... kein Übertrag
incf PCLATH ; 3 ; + 1 für 256-er-Grenze
addlw 8 ; 4 ; + 8 Befehle/Adressen
btfsc STATUS,C ; 5 ; ... kein Übertrag
incf PCLATH ; 6 ; + 1 für 256-er-Grenze
decf zMon,W ; 7 ; Monat - 1 nach W-Register
addwf PCL ; 8 ; PCL + Offset
TblTage
retlw 31
.....
; 2. Möglichkeit
AnzTage
movlw HIGH(TblTage) ; PCLATH setzen
movwf PCLATH
decf zMon,W ; Monat - 1 nach W-Register
call GetTage
org 0x??FF
GetTage
movwf PCL
TblTage
retlw 31
.....