passende Befehle finden??

Gast #363669
Lesenswert?
• ▲
▼
Hi

Bin ein Neuling im C Programmieren. ICh kenne von Assembler, dass man
sich das Instruction Set anschaut und dann drauf los programmiert. In C
finde ich das nicht so einfach. Das Tutorial habe ich zwar durch, leider
weiss ich nicht, wie ich prinzipiell vorgehe, um einen Befehl zu
finden.

Konkret möchte ich gerade eine Motorsteuerung machen (mit PID Regler).
Ich muss also die Stellgrösse in eine PWM Grösse für's OCR Register
und ein bit für die Richtung rausbekommen. Bei signed Variablen ist ja
vorne die 1 bei negativen Zahlen, also habe ich das mal per:
  if (stell & (1<<7))
abgefragt. Im negativen Fall muss dann noch invertiert werden und eins
drauf...(um den Wert für's OCR Register zu bekommen).

Aber da hätte ich ja gleich bei Assembler bleiben können.
Also wie geht man in so einem Fall am besten vor? Und selbst wenn man
es so macht, wie finde ich (ohne immer euch fragen zu müssen) z.B. den
Befehl, um ein Byte zu invertieren?

Vielen Dank
Donald
Gast #363670
Lesenswert?
• ▲
▼
Du solltest dir Grundlagenliteratur zu C besorgen. Eine gute
Anlaufstelle ist eine beliebige Leihbücherei in deiner Nähe.*


*) Natürlich findest du auch im Internet mindestens 50000 C-Tutorials.
Einfach mal Google bemühen!
Gast #363671
Lesenswert?
• ▲
▼
"ICh kenne von Assembler, dass man sich das Instruction Set anschaut
und dann drauf los programmiert."

Ich aber nicht !

So braucht man nur unnötig viel Zeit und macht unnötig viele Fehler.

Ich kenne Programmieren nur so, daß man erstmal den PC ausschaltet, nen
Stapel Papier und nen gespitzten Bleistift nimmt und sich
Programmablaufpläne macht.
Dann macht man aus den einzelnen Ablaufplänen Unterfunktionen.
Und dann erst schaltet man den PC wieder an und setzt die
Unterfunktionen in Befehle um.


"Also wie geht man in so einem Fall am besten vor?"

Erstmal, C hat keine Befehle, sondern Operatoren, Syntaxregeln und
Bibliotheksfunktionen. Und da hilft es nichts, die muß man lernen oder
nachschlagen.
Und dann geht man genau so vor, wie oben beschrieben.

Nur Trolle setzen sich gleich an den PC und schreiben:

int main(void)
{...}

und grübeln dann stundenlang darüber, wie sie die {...} ausfüllen.


Peter
Gast #363672
Lesenswert?
• ▲
▼
> Bei signed Variablen ist ja vorne die 1 bei negativen Zahlen, also
> habe ich das mal per:  if (stell & (1<<7))
> abgefragt.

Stattdessen könnte man natürlich auch einfach abfragen, ob der Wert
negativ ist: if (stell < 0)

> Im negativen Fall muss dann noch invertiert werden und eins
> drauf...(um den Wert für's OCR Register zu bekommen).

Oder in einfach: stell = -stell;

Das Ganze kann man aber auch mit der Bibliotheksfunktion abs() machen:

stell = abs(stell);

> Und selbst wenn man es so macht, wie finde ich (ohne immer euch
> fragen zu müssen) z.B. den Befehl, um ein Byte zu invertieren?

Man schaut in seinem C-Buch nach.
Gast #363673
Lesenswert?
• ▲
▼
der dannegger ist zum kotzen, dieser schwachmat. will seine alte
weisheit einen jungen menschen unterjubeln.
statt den jungen menschen zu helfen, damit sie hier zum forum vertrauen
aufbauen können, werden sie angekotzt.
Gast #363674
Lesenswert?
• ▲
▼
@karlheinz: Es bleibt dir unbenommen, hier ein ganzen C Handbuch
reinzuschreiben. Denn Donalds Text suggeriert, dass was auch immer er
gelesen hat, es ihm erkennbar an Grundlagen für
Hochsprachenprorammierung fehlt, und er verzweifelt einen Weg sucht, in
C so zu programmieren, wie er es in Assembler gewohnt ist. Da wird ein
einzelner Tip nicht gross weiter helfen.
Gast #363676
Lesenswert?
• ▲
▼
>der dannegger ist zum kotzen...

Genau, kommt hier an mit Papier-und-Bleistift, mit dem Zeug kann doch
kein junger Mensch heutzutage umgehen. Ist so ein Bleistift überhaupt
ROHS-konform? Am Ende vergiftet sich der junge Mensch noch damit.

MfG Olaf

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.