Forum: Mikrocontroller und Digitale Elektronik Komme nicht weiter Bascom in C übersetzen


von Matze G. (maroni666)


Angehängte Dateien:

Lesenswert?

Hallo,

ich würde gerne den Bascom Code in C übersetzen, aber da mir noch ein 
paar Kenntnisse fehlen wollte ich Euch fragen ob Ihr mir vielleicht 
dabei behilflich sein könntet.

Ich bin damit angefangen den c Code zu übersetzen (siehe Anhang).
Habe jetzt einen Atmega644 anstatt einen Atmega16 genommen wie im Bascom 
Code.

Das senden mit dem Code funktioniert auch (hoffe das ich bis dahin den 
Code richtig umgesetzt habe). Nur bei dem empfangen komme ich nicht 
weiter und besonders nicht wie ich dann den Port mit der Led ansprechen 
kann.

Bin für jede Produktive Hilfe dankbar.

Gruß

Matze

von tut-hier-nix-zur-sache (Gast)


Lesenswert?

Lauffähigen Quellcode aus einer brauchbaren Programmiersprache in 
unverständliches und inhärent fehleranfälliges Kauderwelsch weltfremder 
und langhaariger Dunkelkammerkinder wandeln, was dann aus für 
intelligenz- und logikbegabten Menschen nicht nachvollziehbaren Gründen 
irgendwas und alles mögliche tut, nur nicht das, was es soll? Wein zu 
Wasser?!

von Matze G. (maroni666)


Lesenswert?

Matze Gw schrieb:
> Bin für jede Produktive Hilfe dankbar.

Soviel dazu.

 Vielleicht findet sich trotzdem jemand der mir helfen will

von Karl H. (kbuchegg)


Lesenswert?

Matze Gw schrieb:

> Ich bin damit angefangen den c Code zu übersetzen (siehe Anhang).

Na ja.
Du hast dir Dinge zusammenkopiert.

> Das senden mit dem Code funktioniert auch (hoffe das ich bis dahin den
> Code richtig umgesetzt habe). Nur bei dem empfangen komme ich nicht
> weiter und besonders nicht wie ich dann den Port mit der Led ansprechen
> kann.

Das sind eigentlich ziemliche Grundlagen, zu finden im Avr-gcc Tutorial.

> Bin für jede Produktive Hilfe dankbar.

Im Grunde ja, gerne.
Das Problem: Wenn es schon an diesen einfachen Dingen scheitert, was 
wird dann erst bei schwierigeren Dingen.

1
int main( void )
2
{
3
  char c;
4
5
  DDRC = (1<<DC6) | (1<<DC7);
6
7
  init_usart();
8
9
  while(1)
10
  {
11
    c = USART_Receive();
12
13
    switch( c ) {
14
      case 'A':
15
        PORTC |= (1<<DC6);
16
        break;
17
18
      case 'B':
19
        PORTC &= ~(1<<DC6);
20
        break;
21
22
      case 'C':
23
        PORTC |= (1<<DC7);
24
        break;
25
26
      case 'D':
27
        PORTC &= ~(1<<DC7);
28
        break;
29
    }
30
  }
31
}

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Wenn du deine Empangsfunktion schon hast, ganz einfach:
1
char c = getuartbyte();
2
3
switch(c) {
4
    case 'A':
5
        tuwas_bei_ascii_zeichen_A;
6
        break;
7
    case 'B':
8
        tuwas_bei_ascii_zeichen_B;
9
        break;
10
    case 0x27:
11
        tuwas_bei_27hex;
12
        break;
13
}

von Matze G. (maroni666)


Lesenswert?

Danke euch beiden,
habe den Vorschlag von Karl heinz Buchegger genommen und ein wenig 
geändert damit mein AvrStudio nicht mehr meckert

alt: DDRC = (1<<DC6) | (1<<DC7);
Neu: DDRC = (1<<DDC6) | (1<<DDC7); usw.

Nochmals besten Dank an Euch.

Karl heinz Buchegger schrieb:
> Das sind eigentlich ziemliche Grundlagen

Ich bin ja noch dabei alles zu erlernen (Bascom, C, Mikroontroller, GLCD 
usw,)aber manchmal sieht man eben den Walt vor lauter Bäumen nicht mehr, 
besonders dann nicht wenn man noch nicht solange mit der Materie 
vertraut ist.

Werde mein Projekt sofern es dann später mal läuft wie es soll 
vorstellen.

Gruß

Matze

von Karl H. (kbuchegg)


Lesenswert?

Matze Gw schrieb:

> Karl heinz Buchegger schrieb:
>> Das sind eigentlich ziemliche Grundlagen
>
> Ich bin ja noch dabei alles zu erlernen (Bascom, C, Mikroontroller, GLCD
> usw,)aber manchmal sieht man eben den Walt vor lauter Bäumen nicht mehr,
> besonders dann nicht wenn man noch nicht solange mit der Materie
> vertraut ist.

Ich hab mich schlecht ausgedrückt.
Du solltest dich sinnvollerweise zuerst mit den Grundlagen vertraut 
machen und ein wenig üben und dich erst dann an eine Portierung wagen.

Wenn man Software von einem System auf ein anderes portiert, muss man 
beide Systeme sehr gut kennen.
Besonders unangenehem ist es, wenn man ein Programm von 
Programmiersprache X zu Programmiersprache Y portiert. Dann muss man in 
beiden Sprachen mehr oder weniger fliessend sein. Dies deshalb, weil man 
im Grunde eigentlich die Idee des Programms aus Sprache X auslesen muss 
und auf die typische Herangehensweise in der Sprache Y transferieren 
muss. D.h. man muss in der Lage sein, den Code in X zu analysieren und 
gleichzeitig Y gut genug kennen, um das dortige Implementierungsmuster 
für diese Idee zu kennen.


Nicht umsonst sind solche Portierungen von Sprache X nach Sprache Y 
gefürchtet. Der schlimmste mögliche Fall liegt dann vor, wenn damit 
gleichzeitig auch noch ein Pradigmenwechsel vollzogen werden muss. Die 
meisten Programmierer würden wohl die Todesstrafe einer Portierung von 
zb. Prolog nach Simula vorziehen. So etwas ist ein Himmelfahrtskommando 
auf Raten.

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
Noch kein Account? Hier anmelden.