Morgen, Ka ob ich hier richtig bin, wenn es verkehrt ist sry. Ich habe folgendes Problem: Ich habe ein Programm welches 2,7k worte lang ist, Habe ein 16F886 der ja eigentlich 8k worte fassen kann. Nun soll man irgendwie ja die Speicher wechseln können. Ich habe nun schon stunden im internet verbracht, aber keine befriedigende antwort bekommen. Ich muss irgendwie 2,7k worte unterbringen und weis nur nicht wie ich die speicher wechsel um da den rest reinzupacken. kenne die befehle dafür nicht. und weis nicht so richtig wie das funktioniert... Ich habe es bisher einfach nie gebraucht und niemals mehr als 2k worte gehabt... Bitte nur ordentliche antworten, flames könnt ihr euch sparen mich ärgert das schon genug
FloZie schrieb: > kenne die befehle dafür nicht. In Assembler gibt es dafür das PAGESEL-Makro [code] PAGESEL Zieladresse GOTO Zieladresse [\code] Ich mache den Initialisierungscode meistens in Page 1 damit im Hauptprogram möglichst wenig PAGESEL Macros nötig sind. Außerdem kann es sich lohnen die Interrupts als Makro zu schreiben und an den Anfang aller Pages zu setzen. Gruß Anja
Das Programm in einzelne, mit ORG xxxx definierte Abschnitte (and denSeitengrenzen) aufteilen, z.b: ORG 0x0000 goto main ORG 0x0004 <interruptroutine> main: ......Initialisierungen, Ablaufsteuerung etc Unterprogramme werden mit PAGESEL upr1 CALL upr1 ..... PAGESEL upr2 CALL upr2 etc. aufgerufen Die Unterprogramme liegen auf Page1: ORG 0x0800 upr1 .... upr2 .... (uuups sollte mal mehr als 2 Finger nehmen ;-) )
Danke für die Antwort. Ich habe im mom durch den Assembler ja alles in den 2k bereich quasi stehen. beginnt ja mit 0x000 und interruptroutine ist bei x004 Das programm beinhaltet zum größten teil calls mit unterschiedlichen aufgaben. quasi das haubtprogramm mit abfragen etc ist ca 600 zeichen groß und der rest nur unterprogramme die gecallt werden. Das packt der ja fleißig hintereinander. die calls könnten alle in einem 2. 2k bereich verschwinden. packt man da einfach nun ein pagesel hin? und er füllt denn den 2. speicher damit voll? wie erkläre ich dem pic bzw assembler denn das der den rest nicht in die 1. 2k packen soll sondern die ganzen calls (unterprogramme) in den 2. speicher.... ohh man
FloZie schrieb: > wie erkläre ich dem pic bzw assembler denn das der den rest nicht in die > > 1. 2k packen soll sondern die ganzen calls (unterprogramme) in den 2. > > speicher.... ohh man Ganz einfach: den 2. Teil legst du auf die nächste Speicherseite wie oben schon geschrieben: ORG 0x0800 = Page 1, ORG 0x1000 = Page 2.
Die antworten kamen schneller als ich probieren und antworten konnte :) vielen dank. Der Assembler meckert nun nicht mehr rum das alles zu lang ist. muss nun noch das wieder zuordnen und denn sollte es hinhauen. Vielen lieben dank euch allen!!!! DANKE DANKE DANKE
Chris B. schrieb: > Ganz einfach: Er hat sich sooo nett bedankt. Sollen wir im jetzt auch noch verraten daß er vor jedem GOTO oder CALL wenn er die page wechseln will oder aus einem CALL zurückkomt ein PAGESEL Makro braucht? ;-) Gruß Anja
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.