Forum: Mikrocontroller und Digitale Elektronik C-Pogrammierung 8051


von Sven (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich bin ein Neuling auf diesem Gebiet, nicht nur was Microcontroller
angeht, sondern auch die C-Programmierung.
Ich möchte mich ein wenig an die Sache heran tasten und habe mir
deshalb einen Spielzeugkran zusammen gebaut, den ich nun mit einem
Microcontroller und einer Bedienoberfläche, die ich mit dem Borland C++
Builder zusammen gebastelt habe.
Der Kran kann seinen Ausleger nach links und rechts bewegen, hat eine
Laufkatze, die sich nach vorn und hinten bewegen kann, sowie ein Seil
nach oben und unten. Um eine Positionsbestimmung des Auslegers
durchzuführen, habe ich eine Schlitzscheibe und eine kleine
Gabellichtschranke angebracht. Das soll dazu dienen zunächst einmal 8
Positionen anzuzeigen.
Die Ansteuerungen für die Motoren habe ich soweit hinbekommen. Ich habe
auf meiner Borland Bedienoberfläche 6 Buttons für die jeweilige
Fahrtrichtung. Jeder Button schickt bei Betätigung einen Buchstaben an
den Microcontroller, der dann den jeweiligen Port ansteuert. Das
funktioniert auch soweit.
Nun zu meinem Zähler: Ich wollte eigentlich einen Zähler des 8051
benutzen. Leider fängt da schon mein Problem an, denn wie bezeichne ich
diesen in meinem C-Programm. Ich habe in dem Datenblatt nachgeschaut und
nichts weiter gefunden, also habe ich ihn kurzerhand "T0" genannt. Das
einzige was ich darüber weiß ist, daß er nur vorwärts zählen soll.
Funktionieren sollte das ganze dann so, daß ich die aktuelle Position
auf meiner Bedienoberfläche anzeigen will. Dazu müsste ich zunächst
eine Lösung finden, den Zähler doch irgendwie rückwärts zählen zu
lassen oder zumindest die Zahlen der Anzeige entsprechend zu wandeln.
Ich habe mir schon Gedanken dazu gemacht, bezweifel aber stark, daß das
funktoniert(zu mal ich auch noch einige unklare Fehlermeldungen habe,
dazu aber später mehr). Ich habe mir das so gedacht, daß der aktuell
Inhalt des ZählersT0 in eine Variable "zaehler" geschrieben werden
soll.
Dann soll, sobald ein Button "rechts" oder "links" betätigt wird,
der Zähler T0 auf 0 gesetzt werden. Nun soll zur Variablen "zaehler"
mit der alten  Position der aktuelle Wert des Zählers T0 dazu addiert
oder subtrahiert werden, um die Position korrekt von 0 bis 7
anzuzeigen.
Dann bekomme ich einige Fehlermeldungen, die mir auch noch nicht so
ganz klar sind und die wohl auch mit dem Zähler "T0" zusammenhängen.

So wie ich das interpretiere mag C das gar nicht, wenn ich T0 mit einer
Variablen verrechne.
Ich hänge den C-Code an. Ich bin sehr dankbar für konkrete Hilfe, auch
direkt mit der Umsetzung in C, da ich mich im Moment damit sehr schwer
tue und gerne dazu lernen möchte. Toll wäre es auch wenn Mir jemand
etwas darüber verraten könnte, wie ich den Inhalt der Variablen
"zaehler" auf meiner Bedienoberfläche, die ich ja mit Borland
erstellt habe, anzeigen kann.
Vielen Dank schon mal an all diejenigen, die sich durch diesen so
langen Beitrag gewälzt haben.

Gruß
Sven
--

von Schoaschi (Gast)


Lesenswert?

Dafür du ein C-Neuling bist, hast du dir aber eh ein schönes Projekt zum
einsteigen ausgesucht ;-)


Schau dir einmal die Doku vom Humerboard an:
http://www.humerboard.at/navi/f_anwendung.htm

Da werden die Timer und Counter beschrieben.

Interessant wäre der Schaltplan noch, weil es wichtig wäre, an welchem
Pin dein Gabellichtschranken hängt. Also ob es an einem Normalen Pin,
einem Interrupt oder dem Counter Eingang hängt. Je nach dem, schaut
dein Programm anderst aus und du musst deinen Counter
anderst(Softwaremässig) realisieren.

WElchen µC verwendest du?

mfg Schoaschi

von peter dannegger (Gast)


Lesenswert?

"Ich wollte eigentlich einen Zähler des 8051
benutzen. Leider fängt da schon mein Problem an, denn wie bezeichne
ich
diesen in meinem C-Programm. Ich habe in dem Datenblatt nachgeschaut
und
nichts weiter gefunden, also habe ich ihn kurzerhand "T0" genannt."


Ein Zähler zählt entweder externen Pulse oder den internen Quarztakt.

Wenn man den Zähler nicht startet, kann man ihn auch als Variable
mißbrauchen, was aber Blödsinn ist, zumal die Zähler nur byteweise
zugegriffen werden (TH0, TL0).

Zum Einstellen der Zähler muß man das Datenblatt (Hardware-Manual)
lesen.


Peter

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.