BID = 164893
Leon79 Gelegenheitsposter
 
Beiträge: 77
|
Hallo Leute
Ich möchte mir eine Laufzeitmessung mittels µC realisieren.
Bei einem Tastendruck soll ein startimpuls ausgegeben werden und gleichzeitig fängt der timer 0 zum zählen an. Wenn am Externen interrupt eine negative flanke ansteht soll er den timer 0 stoppen und die beiden bytes vom timer ausgeben auf 16 leds. dieser wert müsste dann meine zeit sein (Abhängig von der taktfrequenz und denn clocks)?
Nur leider funct das ned so wirklich. Vielleicht könnte ja jemand kurz über meinen Code drüberschauen und mir ein paar tipps geben. Wär wirklich super, probiere jetzt schon seit 2 tagen und mach leider keine fortschritte.
#include <reg51.h>
int i,j,HighByte,LowByte,Selbsthaltung;
char Fehler;
sbit Taster = P0^0;
sbit Messimpuls = P0^1;
void Messung (void);
void ex0isr(void) interrupt 0
{
TR0 = 0; //Timer 0 stoppen
Messung(); //
}
void isrT0 (void) interrupt 1
{
Fehler = 1; //bei timerüberlauf Fehler =1
}
void main (void)
{
Messimpuls = 1;
Taster = 1;
TMOD = TMOD & 0xF0; //Timer 1 auf 0000, timer 0 modus 1 16 bit timer gate 0,
TMOD = TMOD | 0x01;
IT0 = 1; // interrupt 0 type control bit Flankengesteurt
EX0 = 1; //enable external interrupt 0
EA = 1; // disable all interrupt low aktiv!!
ET0 = 1; //enable timer 0 overflow interrupt
Fehler = 0;
Selbsthaltung = 0;
while (1)
{
Messimpuls = 1;
for (i=0;i<5;i++)
{
i=i;
}
if (Taster == 0)
{
Messimpuls = 0;
for (i=0;i<5;i++)
{
i=i;
}
TR0 = 1;
Messimpuls = 1;
//for (j=0;j<32000;j++)
for (i=0;i<15000;i++)
{
for (j=0;j<200;j++)
{
j=j;
}
}
P1 = 0xFF;
P2 = 0xFF;
}
Taster = 1;
}
}
void Messung (void)
{
//Selbsthaltung = 0;
HighByte = TH0;
LowByte = TL0;
TH0 = 0x00;
TL0 = 0x01;
P2 = LowByte^0xFF;
P1 = HighByte^0xFF;
}
vielen DAnk für eure Hilfe
mfg
Leo
_________________
"Krieg ist Frieden", "Freiheit ist Sklaverei" und "Unwissenheit ist Stärke"
|