80c535 Timer/Counter von 8Bit auf 16Bit (Frequenzen anzeigen lassen aufm LC-Display über HD44780)

OP #1153645
Lesenswert?

http://nopaste.info/35ecd989d8.html

Moin Volk! :)

Endlich hab ich mal gelegenheit hier bei euch ins Forum zu schreiben! 
hihi

Also bin ITA-Schüler 13.Klasse und im Blockprojekt.
Wir haben uns als Aufgabe genommen mit unserem Mikrocontroller
einen Frequenzmesser zu basteln.
Dabei war das klare Projektziel folgendermaßen definiert:
Timer0 = als Timer benutzen
Timer1 = als Counter benutzen
Unser Timer läuft 50ms und das 20 mal, um eine Sekunde zu kriegen.
Wir sollten der Einfachheit halber aber nur einen Frequenzbereich bis 
255Hz
abdecken, also nur die TL1 zum Anzeigen auf einem Display benutzen.
Soweit sind wir auch bis heute gekommen. Unseren ASM-Code habe ich 
angehangen.
Jetzt würde ich gerne Ansätze wissen, wie ich TH1 mit einbeziehe und 
somit einen Frequenzbereich von 65535 Hz abdecke.

Ich dachte schon daran, dass ich größere oder kleinere Frequenzbereiche 
messen kann, in dem ich meine Timer Sekunde vergrößer oder verkürze.
Dann müsste ich halt nur im nachhinein wieder mit dem Divisor oder 
Multiplikant zurück dividieren bzw. multiplizieren.

Dann hätte ich aber immer noch das Problem, dass ich bei größeren 
Frequenzen eine 16Bit Variable definieren müsste, um die Ausgabe zu 
realisieren. Und laut unserem Code können wir nicht auf die 
Akkumulatoren A oder B zugreifen, weil sie benutzt werden...

MfG Rahman
Gast #1154212
Lesenswert?

Da es in ASM ist, sollte

Var16  db  2

funktionieren. "db" bedeutet "define byte space" und reserviert dir in 
dem Fall 2 Byte Speicher. So macht es zumindest der Assembler, den wir 
in der Ausbildung benutzt haben, ich denke aber, der WH machts nicht 
groß anders. Andersrum gesehen sagt dir das Handbuch zum WH bestimmt, 
wie's geht...

Das Überlauf-Handling musst du aber selbst implementieren, in C machts 
der Compiler.

Ralf

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren