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
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
uups auch wahr. Das hab ich mir garnichtmehr richtig angeschaut...
Er hat das schon mal ins *-gcc Forum gepostet, allerdings hätte er ja hier auch erwähnen können, worum es geht ;-) Gruß, Patrick...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.