#include <compiler.h> #include <AT89C513xA.h> #define REG8051_H #define AT89C5131AUM_H #define TH0_Startwert 0xfc /* 65536 - 1000 (1 msec)*/ #define TL0_Startwert 0x18 /* ergibt fc18 als Startwert */ #define LED1 P1_0 sbit at 0x90 LED1; /* Bit 0 von Port P1 */ /* Hauptprogramm */ void main(void) { char zaehler; TMOD = 0x01; /* Timer 0 als 16 Bit Timer initialisieren */ TH0 = TH0_Startwert; TL0 = TL0_Startwert; zaehler = 0; /* Zähler für die Schleifendurchläufe */ TF0 = 0; /* Timer 0 Überlauf-Flag löschen */ TR0 = 1; /* Timer 0 Run-Bit setzen (Timer starten) */ while (1) /* Endlosschleife */ { if (TF0 == 1) /* d.h.: Timer abgelaufen */ { TF0 = 0; TH0 = TH0_Startwert; TL0 = TL0_Startwert; zaehler++; if (zaehler > 100) /* 100 ms */ { LED1 = ~LED1; /* LED-Bit invertieren */ zaehler = 0; } } } } Übersetze es mit flip aber es passiert nichts wo ist mein fehler :(
brauche einen Programm womit ich die Leds(oder halt eine) ein und ausschalten kann. finde bloß nicht wie man bei sdcc die zeit berechnet ms/s (8051/AT89C5131A) das programm funktioert bei keil aber mit sdcc nicht :( Vielen dank schonmal
wie muss ich das programm ändern damit nur eine led blinkt. und wie muss ich den timer ändern (ms/s) vielen dank
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.