PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeiger zu einer Tabelle an ein Unterprogramm mitgeben



ben-nemsi
02.05.2010, 17:51
Hallo Leute, bin neu hier. Habe zwar versucht unter den Beiträgen eine Lösung zu meinem Problem zu finden. Leider erfolglos.

ein Problem ist:
1. Ich habe mehrere Tabellen genannt MeineTabelle1, MeineTabelle2, ...
2. Ich habe ein Unterprogramm genannt TextAusgeben.

Ich möchte nun, dass ich vor dem Aufruf von TextAusgeben die Tabelle Auswähle und damit das Unterprogramm gezielt die gewählte Tabelle ausgibt

Hoffe ihr habt mir eine Idee!!

Gruss
Ben

PICture
02.05.2010, 20:36
Hallo ben-nemsi!

In allgemeinem musst du immer vor dem Sprung in eine Tabelle den PCLATH mit entsprechender RAM Seite laden, wo sich der Anfang der Tabelle befindet. Bei sich ständig ändernden Tabellen kannst du natürlich den PCLATH schon im Hauptprogramm laden, aber immer vorm Aufrufen des Unterprogramms (UP), da jedes UP spring in die Tabelle die im PCLATH festgelegt ist.

Hoffentlich findest du nötige Ideen im http://www.rn-wissen.de/index.php/PIC_Assembler#Tabellen , sonst melde dich, bitte, erneut mit konkreten Problemen. :)

MfG

ben-nemsi
03.05.2010, 12:21
Hallo und Danke für deine schnelle Antwort.

Die von dir empfohlene Site kante ich schon und ich glaube, dass es mir keine Hilfe bei meinem Problem ist. (oder ich verstehe das mit PCLATH nicht richtig)

Nochmal mein Problem Konkretisiert:

Ich habe also folgenden Aufbau
-------------------------------------------
- include meineUPs
; hier in meineUPs ist ein UP "TextAus" mit der ein Text an
; einem PORT ausgegeben wird

- Init Ports
; meinHauptprogramm
- ...
- Wähle Text1
- CALL TextAus
- ...
- Wähle Text2
- CALL TextAus
- ...
-Text1
ADDWF PCL,F
RETLW 'X'
RETLW 0

-Text2
ADDWF PCL,F
RETLW 'Y'
RETLW 0

------------------------------------
Wie kann ich TextAus dazu bringen den jeweiligen text auszugeben

Danke im Voraus
Ben

PICture
03.05.2010, 14:56
Hallo ben-nemsi!

Danke für deinen Beitrag, der mir den Aufbau deines Programms ganz klar macht. :)

Es wäre möglich, dass das UP "TextAus" sich den Wert PCLATH aus einem Puffer holt und danach zur gewünschter Tabelle springt. Ungefähr so:

Hp
......
movlw 0xXX
movwf Puffer
call TextAus
......
usw.

Das UP muss sich dann vor der Ausgabe den Wert aus dem Puffer holen und erst dann ausgeben:

TextAus
......
movf Puffer,0
movwf PCLATH
......
return

Eventuell könntest du dir als Beispiel mein Programm in https://www.roboternetz.de/phpBB2/viewtopic.php?t=47685 anschauen, wo ich 6 Ziffer nacheinander mit mehreren Tabellen ausgebe. Das ist aber schon ziemlich alt und ich kann mir nicht genau erinnern, wie ich es dort gelöst habe.

Viel Spass und Erfolg dabei! :)

MfG