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
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