Hallo Habe die folgende Zeilen in den AT90S1200 geladen. Haut leider nicht hin. Led funktionieren mit einem Blinkprogramm. Die Schalter haben 10 K Pullup Widerstände drin. Danke für eure Hilfe ldi r16, 0xFF out 0x17, r16 ldi r16, 0x00 out 0x11, r16 loop: in r16, 0x10 out 0x18, r16 rjmp
HAllo, Wenn ich das richtig sehe fehlt dort die includedatei und bei rjmp wohin er springen sollen! Ausserdem wird die leuchtdiode dauerleuchten da du es nicht verfolgen kannst! So ein Prozessor hat 8 Mhz das heißt minimum 4mio befehle die Sekunde. Peter
Hallo Oh. Sorry. Habe beim Komentare weglöschen das Wort loop mit weggelöscht. Ich habe gedacht, das ich die includedatei nur brauche, wenn ich nicht mit direkten Speicheradressen arbeite sondern mit Namen wie z.B. DDRB usw. Das Blinkprogramm hat so hingehaut. Und das mit dem Blinken verstehe ich überhaupt nicht. Ich lese doch sehr schnell den Zustand der Schalter ein. Und schreibe sehr schnell den Zustand wieder raus. Ob ein oder aus. Aber bei mir bleibt sie immer dunkel. Danke Bernhard
Hallo Niklas Dein Prgramm sieht so aus. ldi r16, 0xFF out 0x17, r16 ldi r16, 0x00 out 0x11, r16 loop: in r16, 0x10 out 0x18, r16 Hier liegt der Fehler PORT B rjmp Hier meine Änderungen ldi r16, 0xFF Port B als Eingang out 0x17, r16 ldi r16, 0x00 Port D als Ausgang out 0x11, r16 loop: in r16, 0x16 Port B einlesen out 0x12, r16 Ausgabe auf Port D rjmp loop Sieht aber schön sowas im Simulator Hoffe es stimmt so. MFG Dieter
Hi Niklas, Hmmm, abgesehen von dem fehlendem loop und der direkten Registeraddressangabe, schaut dein Code wie im AVR-Tutorial aus (http://www.mikrocontroller.net/tutorial/io-basics.htm). Hab dein Code mit dem Simulator getestet (nur noch das loop eingefügt) und es geht. Vieleicht noch mal die externen Beschaltung überprüfen. Vorallem die Schalter Beschaltung an Port D. @Dieter: Leider war deine Hoffnung falsch. ldi r16, 0xFF Port B als Eingang out 0x17, r16 0xFF macht ein Port zum Ausgang ldi r16, 0x00 Port D als Ausgang out 0x11, r16 und 0x00 einen Port zum Eingang. Damit stimmt dann auch das einlesen und ausgeben auch nicht. Wenn es bei dir im Simulator geht würde ich micht wundern? Gruss Martin
Hallo Markus Natürlich hast Du Recht. Nach ein paar Bit's für den Körper sieht man den Wald vor lauter Bäumen nicht mehr. Hier also die Lösung ?? ldi r16, 0x00 ;Port B als Eingang out 0x17, r16 ldi r16, 0xFF ;Port D als Ausgang out 0x11, r16 loop: in r16, 0x16 ;Port B einlesen out 0x12, r16 ;Ausgabe auf Port D rjmp loop MFG Dieter
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.