Forum: Mikrocontroller und Digitale Elektronik 80537: Rechnen mit der MDU


von Thomas_v2.1 (Gast)


Lesenswert?

Hallo,
ich versuche gerade die Periodendauer eines Eingangssignals zu messen,
und an einem LCD-Display auszugeben. Das signal startet und stoppt
einen Timer - der Timerwert soll dann ausgegeben werden.

Jetzt mein Problem:
Mein Programm gibt mit meinem Entwicklungsboard nur im Debug Modus
(schrittweise Abarbeitung) den korrekten Wert des Timers aus. Wenn es
normal läuft werden komischerweise nur zwei Zeichen des Timerwertes
ausgegeben.
Vielleicht hat ja einer einen Tip.
Hier die Umrechnungsroutine von 16bit nach ASCII:

; Ausgabe 16Bit Timer-Wert - benutzt wird die 16bit MDU des 80537
  mov  a, #00000100b    ; Cursor ModeEntry, nach links
  lcall  lcd_steu_aus

; 16bit Wert durch 10 teilen -> Rest ausgeben
  mov  r7, #6                  ; 6 Stellen ausgeben
loop:  mov  MD0, Low_Safe          ; LowByte des Timerwerts
  mov  MD1, High_Safe          ; HighByte des Timerwerts
  mov  MD4, #0ah               ; durch
  mov  MD5, #00h               ; 10 teilen
  mov  Low_Safe, MD0           ; Wert speichern
  mov  High_Safe, MD1
  mov  a, MD4      ; Wert ist nur im Low Rest
  mov  b, MD5      ;
  add  a, #30h      ; ASCII Zeichen aus Rest
  lcall  lcd_dat_aus             ; ausgeben
  djnz  r7, loop
  mov  a, #00000110b    ; Entry Mode, Cursor Rechts
  lcall  lcd_steu_aus
  sjmp  loop

Danke schonmal

Thomas

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.