Hallo an alle, ich hab hier n kleines Problem:
ich hab erste C-Versuche gestartet und wollte mal ein Programm
schreiben.
Programmablauf:
Port 0 dient als Eingang
Port 1 als Ausgang
Je nachdem was am Eingang anliegt soll am Ausgang ein Bitmuster
ausgegeben werden.
Programm:
// ------------- READS51 generated header --------------
// module : C:\Programme\Rigel\Reads51\Work\Roboter\Roboter.c
// created : 08:51:11, Thursday, April 24, 2008
// -----------------------------------------------------
#include <sfr51.h>
#define P0 Sensoren
#define P1 Motortreiber
int P0, P1;
int main()
{
while(1)
{
if (Sensoren == 0x00)
{
Motortreiber = 0xE4;
}
if (Sensoren == 0x20)
{
Motortreiber = 0xE7;
}
if (Sensoren == 0x40)
{
Motortreiber = 0xD4;
}
if (Sensoren == 0x60)
{
Motortreiber = 0xFA;
}
if (Sensoren == 0x80)
{
Motortreiber = 0xFC;
}
if (Sensoren == 0xA0)
{
Motortreiber = 0xD4;
}
if (Sensoren == 0xC0)
{
Motortreiber = 0xD7;
}
if (Sensoren == 0xE0)
{
Motortreiber = 0xD4;
}
}
return 0;
}
wenn ich das Programm erfolgreich kompiliert habe tut sich in der
Simulation und der Hardware nichts...
µC: Atmel 89C51
Compiler: Reads51
padi wrote: > #include <sfr51.h> > #define P0 Sensoren > #define P1 Motortreiber > > > int P0, P1; ... > wenn ich das Programm erfolgreich kompiliert habe tut sich in der > Simulation und der Hardware nichts... Das ist völlig korrekt. Du legst 2 Variablen im SRAM an und spielst mit denen, d.h. es erfolgen keinerlei IO-Zugriffe. Daß diese Variablen P0 und P1 heißen, sollte eigentlich ne Warnung des Compilers bringen, da ja in dem sfr51.h die Symbole P0 und P1 bereits definiert sind. Auch ist es äußerst unklug, einen 8Bitter unnötig zu 16Bit-Rechnungen zu zwingen. D.h. wenn möglich, sollten Variablen vom Typ "unsigned char" sein. "int" für 8Bit-Zahlen ist immer eine Verschwendung von SRAM und CPU-Zeit. Peter
Hallo Peter
danke für die Hilfe hab den Fehler gefunden:
es muss so aussehen:
die 8Bit ports als 16 bit zu deklarieren war natürlich schwachsinn :-)
#include <sfr51.h>
#define Sensoren P0
#define Motortreiber P1
int main()
{
while(1)
...
gruß padi
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.