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_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.
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
Gast_a schrieb: > also wäre dann quasi das Semikolon mit im array und dadurch die Zeile > gleich beendet, oder? nicht nur das, auch der Port stört. Gast_a schrieb: > kann man in einem array-element denn überhaupt 2 variablen werte > zuweisen? wenn ein array element selber eine struct ist dann ja, sonst nicht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.