PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Print-Befehl von Bascom in C nachbauen



Murus
27.08.2008, 12:33
Hallo zusammen,

ich muss ein älteres, von mir geschriebenes Programm (Bascom Basic) nach C portieren.
Dabei habe ich Probleme beim Print-Befehl. Sprich: Ich kriege die Routinen dahinter in C nicht nachgebaut - es funktioniert nicht.
Hier mal die Codeschnipsel:

Der Ursprüngliche Bascom-Code:



For I = 1 To 42
Print Sendefeld(i); ' das Semikolon verhindert den Zeilenbruch, sonst verheddert sich der Empfänger
Waitms 2
Next


Diesen Abschnitt gilt es in C nachzubauen. Momentan habe ich das hier:



void Displayrefresh(void)
{
for(uint8_t i = 0; i<=41; i++)
{
while (!(UCSRA & (1<<UDRE))) // Wait until Buffer is empty - ready to send.
{
}

UDR = Sendefeld[i];
_delay_ms(2);

}

}


Der Code wird auf ein und demselben Controller ausgeführt. Doch bei der C-Version stellt sich der Empfänger quer.
Hintergrund: Der Empfänger (Mega8) empfängt ein 42 Stellen grosses Array (unsigned 8bit integer), welches er dann verarbeitet und auf einem Display (LED-Matrix) repräsentiert. Bei der Bascom-Version zeigt er das Array korrekt an. Bei der C-Version kommt zeigt er gar nichts an. Den Empfänger kann ich leider nicht ändern, ich muss die C-Version dazu bringen, sich wie die Bascom-Software zu verhalten...

Hat jemand Ideen?

Gruss
Mario

PicNick
27.08.2008, 12:59
Bascom konvertiert "sendefeld" je nach Datentyp (DIM) in druckbare Zeichen, bzw. versucht es.

Test: teile und herrsche: ändere mal
UDR = Sendefeld[i];
in
UDR = 65;

Jetzt müssten 41 "A"s auftauchen.

Passiert das NICHT ---> hats was mit dem printen selbst
Passiert das schon ----> hats was mit den Zeichen (bzw. mit dem Array)

Murus
27.08.2008, 13:04
Hmm... stimmt...
Ich übertrage nur die Zahlen 0 bis 3... Werde das Ganze mal als ASCII rüberdrücken, danke für den Tipp!

Edit: Volltreffer, das wars!

Vielen Dank

Gruss
Mario

PicNick
27.08.2008, 13:08
Wenn's so ist (0-3), reicht

UDR = Sendefeld[i] + 0x30;


durch diese hohle gasse muss er kommen
es führt kein and'rer weg nach küsnacht
hier vollend' ich's, die gelegenheit ist günstig :-)