Timer?

Gast #551246
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
Gast #551258
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?
#551271
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".

Gast #551276
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! :)
Persönliche Seite #551277
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.
#551283
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.