Forum: Mikrocontroller und Digitale Elektronik Timer 0 98c20151 vs 80c515


von paul leenders (Gast)


Lesenswert?

Folgernde Timer 0 initialisierung wird beim Start durchlaufen.

Mit  der Selbstbau Entwicklungsumgebung 80c515  läuft das Programm mit
dem Timer 0 interrupt einwandfrei.

Wenn ich das dann in den 89c2051 brenne  wird der Timer0 einfach nicht
ausgeführt. CPU Definitionsfile ist das Original für den 2051 in beiden
Fällen.

Wo mag die Ursache sein.

Paul
;---------------------------------------------------------------
ORG    00h
                jmp start;
;neben den anderen Vektoren  für den timer 0 das hier.
 ORG 0Bh
        ljmp timer0_int;   endet mit reti
........usw usw   mit jmp auch probiert das gleiche
;
org
                023H
                ljmp serial_int;    usw usw endet mit  RETI
;                      dto
Start:
              call timer_init;
 ;        weiter mit Programm
loop_haupt:

               call xyz
            call sonstwas
         jmp loop_haupt


timer_init:
                ; Initialisierung
;---------------------------------------------------------------
; serielle Schnittstelle aktivieren
;  4800 Baud, Modus 1
        mov TL1, #244
        mov TH1, #244

; Timer 0 aktivieren
;  Intervall: 500 ms
;  Software-Kontrolle Code-Generator für 8051-Kompatible
        mov TL0, #TL0PRE;    vom    Erik Buchmann
        mov TH0, #TH0PRE
        mov timer0_ext24,#TX0PRE

; die SFR's initialisieren
        mov SP,  #20h
        mov SCON,#82
        mov PCON,#128
        mov TMOD,#33
        mov TCON,#80
        mov IE,  #130
                SETB TR0;   TIMER 0 FREIGEBEN
    SETB ET0;
               SETB TF0;
;Es spielt auch keine Rolle ob ich die TR0 ET0 TFo setze oder nicht
;80515 läuft    89c2051 nix
        RET;   initialisierung gelaufen  ab ins programm


Besagte routinen sprich die Timer0_int  läuft auf dem 80c515
einwandfrei
auf dem 89vc2051 geht nix ich stehe vor einem Rätsel.
;----------------------------------------------------------------------- 
--------
; Interruptbehandlungsroutine Timer 0
timer0_int:
        mov TL0, #TL0PRE
        mov TH0, #TH0PRE
        djnz timer0_ext24,timer0_int_label
        mov timer0_ext24,#TX0PRE    ; alle 500 ms toggel p1.7
        cpl p1.7; das ist alles was Timer 0 zu tun hat.
        reti;   mit 515 und led am Port OK  mit 89c2051    nix iss.
;----------------------------------------------------------------------- 
----------

von Peter D. (peda)


Lesenswert?

Der Code sieht o.k. aus, es muß also an dem Rest des Programms liegen.

Die 8051 sind ja kompatibel, d.h. Timer, Uart usw. werden immer gleich
angesteuert.

Der AT89C2051 hat allerdings nur 128 Byte SRAM und keinen externen
SRAM, daran könnts liegen.



Peter

von paul Leenders (Gast)


Lesenswert?

Jau

ich habs gefunden

Speicherzugriff in die SFR´s

Ich war schon ganz am Boden

Peter ..Danke hat mir sehr geholfen.

Paul

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.