mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Berechnung


Autor: Ben M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich hänge gerade an einem Problem und komme absolut nicht weiter obwohl 
eigentlich alles "richtig" ist.

Mit diesem Programm wird versucht eine Geschwindigkeit (in m/s) zu 
berechnen und auf dem LCD Display auszugeben (µC 8252 (Atmel)) 
stattdessen gibt er immer nur 3 gleiche zahlenpaare aus.

....
.......
...........


;¸,o@´`'@o,¸¸,o@´`@o,¸¸,o@´`'@o,¸¸,o@´`'@o,¸¸,o@o,¸Initialisierung¸,o@´` 
'@o,¸¸,o@´`@o,¸¸,o@´`'@o,¸¸,o@´`'@o,¸¸,o@o,¸

init:  mov   a,#0      ;Register A = 0
    setb   IT0      ;ext. Interrupt0 bei abfallender Flanke
    setb   EX0      ;ext. Interrupt0 freigeben
    setb   EA        ;globale Interruptfreigabe

;¸,o@´`'@o,¸¸,o@´`@o,¸¸,o@´`'@o,¸¸,o@´`'@o,¸¸,o@o,¸Initialisierung ende 
¸,o@´`'@o,¸¸,o@´`@o,¸¸,o@´`'@o,¸¸,o@´`'@o,¸¸,o@o,¸



  chronen3:mov a,#00
        lcall cursorpos
        mov a,b
            lcall dezaus

        mov a,#40        ;Cursor auf die Postition
        lcall cursorpos    ;-Anfang zweiter Zeile-  (Km/h Berechnung ab 
jetzt)
        mov a,b
        lcall dezaus

        ljmp chronen3

;¸,o@´`'@o,¸¸,o@´`@o,¸¸,o@´`'@o,¸¸,o@´`'@o,¸¸,o@o,¸Interrupt-Service-Rou 
tine  (MESSPROGRAMM-chrony) ¸,o@´`'@o,¸¸,o@´`@o,¸¸

startmess:  mov a,#0         ;Register A = 0
startchron:  inc a            ;Register A inkrementieren 1Zyklus 
((1/Takt) * 1000=T)
        jb Taster2,endechron ;Wenn T2 auf high dann Messstop  2Zyklen
        sjmp startchron    ;Jump wenn T2 nicht high 2Zyklen
                      ;Angenommen 5 Leds sind an nach dem stop d.h. 23 
Zyklen sind vergangen (5x normaler durchlauf)(wenn T2 high 2zyklen)
                      ;1 Zyklus entspricht 1µs bei 12MHz

endechron:  mov b,#3          ;Reg B mit #3 (aufgrund der Zyklen)
        MUL AB          ;Multipliziere Reg A mit Reg B
        mov b,a          ;Inhalt von Reg A nach Reg B
        mov a,#50000      ;Reg A mit #50000 (Abstand der Lichtschranken)
        DIV AB          ;Dividiere Reg A mit Reg B
        mov b,#3          ;Inhalt von Reg A nach Reg B
        MUL AB          ;Multipliziere Reg A mit Reg B
        mov b,a          ;Inhalt von Reg A nach Reg B
        reti            ;Rückkehr aus dem Interrupt

;¸,o@´`'@o,¸¸,o@´`@o,¸¸,o@´`'@o,¸¸,o@´`'@o,¸¸,o@o,¸Interrupt-Service-Rou 
tine  (MESSPROGRAMM-chrony)-ENDE ¸,o@´`'@o,¸¸,o@´`@o,¸¸

Autor: edi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi,


mov a,#50000

...so was habe ich noch nie gesehen...

ed

Autor: Ben M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Geht das etwa nicht ? Register A reicht doch bis 65535 habe ich gedacht.

Autor: Ben M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok es geht bloss bis 256, thread bitte schließen ich mach ein Anderer 
auf

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.