www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer?


Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hiho,

habe noch nicht viel Ahnung von Assembler und habe die aufgabe gekriegt 
zwei Sieben-Segment-Anzeigen anzusteuern und die angezeigte Zahl jede 
Sekunde um eins zu erhöhen!

ich bin mir jedoch nicht sicher ob es so 100%ig richtig ist!?

mov th1, #high(-50000)     //Timer initialisierung
mov tl1, #low(-50000)
mov tmod, #0x10         //Timer Modus setzen
setb et1
setb eal

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achja, es handelt sich um einen 80C517A

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieviel %ig sicher bist du denn?

Alternativ könntest du ermitteln, mit welcher Taktrate du den 80C517A 
betreibst und alle wieviele µs der hoffentlich implementierte 
Timeroverflow-Interrupt kommt und wie der nicht gezeigte Code darauf 
reagiert ;-)

Oder schau ins Tutorial
http://www.8052.com/tutrtc.phtml

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, standartmäßig hab ich eine Taktrate von 12Mhz!

den Code würde ich gerne hier reinstellen, nur habe ich selber noch 
probleme wie ich den umzusetzen habe! -_-

um z.b. eine fünf auf meiner anzeige auszugeben muss ich
an meine Port 4 ja eine Hex.zahl übergeben:
mov p4, #0x6d   //fünf

wo sollte ich denn die hexwerte für die einzelnen zahlen denn am besten 
hinterlegen?

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen wrote:
> Also, standartmäßig hab ich eine Taktrate von 12Mhz!

Ja, dann solltest Du ja rauskriegen, welche Zeit nach 50000 Zyklen 
vergangen ist.


> wo sollte ich denn die hexwerte für die einzelnen zahlen denn am besten
> hinterlegen?

Schau dir einfach mal den Befehl "MOVC A,@A+PC" an, ideal für ne 
7S-Wandlungsroutine.

Und da es 2 Ziffern werden sollen, ist "DIV AB" auch ganz nützlich.


Peter

P.S.:
Es gibt keine "stehenden Arten".


Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habs jetzt

main:
clr tr1
mov th1, #high(-50000)
mov tl1, #low(-50000)
setb tr1
inc a
CJNE a,#0x05,main
jmp zaehlen

 -50000 entspricht 20ms!

Habe da leider was falsches geschrieben, es soll eine vierstelliger BCD 
Zahl sein!
schonmal dank, ich werd mal mein Glück versuchen! :)

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In das Tutorial hast du nicht lange rein geschaut, gell ?-)

Lass die Anzeige jetzt mal Anzeige sein und kümmere dich als erstes um 
das funktionierende Timer-Grundgerüst. Wenn du das so schreibst, dass 
nach 1s eine Unterroutine mit einer Nutzfunktion aufgerufen wird, kannst 
du das universell halten.

Im ersten Schritt würde ich als Nutzfunktion nur eine LED toggeln 
(AN=>AUS und umgekehrt). Damit siehst du gut und schnell, ob es 
grundsätzlich funzt.

Später klinkst du als Nutzfunktion eine Routine fürs Hochzählen von 
Variablen (Tipp vgl. Tutorial...) und fürs Anzeigen auf der 
Segementanzeige ein.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen wrote:

> Habe da leider was falsches geschrieben, es soll eine vierstelliger BCD
> Zahl sein!

16Bit Werte zerlegen geht im Prinzip auch mit dem DIV Befehl, ist aber 
etwas tricky.

Einfacher zu durchschauen ist da die Subtrakionsmethode mit 
Zehnerpotenzen.


Peter

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.