PIC-Frage

05/04/2015 - 20:55 von Roland Krause | Report spam
Hallo Leute,
ich habe hier ein Problem mit berechneten Sprüngen (in Uralt Basic sowas
wie ON nn GOTO in C switch { }). Die Berechnung erfolgt ja mit 8 Bit,
weshalb das ganze im Adressbereich 00-FF gut funktioniert. Ich habe für
die Ausgabe auf ein LCD Texte abgelegt, die ich z.B. über folgende
Funktion im oben genannten Adressbereich problemlos auswerten kann:

StartText2:
andlw 0x0f ; Wertebereich auf 0-15 begrenzen
addwf PCL,f
dt "Initialisierung" ; Der Text wird zeichenweise geliefert
retlw 0 ; Textende

(dt erzeugt retlw-Kommandos wie beim Textende)
Die Zeichennummer wird beim Aufruf im w-Register übergeben.

Jetzt habe ich einen Sprungverteiler, der auf Tastendruck nacheinander
verschiedene Testfunktionen auswàhlen soll, das sieht so aus:

StartTest:
.

SelFkt:
; movlw HIGH(SelFkt) ; Oberes Byte der Sprungadresse
; movwf PCLATH ; setzen
bcf STATUS,C ; Carry löschen
rlf TestNr,w ; Relative Adresse
addwf PCL,f ; Test aufrufen

call TestPLen ; 0: Pulslànge messen
goto StartTest
call TestPPause ; 1: Pulspause messen
goto StartTest
call TestPAbstand ; 2: Pulsabstand messen
goto StartTest

Das funktioniert im Adressbereich 00-FF hervorragend, so wie es oben
dargestellt ist. Wenn ich aber die beiden ersten Zeilen auskommentiere,
das ganze im Bereich > 0xFF übersetze, funktioniert es im Simulator
super, mein 16F684 springt aber irgendwie in die Wüste. Die
ursprüngliche Adresse von StartTest war 1B0.

Irgendwelche Tipps?
 

Lesen sie die antworten

#1 Dieter Wiedmann
05/04/2015 - 22:15 | Warnen spam
Am 05.04.2015 20:55, schrieb Roland Krause:

andlw 0x0f ; Wertebereich auf 0-15 begrenzen
addwf PCL,f
dt "Initialisierung" ; Der Text wird zeichenweise geliefert
retlw 0 ; Textende

16F684



Die Funktion von PCLATH beachten! So wie geschrieben funktioniert das
nur mit den uràltesten 12- und 14-Bit Kernen.



Gruß Dieter

Ähnliche fragen