PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : bestimmtes bit aus akku auslesen



froginho
14.01.2010, 20:49
olá!

ich möchte einen wert vom port in den akku laden.
ich nutze dafür den befehl:
mov A, p1

jetzt werden ja die 8 bit vom port 1 in den akku geladen.

an sich interessiert mich aber nur das siebte bit; also der inhalt von p1.6

wie kann ich das aus dem akku auslesen?

ich hatte mir erst simple gedacht, daß ich nur das eine bit in den akku lade; mit:
mov A, p1.6
wie ich feststellen mußte, ging das aber nicht.

also nochmal die frage: wie kann ich jetzt p1.6 (bzw das dann siebte bit des akkus) auslesen?


prozessor ist der 80537.


danke und grüße.

uwegw
14.01.2010, 21:09
Was auf quasi jedem Prozessor geht:
Du verundest den akku mit 0b01000000. Dann ist der Akku ungleich Null, wenn das siebte Bit gesetzt war, und gleich Null, wenn nicht.

Und ansonsten musst du selber nachschauen, welche Bit-Befehle dein Prozessor unterstützt. Bei vielen anderen Controllern, (wie zb dem AVR) gibt es einen skip-Befehl, der als Bedingung ein bestimmtes Bit in einem Register auswertet.

froginho
14.01.2010, 21:17
Du verundest den akku mit 0b01000000. Dann ist der Akku ungleich Null, wenn das siebte Bit gesetzt war, und gleich Null, wenn nicht.

oki, das leuchtet ein.
danke für den tip.

das prinzip ist somit klar.
aber ich bin noch ein rookie und frage mich jetzt:
wie genau setze ich das um!?

kann man das mit ein bis zwei code_zeilen erläutern oder ist das ne längere geschichte?[/quote]

uwegw
14.01.2010, 21:23
Die Codezeilen:
1. den Wert von Port1 in den Akku laden
2. den Akku mit 0b01000000 verunden
3. nun kommt es drauf an, was mit dem bit passieren soll. Gewöhnlich kommt nun ein bedingter Sprung, der dafür sorgt, dass die vom Status des Bits abhängige Fortsetzung des Programms ausgeführt wird. Als Bedingung ist dabei dann Akku gleich Null bzw. ungleich Null zu verwenden.

uwegw
14.01.2010, 21:33
Und nun solltest du nochmal das Instrction Set wälzen und dabei nach "bit" Ausschau halten. Dabei wirst du auf JB und JNB stoßen, die dir das Problem mit einem Befehl lösen....

froginho
14.01.2010, 21:34
den wert in den akku zu laden, ist ja kein problem.
wie es dann danach weitergeht, sollte auch keine größere schwierigkeit bereiten.
aber wie genau ver_unde ich den akku mit 0b01000000 ?

also ich hab mal an sowas gedacht:

anl a, #0b01000000

naja, waren schon mal gute tips.
morgen bin ich wieder bei uns im elektro-labor. da steht mir nen mikro_controller zur verfügung. werde ich da mal testen.
wenn ich so drüber nachdenke, sollte das klappen, hihihi.

also ich sag auf jeden fall schon mal danke.

froginho
21.01.2010, 15:07
so, habs jetzt etwas anders gelöst.

nämlich mit dem befehl:

jb p1.6, unterprogramm

also wenn das bit p1.6 gesetzt ist, wird mit 'unterprogramm' fortgefahren.
so kann ich ja sehen, ob p1.6 gesetzt ist und je nachdem obs gesetzt ist (oder halt nicht) entsprechend fortfahren.