Hallo,
ich bin gerade dabei C zu lernen, kenne Basecom von früher und würde
mich freuen wenn mir Jemand dieses Basecom Program vernünftig in C
übersetzen könnte.
Es handelt sich hier um ein Atmega8 der ein 7Segment per taster die
ziffern 1 - 9 nacheinander anzeigt.
Joe B. schrieb:> ich bin gerade dabei C zu lernen
Du lernst es am besten, wenn Du es selber machst.
Anschließend kann immer noch jemand hier drauf schauen ...
Gruß
Jobst
Joe B. schrieb:> ich bin gerade dabei C zu lernen
Ja, das ist doch eine tolle Aufgabe. Fang doch einfach mal an, und wenn
du dann was hast und auf ein Problem stößt, dann kann man darüber
diskutieren. Dadurch wirst du den Lerneffekt maximieren.
> kenne Basecom
Was ist das?
> Es handelt sich hier um ein Atmega8 der ein 7Segment per taster die> ziffern 1 - 9 nacheinander anzeigt.
Ich hoffe, dir ist klar, dass er das mit rasender Geschwindigkeit tut,
solange der Taster gedrückt ist. Was in dem BASCOM Code fehlt, ist
nämlich die Entprellung und die Flankenerkennung...
Bei diesem Schwierigkeitsgrad und da Du C lernen möchtest, ist es
tatsächlich der beste Weg wenn Du selbst den ersten Schritt machst.
Also:
1. richtiges #include wählen
2. Dim Dis(10) As Byte in eine C array Definition wandeln
3. main Funktion erstellen
4. ....
Frickelfritze schrieb im Beitrag #4598378:
> Och nöööö, Peda, wo ist da der Lerneffekt für den TO wenn> du alles auf dem Silbertablett servierst?
Zudem es in diesem Stadium taktisch unklug ist, das Problem mittels
sbit.h zu erschlagen. Das hätte Peter erstmal weglassen können. Dann
hätte der TO wenigstens ansatzweise die Möglichkeit gehabt, den
C-Quelltext zu verstehen und wie man die AVR-Register mittels
Bitmanipulation ausliest bzw. beschreibt.
Stattdessen erschlägt Peter das Problem mit Bitfeldern in Form von
Structs, die bei einem C-Neuling frühestens in ein paar Monaten
drangekommen wären.
Folge: Keine Chance für den TO, das auch nur ansatzweise zu verstehen -
auch wenn der daraus resultierende Quellcode auf den ersten Blick
erstmal ziemlich simpel aussieht.
ich denke, dass das was Peter gemacht hat, die beste Hilfe ist, die es
geben konnte.
Wenn jemand in BASCOM denkt, dann sind die Kommentare bestehend aus den
BASCOM-Anweisungen die beste Erklärung für die Zeilen in C.
Aus meiner Sicht ist das die beste Einstiegsmethode in C, wenn man von
der BASCOM-Seite kommt.
Alle anderen Kommentare, die sinngemäß zum Inhalt haben "... du musst
das selbst machen .." sind vergleichbar dem Rat an einen Fahranfänger
"Du musst dich ins Auto setzten und einfach mal ausprobieren und bloß
keinen Fahrlehrer fragen"
Frank M. schrieb:> Stattdessen erschlägt Peter das Problem mit Bitfeldern in Form von> Structs, die bei einem C-Neuling frühestens in ein paar Monaten> drangekommen wären.
Peter hat doch die beste Analogie zu BASCOM gewählt.
Frank M. schrieb:> Zudem es in diesem Stadium taktisch unklug ist
Welcher Klugscheißer gibt denn diesen Rat und leistet selbst keinen
konstruktiven Beitrag?
Joe
Lothar M. schrieb:>> Es handelt sich hier um ein Atmega8 der ein 7Segment per taster die>> ziffern 1 - 9 nacheinander anzeigt.> Ich hoffe, dir ist klar, dass er das mit rasender Geschwindigkeit tut,> solange der Taster gedrückt ist.
Das ist ein elektronischer Würfel (der übrigens von 1 bis 6 zählt), der
sich gerne schnell drehen darf, damit auch keiner schummelt :)
Frank M. schrieb:> Stattdessen erschlägt Peter das Problem mit Bitfeldern in Form von> Structs, die bei einem C-Neuling frühestens in ein paar Monaten> drangekommen wären.
Viele MC-Compiler bringen IO-Bits von Haus aus mit (z.B. Keil C51,
Codevision), der AVR-GCC leider nicht. Daher finde ich es nicht
verkehrt, wenn man sie nachrüstet.
Beim IAR sind sie auch dabei, man muß sie allerdings erst einschalten:
1
#define ENABLE_BIT_DEFINITIONS
Es reicht, wenn man h-Files anwenden kann, man muß sie nicht auf Anhieb
verstehen.
Peter D. schrieb:> Viele MC-Compiler bringen IO-Bits von Haus aus mit (z.B. Keil C51,> Codevision), der AVR-GCC leider nicht. Daher finde ich es nicht> verkehrt, wenn man sie nachrüstet.
Versagt aber, sobald man auf ein anderes Register wie zum Beispiel
TCCR0A zugreift. Spätestens dann muss der TO dann doch die
Bitmanipulation lernen. Außerdem schadet es nicht, wenn man sie
beherrscht. Verwirrend wird es dann auch noch - zumindest für den
Anwender - PORTB anders zu handeln als TCCR0A.
Hier gibt es einen tiefergreifenden Ansatz, als nur die Port-Register
durch Bitfelder zu bedienen:
Beitrag "AVR-Register als Bitfields"
Leider habe ich aus Zeitgründen nie geschafft, diesen Weg bis zum Ende
zu gehen, d.h. das durchgehend für alle AVRs anzubieten.
Könntet ihr das Thema: "Darf Peter auf so eine Frage einen komplett
fertigen Code abliefern?" bitte in einem getrennten Thread in /dev/null
diskutieren?
Zur Klärung: die gelöschten Posts haben allesamt nichts zur Sache
beigetragen, sondern strotzen nur so vor Personalpromomen wie "du, ich,
er, ihr..."