Forum: Mikrocontroller und Digitale Elektronik Zeitverzögerung mit Timer 1


von monti (Gast)


Lesenswert?

Hallo,

ich bin grad ein bischen am verzweifeln, hoffentlich kann mir hier 
jemand weiterhelfen

und zwar versuche ich eine Zeitverzögerung von 625ms, mit Timer 1, per 
Interupt steuerung zu basteln

Das ganze soll auf dem 80(C)515 mikrocontroller laufen, der arbeitet mit 
12 MHz

Also schreib ich in den 16 Bit Zähler "40535" raus, damit der Timer 25 
mal die restlichen 25000 hochzählt. Eigentlich müsste er nach meiner 
Rechnung    (25 * 25000 = 625000)    25 ms erreichen

Nur beim Testen mit Breakpoints kriege ich bloß 4ms

hier der Code

1
$include (reg515.inc)
2
3
Anweisungen:
4
        org    0000H
5
        ljmp   progr
6
        org    001BH
7
        ljmp   timer_1
8
progr:  
9
        MOV    TL1,#57H
10
        MOV    TH1,#9EH
11
        MOV    89H,#20H
12
        setb   EAL
13
        setb   ET1
14
        setb   TR1      
15
warten: 
16
        sjmp   warten
17
timer_1:     
18
        MOV    TL1,#57H
19
        MOV    TH1,#9EH
20
        CLR    TF1
21
        INC    R1 
22
        CJNE   R1,#019H,zurueck  ;wenn 25 nicht erreicht, springe zu reti
23
        clr    P0.1
24
zurueck:
25
        reti

von monti (Gast)


Lesenswert?

äh ich meinte 625 ms im 4ten Abschnitt

von Anja (Gast)


Lesenswert?

Versuch mal R1 im INIT-Teil auf 0 zu initialisieren (Das RAM wird bei 
RESET nicht gelöscht).

von Anja (Gast)


Lesenswert?

Register 89 sollte auch mit 0x10 (16-Bit Timer) anstelle 0x20 (8-Bit 
auto-reload) initialisiert werden.

von monti (Gast)


Lesenswert?

ah perfekt, eine Zahl geändert und es geht danke

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.