mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C-Pogrammierung 8051


Autor: Sven (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
--

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.