PIC: Variablen abfragen

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 28 9 2024  10:20:25      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
PIC: Variablen abfragen
Suche nach: pic (2054)

    







BID = 390032

Peo

Gesprächig



Beiträge: 181
Wohnort: Baden-W.
 

  


Hallo

kann ich, und wenn ja wie, in einem PIC den Wert von Variablen abfragen, um damit eine logische Verknüpfung zu machen á la

"Wenn Variable = Wert dann mach irgendwas"

mfg

Peo

BID = 390060

stepp64

Gesprächig


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 162

 

  

Hallo

wäre nicht schlecht, wenn du sagen würdest in welcher Sprache und auf welchem PIC du programmierst.

In Assembler kannst du bei den 14-Bit PICs (12F... und 16F...) das machen, indem du z.Bsp. einen exlusiven ODER-Vergleich mit der Variable machst. Sind beide Werte gleich, kommt Null heraus und das Zero-Flag im STATUS-Register wird gesetzt. Dieses kannst du dann abfragen. Also wenn du z.Bsp. wissen willst, ob die Variable den Wert 15 hat, dann würde ich das so machen:



Code :


movlw .15 ;Vergleichswert nach W
xorwf Variable,w ;exclusives ODER
btfss STATUS,Z ;Ergebnis gleich 0?
goto Ungleich

Gleich
.....



Gruß Sven

[ Diese Nachricht wurde geändert von: stepp64 am  1 Dez 2006 22:52 ]

[ Diese Nachricht wurde geändert von: stepp64 am  1 Dez 2006 22:52 ]

BID = 390187

Peo

Gesprächig



Beiträge: 181
Wohnort: Baden-W.

Danke

Das hilft mir sehr viel weiter.

Ich gehe davon aus, dass ich nach erfolgreichem Abgleich das Z Bit wieder auf Null setzen muss:

bcf STATUS,Z

mfg

Peo

BID = 390249

Nukeman

Schriftsteller



Beiträge: 754
Wohnort: bei Kleve

Hallo Peo!

Das wird normalerweise nicht gemacht ( Z-Flag per Hand löschen).
Man geht normalerweise immer davon aus, dass es vor
einer Operation einen willkürlichen Zustand hat.
( Es gibt natürlich sonderfälle, wo man das Ergebnis der
letzten Operation mehrfach verwenden kann )
Mit jeder neuen Operation, die das Z-Flag beeinflusst,
da wird es ja sowieso neu gesetzt/gelöscht und kann danach
abgefragt werden.
Du brauchst also nichts wieder herstellen. Jede Operation,
die das Z-Flag abfragt, wird es vorher entsprechend
beeinflussen. Das ist ja der Sinn des Ganzen.

Gruß,
Stefan




BID = 390484

stepp64

Gesprächig


Avatar auf
fremdem Server !
Hochladen oder
per Mail an Admin

Beiträge: 162

Hallo,

schau mal bitte ins Datenblatt zu deinem PIC. Dort findest du am Ende alle ASM-Befehle die dein PIC kennt aufgelistet (INSTRUCTION SET). In dieser Tabelle ist zu jedem Befehl genau angegeben, welches Flag im STATUS-Register gesetzt wird, wenn du den entsprechenden Befehl benutzt (Status Affected). Diese Tabelle solltest du am Anfang immer vor dir liegen haben, da manchmal die Flags nicht so gesetzt werden, wie man es erwarten könnte.

Bsp. INCF setzt das Z-Flag wenn das Ergebnis 0 ist. Man könnte denken, dass auch das C-Flag gesetzt wird, da ja ein Überlauf von 255 nach 0 auftritt. Dem ist aber nicht so.

ADDWF und SUBWF setzen das C-Flag genau engegengesetzt herum. Während der ADD-Befehle das C-Flag setzt, wenn ein Überlauf auftritt, wird bei dem SUB-Befehl bei Überlauf das C-Flag gelöscht.

Manche Befehle setzen gar kein Flag (z.Bsp. MOVLW, BCF, BSF). Das kann man manchmal vor bedingten Sprüngen bewusst ausnutzen, da die Bittestbefehle ja immer nur einen Befehl überspringen.

Aber schau es dir einfach mal in Ruhe an. Die Status-Flags sind sehr wichtig, da du ohne diese eigentlich kein gescheites Programm zusammen bekommst.

Gruß Sven


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 17 Beiträge im Durchschnitt pro Tag       heute wurden bisher 8 Beiträge verfasst
© x sparkkelsputz        Besucher : 182087261   Heute : 1740    Gestern : 6155    Online : 816        28.9.2024    10:20
4 Besucher in den letzten 60 Sekunden        alle 15.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0272159576416