Forum: Mikrocontroller und Digitale Elektronik Frage zu Timer und Counter


von Alucard27 (Gast)


Lesenswert?

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;
        }
    }
}

von Peter D. (peda)


Lesenswert?

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.

von Peter D. (peda)


Lesenswert?

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