Sehr anschaulich, danke
So, nu aber zum bowlen, wünscht mir Glück
Bis denne
Thomas
Im Prinzip ist das schon richtig was Du sagst, also 2 mal die 1 schieben ergibt"(1<<PB1) | (1<<PB2)" <-- bei dem hier. Ist das sone Art UND-Befehl?
Also wird dann daraus 0b00000110 das hier?
00000110 aber es ist kein UND Befehl sondern ein ODER
hier eine Erklärrung :
byte 1 : 00000011
byte 2 : 00000010
ODER Verknüpfung:
Wenn ein Bit von Byte 1 ODER ein Bit von Byte 2 1 ist, soll das Ergebnis auch 1 sein!
mithin wenn Du die beiden Bytes mit ODER verknüpfst bekommst Du 00000011
UND Verknüpfung:
Wenn ein Bit von Byte 1 UND ein Bit von Byte 2 1 ist, soll das Ergebnis auch 1 sein!
mithin wenn Du die beiden Bytes mit UND verknüpfst bekommst Du 00000010
Das ist auch sehr wichtig und nützlich!
Gibt auch extra Befehle OR AND ORI ANDI
Gruß Sebastian
Sehr anschaulich, danke
So, nu aber zum bowlen, wünscht mir Glück
Bis denne
Thomas
Jo viel Spaß beim Bowlen
So, da bin ich wieder
Ich hoffe, du bist noch wach, Sebastian?![]()
Ja ich bin noch wach,
Bin hier noch was am Tüfteln![]()
Hast Du das mit den OR und AND verstanden?
Die dinger weden Dich auch begleiten, wenn Du µC programmierst...
Wenn ja dann dürfte das hier kein Problem sein
Was bleibt im tmp über, wenn Du folgende Operationen ausführst :
ldi tmp,0xFF
andi tmp,0x80
ldi tmp,0xA0
ori tmp,0x05
Ich schreibe extra hexadezimal, damit Du damit auch vertraut wirst.
Ich hoffe, Du hast einen Taschenrechner wo Du das umwandeln kannst.
Übrigens, wir haben den Code für das blinken mehrmals geändert,
Damit hast Du
1. gesehen, daß es mehrere Möglichkeiten gibt um das Problem zu lösen
2. Du hast schon ein paar Probleme kennengelernt, die bei der Arbeit
mit Interrupts auftretten können, und die Wege um sie umzugehen.
Nicht das Du denkst, wir machen nur an einem Code rum,
es hatte alles schon seine Richtigkeit, sowas wirst Du in dieser Form
in keinem Tutorial finden...
P.S. wie war das Bowlen?
N'Abend zusammen!
Ist es das, was ich denke? *g*Ja ich bin noch wach,
Bin hier noch was am Tüfteln
Meine Schwester sucht leider gerade im Internet nach freien Studenten-WGs in Bremen, deshalb war ich heute kaum online!
Dementsprechend konnte ich auch den Code noch nicht schicken, das werde ich dann morgen machen!
Hallo Florian,
lass Dir ruhig Zeit, heute werde ich eh nicht mehr viel machen, muß mich erst etwas einlesen
aber ich muß schon sagen, daß slave etwas komplizierter als master ist.
Aber wir lieben ja Herausforderungen, was ?
Und was hälst Du von Thomas?
Sollen wir Ihn schon auf 16 Bit Zahlen und Timer 1 loslassen, oder ist er noch nicht soweit?
![]()
Gruß Sebastian
P.S. Thomas keine Angst , es ist ja nur Spaß
Ich benutze dafür den Windows-Rechner, da mein Taschenrechner sowas nicht kann.
Bowling war gut. War ja nur mit meiner Freundin, das erste Spiel hat sie gewonnen, aber die nächsten 4 Spiele dann ich(Brauche ja immer 1 Spiel zum warm werden *g*)
Bin mir noch net so sicher mit ANDI und ORI. Aber könnte man sich die ersten beiden Zeilen nicht sparen, wenn man dann mit ldi weitermacht? Denn bei ldi überschreibt er ja eh den ganzen Wert, ohne irgendwas zu rechnen, oder?
Also nach den Zeilen:
ldi tmp,0xFF
andi tmp,0x80
ist der Wert von tmp: 0b10000000 also 0xFF
Nach den Zeilen:
ldi tmp,0xA0
ori tmp,0x05
ist der Wert von tmp: 0b10100101 also 0x00
Ich bin mir aber wie gesagt nicht sicher.
Wie komm ich zu den Ergebnissen?
Hab sie erstmal in binär umgerechnet, da kann ichs besser vergleichen
Also bei der ersten Zeile wird ja in tmp 0b11111111 geladen. Und das dann mit 0b10000000 verglichen(?), Wenn BEIDE Bits von beiden 1 ist, dann ist das Ergebnis auch 1:
0b11111111
0b10000000
-------------
0b10000000
Bei der dritten Zeile wird binär 0b10100000 in tmp geladen und mit 0b00000101 verglichen(?). Wenn EIN Bit von beiden 1 ist, dann ist das Ergebnis auch 1:
0b10100000
0b00000101
--------------
0b10100101
Obwohl ich das nun bezweifle, dasses richtig ist :/
[edit]
Ich und Angst?*gg*
Hallo Sebastian!
Ja, Herausforderungen sind schön, es sei denn, sie sind zu herausfordernd, so wie mein derzeitiges Projekt, an dem ich jetzt schon seit 2 Jahren intensiv arbeite! ;o)
Ich denke wir sollten erstmal mit Rechnen mit 16 Bit bzw. lpm weitermachen, Timer1 sollte dann davon das Endprodukt sein!
Z-Register hochzählen usw.!
Was hälst Du davon?
Ansonsten gibt es ja noch die schönen IRQ's!?
Serielle Schnittstelle ist aber glaube ich noch zu früh, damit warten wir besser noch etwas!
naja andi und ori machen ein AND bzw. OR auf einem Register,Aber könnte man sich die ersten beiden Zeilen nicht sparen, wenn man dann mit ldi weitermacht?
ich muß Ihn ja laden
ldi tmp,0xFF <- Ist mein Ausgangswert
somit habe ich den ersten wert in tmp
und bei andi tmp,0x80 <- hiermit will ich Verknüpfen
wird der tmp mit 0x80 Verknüpft und das Ergebnis bleibt im tmp drin
Der Ansatz war schon richtig, die Zahlen in binär umzurechnen, untereinander zu schreiben
und dann gucken, aber Du hast was verwechselt,
AND heißt Bit vom erstem UND zweiten -> 1 sonst 0
OR heißt Bit vom erserm ODER zweitem -> 1 sonst 0
mithin hast Du bei AND nur dann 1 wenn beide 1 sind -> sonst 0
bei or hast Du 1 wenn einer von beiden 1 ist sonst wenn beide 0 -> 0
Lesezeichen