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
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
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.
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
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?
> 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.
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.
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
@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
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
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/
@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:
1 | #endless
|
2 | goto endless |
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;
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.