Gast
#2401501
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