mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programmübersetzung


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Halle alle zusammen !

Ich habe ein Problem !
Undzwar möchte ich gerne den kapazitiven Sensor von Elm Chang nachbauen.

http://elm-chan.org/works/capsens/report_e.html

Das Programm das er geschrieben hat ist leider in C geschrieben.
Ich kann aber nur Bascom :\.
Kann mir jemand helfen das Programm zu "übersetzen" ? Das wäre echt 
super !

Vielen Dank im voraus !

MfG
Daniel

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was verstehst du an dem Programm denn nicht?

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm...ich kann kein C. :)

also ich verstehe die schleifen nicht, was die header machen sollen und 
überhaupt wie das programm abläuft kann ich aus dem code nicht 
herauslesen.

mfg
Daniel

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch wenn man C nicht kann, sollte man den Algorithmus verstehen können. 
Wenn du das nicht kannst, kannst du es auch in Bascom nicht nachbauen. 
Einfaches dummes übersetzen geht da nicht. Also lerne Algorithmik. Das 
braucht man in jeder Programmiersprache. Wenn du das kannst, kannst du 
auch das C-Programm lesen und selbst auf Bascom portieren. Außerdem ist 
da noch einiges in Assembler dabei. Das ist ganz bestimmt nicht ohne 
Grund.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich denke mal das sollte mir sagen das du mir nicht helfen kannst.

wie soll ich ein ähnliches programm schreiben wenn ich z.B. nicht weiß, 
was:
for (;;)
oder
if (c == '\r')
heisst.
operatoren wie ";;" gibt es in bascom nicht.
was hat das bitte mit algorithmik zutun ?

mfg
daniel

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok das
 for (;;)

ist schon etwas speziell ist aber das gleiche wie

while( true )  also eine entlosschleife


Aber was ist an

if (c == '\r')

unklar?

Autor: Niklas Gürtler (erlkoenig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> for (;;)
Endlosschleife.
> if (c == '\r')
Abfrage, ob die Variable c das ASCII-Zeichen für Wagenrücklauf 
(http://de.wikipedia.org/wiki/Wagenr%C3%BCcklauf) enthält.
> operatoren wie ";;" gibt es in bascom nicht.
; tut in C einfach gar nichts. Eine "leere Anweisung". ;; Tut also erst 
recht nichts.

Lerne C.
C ist die wahrscheinlich am meisten verwendete Programmiersprache der 
Welt.
Wirf einen Blick in die EDV-Abteilung der nächsten Bibliothek, und du 
wirst einige Bücher dazu finden.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann kein Bascom, deswegen kann ich dir nicht helfen. Auch sonst 
wäre das eine ziemlich umfangreiche Aufgabe, vor allem die schnellen 
ASM-Routinen werden wohl in Bascom nicht so laufen.

for(;;) ist eine Endlosschleife. Alles was in den {} steht, wird ewig 
wiederholt.

if(c == '\r') vergleicht den Inhalt der Variable c mit der Konstante \r 
was der Zeilenvorschub in ASCII ist, dient sicher zum Erkennen einer 
Eingabe...

Das hat mit Algorithmik zu tun, weil du, wenn du dich damit beschäftigen 
würdest, anhand der Struktur des Programmes herausfinden würdest, was es 
macht. Wenn es nicht irgendwelche kranken Programmierer verbrochen 
haben, ist C sehr gut verständlich, das liest man ja quasi direkt. Aber 
du willst ja vermutlich einfach das Programm 1:1 benutzen, ohne zu 
verstehen, was es macht.

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

Bewertung
0 lesenswert
nicht lesenswert
for (;;)
ist eine for-Schleife, die niemals aufhört. In dem Fall wird da irgendwo 
ein break die Schleife abbrechen.

Das eine wesentliche Funktionalität des Programms in Assembler 
geschrieben ist, hast du aber bemerkt, oder?

Anssonsten stecken da zwei Programme in einem. So, wie es da steht, wird 
der interaktive Teil mit den uart-Ein-und Ausgaben gar nicht benutzt. 
Ich hab mal alles rausgeworfen, was sowieso nicht kompiliert würde, und 
den Rest oben angehängt. Da musst du jetzt durch :-)

Oliver

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christian
ich will es versteh...nein ich muss es sogar verstehen da ich es für 
meine anwendung (lautstärkeregelung durch sensor slider) erweitern muss.

ich lerne in meiner ausbildung c++, aber bis ich soweit bin dauert es ja 
noch ein bisschen ;).
mein projekt wollte ich aber eben nicht erst in ein paar jahren 
abschließen.

ich habe noch eine frage:
mit welchem compiler kann ich µC über windows mit C flashen ?bzw. 
programme schreiben und dann mit avrdude flashen(hex datei erstellen).

mfg
daniel

Autor: Niklas Gürtler (erlkoenig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel wrote:
> ich habe noch eine frage:
> mit welchem compiler kann ich µC über windows mit C flashen ?bzw.
> programme schreiben und dann mit avrdude flashen(hex datei erstellen).
Mit avr-gcc. http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial

Autor: tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
WinAVRTM contains all the tools for developing on the AVR. This includes 
avr-gcc (compiler), avrdude (programmer), avr-gdb (debugger), and more! 
WinAVR is used all over the world from hobbyists sitting in their damp 
basements, to schools, to commercial projects.

http://winavr.sourceforge.net/

Für eine schneller Übersicht in C:
http://openbook.galileocomputing.de/c_von_a_bis_z/

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine praktische online Hilfe für C:

http://www.space.unibe.ch/comp_doc/c_manual/C/mast...

Autor: Nobody (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Niklas
> operatoren wie ";;" gibt es in bascom nicht.
; tut in C einfach gar nichts. Eine "leere Anweisung". ;; Tut also erst
recht nichts.

So lapidar würde ich es nicht ausdrücken.

for(PREFIX;VERGLEICH;SUFFIX) {...}

entspricht folgendem:

PREFIX
while(VERGLEICH) {
...
SUFFIX
}

for(;;) {}
bedeutet einfach, dass es kein PREFIX, keinen VERGLEICH und keinen 
SUFFIX gibt; entspricht also: while(1) {}

In Bascom also sowas:
#endless
goto endless

Autor: Niklas Gürtler (erlkoenig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, das weiß ich... Ich hatte jetzt vermutet er hat so ein Konstrukt 
gesehen und sich gewundert, was es bedeutet:
if (blabla) {
 ;;
}
Das kommt ja schonmal vor. Klar, in Bezug auf for bedeutet es was 
anderes. Was ich im übrigen auch geschrieben habe...
Und goto gibt es in C auch, aber das finden alle ganz furchtbar:
endless:
goto endless;

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.