Forum: Mikrocontroller und Digitale Elektronik kennt sich jemand mit SDCC aus.timer interrupt


von notanerd (Gast)


Lesenswert?

#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 :(

von Chn O. (notanerd)


Angehängte Dateien:

Lesenswert?

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

von Chn O. (notanerd)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.