unsigned char code Ascii_1 C

Gast #3271469
Hallo Coder, in der ersten Zeile vom Code Ausschnitt ist zwischen char 
und code ne Leerzeile, da meckert der Keil ARM compiler. Im zweiten 
Ausschnitt wird die Adresse von Ascii_1 angesprochen. da meckert er 
natürlich auch. Woran liegt das und warum ist zwischen code udn Ascii_1 
überhaupt ein Leerzeichen. Der Code(Ausschnitt) ist für einen 8051 
Prozessor den ich auf einen ARM M0+ portieren will. Danke schonmal für 
Anregungen und konstruktive Kritik.

1
unsigned char code Ascii_1[241][5]={    // Refer to "Times New Roman" Font Database...
2
            //   Basic Characters
3
  {0x00,0x00,0x00,0x00,0x00},    //
4
  {0x00,0x00,0x4F,0x00,0x00},    //   (  1)  ! - 0x0021 Exclamation Mark
5
  {0x00,0x07,0x00,0x07,0x00},    //   (  2)  " - 0x0022 Quotation Mark
6
  {0x14,0x7F,0x14,0x7F,0x14},    //   (  3)  # - 0x0023 Number Sign
7
  {0x24,0x2A,0x7F,0x2A,0x12},    //   (  4)  $ - 0x0024 Dollar Sign
8
  {0x23,0x13,0x08,0x64,0x62},    //   (  5)  % - 0x0025 Percent Sign

1
    case 1:
2
      Src_Pointer=&Ascii_1[(b-1)][i];
3
      break;
4
    case 2:
5
      Src_Pointer=&Ascii_2[(b-1)][i];
6
      break;
Gast
erstmal eines: Mach aus

unsigned char code Ascii_1[241][5]={ ...

mal

const unsigned char Ascii_1[....

und dann: weißt du eigentlich, was du mit Ascii_1[241][5] da geschrieben 
hast? Also was du TATSÄCHLICH dort anrichtest?

Fang lieber an, mit sowas ein bissel zu rechnen und mach ein

const unsigned char Ascii_1[241*5] =
{ .....
};

draus.

W.S.
Gast
W.S. schrieb:
> Fang lieber an, mit sowas ein bissel zu rechnen und mach ein
>
> const unsigned char Ascii_1[241*5] =
> { .....
> };
>
> draus.

was soll das bringen? Der Compiler kann sehr gut selber rechnen. Es 
macht auch nichts anderes.
Gast
unsigned char code Ascii_1[241][5]={ ...

wenn ich das so mache dann meckert er wenn ich mit

Src_Pointer =&Ascii_1[(b-1)][i]; auf die Adresse zugreifen wll
Jan schrieb:
> unsigned char code Ascii_1[241][5]={ ...
>
> wenn ich das so mache dann meckert er wenn ich mit
>
> Src_Pointer =&Ascii_1[(b-1)][i]; auf die Adresse zugreifen wll

Jede Wette, dass sich bei der Definition von Src_Pointer auch wieder 
dieses 'code' findet.

Die müssen ALLE weg!
Überall.
UNd dann muss man den Code studieren, ob dieses 'code' irgendwelche 
Auswirkungen hatte. Ob Dinge genau so geschrieben wurden, WEIL es da 
eben dieses 'code' gab.

Das Problem:
Wenn du Code von A nach B portieren willst, solltest du schon ganz gut C 
können, um zu erkennen, welche Teile speziell und nur für diesen einen 
Prozessor geschrieben wurden.
Die Idee "Ich kann das nicht selber schreiben, also portiere ich mir 
Code von einem anderen Prozessor auf meinen Zielprozessor" ist zwar 
naheliegend, aber ohne ein gewisses Wissen geht das nun mal oft nicht.
Du wärest gut beraten, wenn du analysieren würdest, was die Idee im 
Originalcode ist, wie der funktioniert, und dann mit dieser Idee den 
Code im Prinzip auf deinem Prozessor neu schreibst. Das bringt dann auch 
deine C-Kenntnisse weiter und hat den Vorteil, dass du deinen Code intim 
kennst um ihn in weiterer Folge zu ändern oder zu erweitern.

Irgendwelche Anpassungen sind auf dieser Ebene praktisch immer 
notwendig. Die Idee, man könne den Code so einfach mir nichts dir nichts 
auf einen anderen Prozessor transportieren und alles ist in Butter, ist 
ein Trugschluss. Das funktioniert oft ganz einfach nicht.
Gast
error:  #513: a value of type "const unsigned char *" cannot be assigned 
to an entity of type "unsigned char *"

Der Source Pointer ist so definiert
unsigned char *Src_Pointer;

Also sowie ich das verstehe, benutzt man hier den Flash speicher um die 
Ganzen ASCII Sachen reinzuschaufeln, da das Ganze viel Speicher braucht. 
Ich denke beim Cortex M0+ ist ist es nicht unbedingt nötig.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.