Bitte um Hilfe!!!! Was ist hier falsch? (Timer)

Gast #90817
Lesenswert?

Hi, habe Probleme mit dem Timer, und seinen Startwerten, etc.
was ist hier denn genau falsch? Müsste nur ein bisschen sein. würde es
aber gerne wissen. habe gestern 3 STunden damit zu verbracht dannach zu
such, kann aber nichts finden!!!
danke schonmal für eure HILFE!!!

schönen gruss euch allen

Alex Haydl

und hier der quelltext:



start:

org 000Ch       // Sprung zur programmaddresse 000C um mit Interrupt
                   nicht in Konflikt zu kommen

mov TMOD,#01h  // Modus 1 des Timer 0 (16 - Bit Timer)
setb 0AFh      // Freigabe aller interrupts
mov TH0, 03Ch  // Startwerte des Timers im High - Nibble
mov TL0, 0B0h  // Startwerte des Timers im Low -Nibble
setb TR0       // Startbit des Timers

org 000Bh      // Einsprungadresse des Interrupts
ljmp T0_int    // Sprung ins Interrupt




T0_int
inc P1         // Zähler an P1, wird alle 100µS erhöht
reti           // Zurück ins Hauptprogg


end
Gast #90818
Lesenswert?

Hi Alex!

Schau dir doch mal das Tutorial auf dieser Seite (den Teil mit den
Interrupts) an.

Der Controller arbeitet deinen Code ab Adresse 0x000 ab und da stehen
dann auch die Sprungbefehle für die Interrupts.


.org 0x000                    ; kommt ganz an den Anfang des Speichers
         rjmp START           ; Interruptvektoren überspringen
                              ; und zum Hauptprogramm
.
.
.
.

START:
   Hier kann jetzt der Code hin...

Meiner Meinung nach kann dein Code nicht funktionieren. Du schreibst
dein Programm an die Adresse 0x000C aber hast keinen Sprung dorthin.
D.h. dein Controller läuft von 0x000 ins Nirvana und macht das was da
zufällig gerade steht.

Versuchs erstmal mit dem Tutorial bevor du den Timerinterrupt
programmierst

ciao
  hmann

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren