Hallöchen :)
Habe ein kleines Programm (Keil) wo ein Fehler drin ist den ich nicht
finde, oder verstehe. Ganz simpel, habe einen Timer 0 und einen Counter
1, nur scheint er bei der obigen Funktion stecken zu bleiben.
Vllt könnt ihr mir ja sagen was ich falsch gemacht hab? Vielen Dank,
________________________________________________
#include <reg552.h>
// Counter
// P1=Lampen
// P5=Knöpfe
void delay(unsigned char zeit)
{
int i;
for(i=0; i != zeit; i++)
{
TL1=0;
TH1=0;
TF1=0;
TR1=1; //Startet Timer
while(TF1!=1)
{
}
}
}
void main()
{
TMOD=0x62; //Legt Counter 1 & Timer 0 fest,
TL0=0;
TH0=0;
TR0=1; //Startet Counter
P1=0x00;
P5=0x00;
while (1)
{
if (P1==0x01) //Bei Knopfdruck
{
TL0++;
delay(2);
P5=TL0;
}
}
}
Alucard27 schrieb: > TMOD=0x62; //Legt Counter 1 & Timer 0 fest, Alucard27 schrieb: > nur scheint er bei der obigen Funktion stecken zu bleiben. Na wenn Du T1 als Counter einstellst, mußt Du auch an P3.5 131072 Pulse anlegen, ehe die Schleife verlassen wird.
Alucard27 schrieb: > if (P1==0x01) //Bei Knopfdruck Eine Taste gegen VCC ist beim 8051 recht unüblich, da der feste interne Pullups hat. Man bräuchte einen sehr niederohmigen Pulldown (<1k), um gegen den Pullup zu kämpfen und bei losgelassener Taste Low zu lesen. Nur wenige neuere 8051 können den Pullup abschalten.
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.