Forum: Mikrocontroller und Digitale Elektronik Frequenzgenerator mit 80c51


von Johannes (Gast)


Lesenswert?

Hi!
Ich bräuchte da mal etwas unterstützung. Ich soll mit einem 80c51 eine 
Art Frequenzgenerator realisieren und mir fehlt etwas der Startpunkt wo 
ich anfangen soll.
Am P3_2 soll ein Rechtecksignal gemessen werden und die Periodendauer in 
ys am Port 0 (lower Byte) und am Port1 (higher byte) ausgeben. Also zB. 
bei 1356 ys -> 1356d = 54Ch  Port0= 4Ch  Port=1 05h

Kann mir jemand sagen wie ich da am besten Anfange?! Oszifrequenz ist 
12Mhz und das ganze in Ansi-C

Vielen Dank im Vorraus für eure Tipps!

Ciao
Johannes

von Michael U. (Gast)


Lesenswert?

Hallo,

vielleicht solltest Du Dir erst über den Unterschied zwischen einem 
Frequenzgenerator und einer Periodendauermessung klarwerden... ;)

Gruß aus Berlin
Michael

von Johannes (Gast)


Lesenswert?

Du hast recht. Ich sollte natürlich die Periodendauer ausgeben und 
keinen Frequenzgenerator basteln.

von Michael U. (Gast)


Lesenswert?

Hallo,

wenn das Ding nichts weiter machen soll:

In einer Schleife den Pinzustand abfragen, wenn der von L auf H wechselt 
einen passenden Timer starten. Weiter abfragen, bis wieder ein 
L/H-Wechsel erkannt wird, dann den Timer auslesen und die Zeit 
ausrechnen und ausgeben und dann eben wieder von vorn...

Wenn es vornehm werden soll: Flanken-Interrupt programmieren usw.

Gruß aus Berlin
Michael

von Johannes (Gast)


Lesenswert?

Könnte das klappen?

Void Init ExtInt 0(void){

TCON=TCON|0x01;
IE=IE|0x81;
}

Void Iinit Timer0(void){

THO =0;
TLO= 0;
TMOD=TMOD|0x01;
TMOD=TMOD&0xF1;
}
Void ISR EIO(void) interrupt0{
If(TRO==1){TRO=0;
P1=TLO;
P2=THO;
TLO=0;
THO=0;
TRO=1;
}
else{TRO=1;}
}
Void main(void){
Init extint 0();
Init Timer0() ;
While(1) ;
}

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.