Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmstatuswort @80535 Was & Wozu
Import-Script
01.04.2003, 20:23
Moin moin, <BR>Ich bin aller Blutigster Anfänger im Bereich µP.. <BR>Mal ganz offen gefragt:Ich habe bei einem µP(in meinem fall den 80535) das ProgrammStatusWort (PSW). Hier auf der Website stand dazu nicht viel, bzw das was da steht versteh ich nicht so ganz. <BR>Also es ist ein 8Bit register was Bitweise adressierbar ist und jedes bit enthält eine Funktion. <BR>-Carry Flag <BR>-Hilfscarry Flag <BR>-Flag 0, zur freien Verwendung <BR>-Registerbank Auswahlbit 1 <BR>-Registerbank Auswahlbit 0 <BR>-Überlauf-Flag (Overflow) <BR>-Parity Flag <BR>Meine eigendliche Frage ist nun was ich davon habe? Wozu verwende ich das PSW und wie? <BR> <BR>Würde mich sehr freuen wen mir da jemand weiterhelfen kann. <BR>MfG <BR>Mario <BR>
Import-Script
01.04.2003, 21:10
Hi Mario! <BR> <BR>Das Statusregister informiert dich und auch den µC über bestimmte Zustände. <BR>Z.B wird das Carry-Bit gesetzt wenn es beim Addieren zu einem übertrag gekommen ist, oder zum "Ausleihen" beim Subtrahieren" Das Hilfscarry wird wohl eine ähnliche ´Funktion übernehmen. Das Flag ist eine Art Marker oder Merker den du frei setzen kannst im Programm. Also quasi ein Schalter den du benutzen kannst um zu kennzeichnen, ob ein bestimmtes Ereignis eingetreten ist. <BR>Ferner kannst du dann die Registerbänke (4 Stück zu je 8 Byte umschalten) das kann hilfreich sein wenn man schnell mal ein paar Daten retten will. <BR>Das überlauf-Flag ist hier wohl das eigentliche Zeichen, ob es zu einem Überlauf gekommen ist.DAs Paarity-Bit gibt aufschluss darüber, ob die Anzahl der Einsen im Akuu gerade oder ungerade ist. <BR>Das PSW ist Bestandteil der SFR (SpecialFunctionRegister) und sollte eigentlich im Datenblatt ausführlich beschrieben sein. <BR>Was man damit machen kann, hängt nur von der Phantasie des Programmierers ab. Viele Schweinereien und Kustgriffe sind möglich. Die Erfahrung kommt mit der Zeit. <BR>Hoffe ein wenig Klarheit verschafft zu haben. <BR> <BR>Beste Grüße, Marek <BR>
Import-Script
02.04.2003, 10:56
Hallo, <BR> <BR>ich hoffe, es ist erlaubt, etwas von Bruder_ms Beitrag zu präzisieren: <BR>Das Carry-Flag ist gesetzt, wenn ein Übertrag auf das (nicht mehr vorhandene) 8. Bit erfolgt wäre bei einer Addition oder Subtraktion; außerdem wird es bei einer Division durch 0 gesetzt. Es kann auch für Sprungbefehle (zB JC) verwendet werden und übernimmt auch beim RLC- und RRC-Befehl eine Funktion. <BR>Das Hilfscarry-Flag zeigt an, ob bei Addition oder Subtraktion ein Übertrag vom 3. Bit aufs 4. Bit passiert ist. Ich glaube allerdings kaum, dass man das brauchen kann. <BR>Das Overflow-Flag wird gesetzt, wenn ein Überlauf aufgetreten ist; dies ist allerdings nicht identisch mit dem Carry-Flag, da hier von vorzeichenbehafteten Werten ausgegangen wird. Also wird das Überlauf-Flag gesetzt, wenn ENTWEDER vom 6. aufs 7. Bit ODER vom 7. aufs 8. Bit (das nicht vorhanden ist) ein Überlauf auftritt. <BR>Der Rest wurde eigentlich von Bruder_m schon erklärt. Registerbank umschalten kann bei Interrupts hilfreich sein: In der Interrupt-Routine wird zuerst die Registerbank umgeschaltet, um die Daten vom Hauptprogramm nicht zu überschreiben. Der Interrupt hat dann seine eigenen GPRs.
Import-Script
02.04.2003, 12:31
Der Vorteil ist, dass im PSW alle wichtigen Bit-Register vereint sind, die den Programmablauf beinflussen können. <BR> <BR>Wenn du eine Interrupt-Routine programmierst, wird das Hauptprogramm an einer X-Beliebigen Stelle einfach abgeklemmt und in ein Unterprogramm verzweigt. Dass man dort dann den Akku und andere Register wegspeichert und am Schluss wieder rekonstruiert, leuchtet schnell mal ein. Aber stell dir vor, du machst im Hauptprogramm etwas, dass z.B. das Carrybit ändert und ein paar Schritte später fragst du dieses dann ab. In der Zwischenzeit könnte aber deine Interruptroutine aufgerufen worden sein. Schon eine simple Addition verschraubt dir dann verschiedene Bits (inkl. Carrybit !). <BR> <BR>So kannst du nun in deinem Interrupt mit einem einzigen PUSH PSW all die Register wegspeichern und mit POP PSW wieder rekonstruieren. Sogar eine allfällige Registerbankumstellung wird so wieder zurückgesetzt ! <BR> <BR>Alles klar ? <BR> <BR>Gruss <BR>Thedy <BR>
Import-Script
02.04.2003, 19:34
#ahh..ein_licht_auf_geh# <BR>Jetzt ist mir das doch um einiges verständlicher. <BR>vielen Dank für eure Antworten. <BR> <BR>MfG <BR>Mario
Powered by vBulletin® Version 4.1.12 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.