www.mikrocontroller.net

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


Autor: Matze G. (maroni666)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: tut-hier-nix-zur-sache (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?!

Autor: Matze G. (maroni666)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matze Gw schrieb:
> Bin für jede Produktive Hilfe dankbar.

Soviel dazu.

 Vielleicht findet sich trotzdem jemand der mir helfen will

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

int main( void )
{
  char c;

  DDRC = (1<<DC6) | (1<<DC7);

  init_usart();

  while(1)
  {
    c = USART_Receive();

    switch( c ) {
      case 'A':
        PORTC |= (1<<DC6);
        break;

      case 'B':
        PORTC &= ~(1<<DC6);
        break;

      case 'C':
        PORTC |= (1<<DC7);
        break;

      case 'D':
        PORTC &= ~(1<<DC7);
        break;
    }
  }
}

Autor: Nils S. (kruemeltee) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du deine Empangsfunktion schon hast, ganz einfach:
char c = getuartbyte();

switch(c) {
    case 'A':
        tuwas_bei_ascii_zeichen_A;
        break;
    case 'B':
        tuwas_bei_ascii_zeichen_B;
        break;
    case 0x27:
        tuwas_bei_27hex;
        break;
}

Autor: Matze G. (maroni666)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

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.