Datum: 24.04.2008 13:24
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
Datum: 24.04.2008 14:33
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
Datum: 24.04.2008 15:01
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
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel