Forum: Mikrocontroller und Digitale Elektronik Berechnung


von Ben M. (Gast)


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,¸¸

von edi (Gast)


Lesenswert?

hi,


mov a,#50000

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

ed

von Ben M. (Gast)


Lesenswert?

Hi

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

von Ben M. (Gast)


Lesenswert?

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

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.