Forum: Mikrocontroller und Digitale Elektronik sbi mit Variable??


von Funkenschuhster (Gast)


Lesenswert?

Hallo!

Ich möchte den Befehl sbi gerne in Verbindung mit einer Variablen 
verwenden (Soll zum Realisieren von Up- Down- Tasten sein).
Ich hab´s mit " sbi r17, r18 " versucht, wobei r17 später als Negativ 
(com r17) an Port B (LEDs) ausgegeben wird und r18 (über Tastendruck) 
inc bzw dec wird. - funktioniert nur leider nicht
Wie lautet die korrekte Syntax für dieses Problem (wenn´s eine gibt)?
Wie werden Up- Dn- Tasten sonst realisiert (in einem Led - Balken 
leuchtet 1 LED - diese soll um eine Stelle verschoben werden)

Danke!!

von Billy-Bob (Gast)


Lesenswert?

Schon mal dran gedacht Staubsaugervertreter zu werden?

Bob

von Schmittchen (Gast)


Lesenswert?

Also wenn ich dich richtig verstanden habe, dann willst du eine Art 
Balkenanzeige programmieren (ähnlich den Graphicequalizern)?
Du könntest mittels ROR/ROL deine Einsen oder Nullen in dein Register 
PORTB schieben. Vorher das Carry-Flag entsprechend setzen.

sbi verlangt nach IO-Register - per Definition.

von Peter D. (peda)


Lesenswert?

Hallo Funkschuster,

also die Funktion des SBI-Befehls kannst Du wohl am besten der 
AVR-Befehlsbeschreibung entnehmen.


Zur Programmierung allgemein:

Das Geheimnis heißt Baby-Steps.

D.h. Du must das Problem in viele einzelne Schritte zerlegen, immer 
weiter und weiter, bis der einzelne Schritt so klein ist, daß Du ihn 
programmieren kannst.

Also in Deinem Fall besteht es z.B. aus Eingabe, Verarbeitung Ausgabe.
Die Eingabe wiederum aus Tastenabfrage und Entprellung.
Die Tastenabfrage muß wiederum festellen ob eine Taste gedrückt wurde, 
und wenn ja, welche, usw., usw..

Zwischen den einzelnen Funktionen mußt Du auch festlegen, wie die 
Informationen übertragen werden, z.B. in einem Register.


Noch ein Tip:

Vermeide direkte Registerverwendung. Gib den Registern immer Namen, die 
auf die Funktion hinweisen, z.B.

.def Tasten_Kode = r16
.def LED_Ausgabe = r17



Peter

von Funkenschuhster (Gast)


Lesenswert?

Danke Peter!

Kann Deine Ausführungen echt gut gebrauchen!!

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
Noch kein Account? Hier anmelden.