mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frequenzgenerator mit 80c51


Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Gruß aus Berlin
Michael

Autor: Johannes (Gast)
Datum:

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

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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) ;
}

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.