Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > > > > > Hallo, > > > > > > > > > > > > ich bin von C-Control I auf C-Control Pro MEGA128 umgestiegen. Ich programmiere in CompactC. > > > > > > > > > > > > Ich möchte eine Ablaufsteuerung aufbauen. Dazu habe ich "früher" häufig mit den Tabellen > > > > > > (Table-Anweisung) gearbeitet. > > > > > > > > > > > > Nun habe ich in C versucht, dies mit Arrays nachzubilden. > > > > > > > > > > > > Ich stoße jedoch ständig auf Schwierigkeiten! > > > > > > > > > > > > Mehrdimensionale Arrays können nicht referenziert werden!!. Parameterübergaben gehen > > > > > > nur bei eindimensionalen Arrays. Als Rückgabewerte einer Funktion kann man sie > > > > > > nicht verwenden. Dynamisch (Größenangabe durch Variablen) kann man sie nicht > > > > > > erstellen, es exestieren keine Funktionen um die Dimensionen eines Arrays ermitteln > > > > > > zu können und und und... > > > > > > > > > > > > Eine sinnvolle alternative für meine Ablaufsteuerung wäre noch Struc(turen) zu benutzen. > > > > > > Geht nicht! > > > > > > Vieleicht habe ich ja auch aufs falsche Pferd gesetz. Habt ihr noch einen Hinweis? > > > > > > > > > > > > Vielen Dank! > > > > > > > > > > Ja es gibt Einschränkungen, aber es ist immer noch mehr möglich als auf der C-Control I, > > > > > dort hat man nur globale statische ein-dimensionale Arrays vom Typ Word. Ich überlege noch wie > > > > > man Referenzen übergeben und zurückgeben kann, ohne die komplette Pointerarithmetik mit > > > > > einzubauen. > > > > > > > > > > Dynamisch (Größenangabe durch Variablen) gehen nur mit den C99 Standard und auch dort nur lokal, > > > > > weil sie auf dem Stack angelegt werden. Der Speicher ist zu klein um sinnvoll mit einem Heap > > > > > zu arbeiten. Der C-Control Pro Compiler kann sich nicht mit einem kommerziellen Compiler > > > > > messen, und selbst die unterstützen größtenteils nicht C99. Wenn Du das alles haben willst, mußt > > > > > Du schon den GNU Compiler benutzen. > > > > > > > > > > Gruss Peter > > > > > > > > > > > > > > > > > Fred > > > > > > > > Hallo Fred, > > > > ich habe auch viel mit der CC1 gearbeitet und auch mit LOOKTAB. > > > > Die CC Pro kann keine mehrdimensionalen flash arrays. > > > > Ich habe aber eine Lösung gefunden, mit der ich leben kann. > > > > > > > > > > > > > > > > // Table komplett definieren und ab ins flash: > > > > flash byte match1[8] = {16, 244, 35, 78, 1, 8, 0, 203}; > > > > flash byte match2[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > flash byte match3[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > flash byte match4[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > flash byte match5[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > flash byte match6[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > flash byte match7[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > flash byte match8[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > flash byte match9[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > flash byte match10[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > flash byte match11[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > flash byte match12[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > flash byte match13[8] = {16, 156, 193, 78, 1, 8, 0, 240}; > > > > > > > > > > > > // 1 Zeile im Ram definieren > > > > byte array1[8]; // Schmierarray > > > > > > > > // 1 Zeile vom flash ins Ram kopieren und verarbeiten > > > > array1 = match1 > > > > > > > > Anders gehts leider nicht > > > > > > > > mfg Ellen > > > > > > > > > > > > > > > > > > Wieso keine mehrdimensionallen Arrays? Klar geht das: > > > > > > flash byte fglob[2][2]={10,11,12,13}; > > > > > > > > > Gruss Peter > > > > Hallo Peter, > > ich hab meinen Beitrag vom 15.8. gelesen. > > Dur hast natürlich recht. > > > > Das Problem ist folgendes. > > > > Du musst mindestens soviel RAM bereitstellen, wie das Flash array groß ist. > > Mit 1 k Ram geht das Problem schon los. > > Auf das flash array kannst Du nicht indiziert zugreifen und keine strukturierte > > Programmierung machen. Fred hat das auch erkannt. > > Ist das mit der IDE 2.1 erledigt? > > Nope. Werde ich aber bis Ende Januar in Angriff nehmen. > > Gruss Peter > > > > > Die Anweisung LOOKTAB bei der CC1 bietet die Möglichkeit 1 dimensional > > auf Tabellen zu zugreifen. > > > > Gruß > > Ellen > > > > > > > > > > > >