Array error C247:non-address/-constant initializer

Gast #2401501
Lesenswert?
• ▲
▼
Hallo liebe Forenmitglieder,

ich arbeite mich gerade mittels Keil µvision 4 in die 
Mikrocontrollertechnik ein. Ich habe ein vorgegebenes Headerfile welches 
ich nutzen soll, in dem Ampelphasen definiert sind:

#define R_R         P5=0x09; P3&=0xFB
#define R_RG      P5=0x0B
#define R_GR      P5=0x0C
#define R_GE       P5=0x0A
#define RG_R      P5=0x09; P3|=0x04
#define GR_R      P5=0x21; P3&=0xFB
#define GE_R       P5=0x01; P3|=0x04

das Headerfile include ich in meinem Hauptprogramm.
Jetz wollte ich im Hauptprogramm die Ampelphasen als array speichern und 
einfach als Schleife ablaufen lassen. Ist das möglich?

Quellcode:

#include "reg517a.h" //Headerdatei für Controller 80C517A
#include "keil51.h"  //Ampelphasen

void int_routine(); //Funktion delay deklarieren

void main(void)    //Hauptfunktion main
{
//Timer Initialisierung
  EAL=1;      //enable all interrupts
  ET0=1;      //enables Timer 0 overflow interrupt
  TMOD=0x01;
  TH0=0x3C;
  TL0=0xB0;
  TR0=1;          //run Timer 0

while(1);
}
//----------------------Interruptroutine-------------------------


void int_routine() interrupt 1  //Programmcode für Funktion delay
{   static unsigned int i,j; //Variabel vom Typ int ohne Vorzeichen

unsigned char ampelphase[7]={RG_R, R_GE, R_GR, R_RG, R_R, GE_R, GR_R};
unsigned char* pampelphase;
pampelphase = ampelphase;

    i++;
    if(i ==  10)     //alle 0,5s in die Schleife
    {    ampelphase[j];
        j++;
        i=0;
    }
  TR0 =0;
  TL0 = 0xB0;
  TH0 = 0x3C;
  TR0 = 1;
}
------------------------------ENDE-------------------------------------- 
-
Ich bekomme den Fehler  error C247: non-address/-constant initializer in 
der Zeile "unsigned char ampelphase[7]=....",sowie dort einen Syntax 
error. Jedoch ist die Syntax für array doch korrekt,oder?! 2 zeilen 
darunter habe ich außerdem den Fehler "redefinition pampelphase". Damit 
kann ich leider auch nichts anfangen.

Ich habe das ganze auch schon ohne das zusätzliche headerfile gelöst und 
eine switch case Anweisung gemacht, jedoch wäre das ganze so viel besser 
gelöst.

Könnte mir jemand helfen, was für einen Fehler ich mache?! Ist das so 
überhaupt machbar?

LG
Gast #2401503
Lesenswert?
• ▲
▼
Gast_a schrieb:
> Könnte mir jemand helfen, was für einen Fehler ich mache?! Ist das so
> überhaupt machbar?

#define R_R         P5=0x09; P3&=0xFB

unsigned char ampelphase[7]={RG_R, R_GE, R_GR, R_RG, R_R, GE_R, GR_R};


überlege doch mal was nach den Preprozessor dort stehe, dann sollte klar 
sein das es so auf jeden Fall nicht geht.
Gast #2401517
Lesenswert?
• ▲
▼
also wäre dann quasi das Semikolon mit im array und dadurch die Zeile 
gleich beendet, oder? Daher auch die Syntax Fehler.

kann man in einem array-element denn überhaupt 2 variablen werte 
zuweisen?


lg

Antwort schreiben

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.

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.