Ging schneller, als ich gedacht hab![]()
Zu deinen Fragen:
1. Hmm...weil die Datei nun um 0,06kb kleiner geworden ist? *g* Ich weiß es nicht, hab auch deine Posts weiter oben gelesen, aber nichts brauchbares gefunden![]()
Vielleicht dient das auch der Geschwindigkeit des Programms. Denn wenn er schneller auf ein "reti" trifft, wird das Interrupt auch schneller wieder freigegeben. Ist aber nur reine Vermutung.Kann mir das leider nicht wirklich vorstellen. Hoffe, dassde nun nicht enttäuscht von mir bist, weil ich eine so leichte Frage nicht beantworten kann
![]()
2.Wenigstens hab ich die programmiertechnische Aufgabe gelöst, ich hoffe doch richtigCode:.include "m8def.inc" .equ time = 256-90 ;Damit wird der Timer vorgeladen .equ LED = PB2 ;LED an B.2 .def tmp = r16 ;Mein Universallregister .def zaehler = r18 ;Mein Zählregister .org 0x000 rjmp reset ;Interruptvektor "reset:" .org OVF0addr rjmp pruefZaehler ;Interruptvektor für Timer0 Überlauf, hier springt ;das Programm hin, wenn der Timer überläuft reset: ;Stack einrichten ldi tmp, HIGH(RAMEND) ;HIGH-Byte der obersten RAM-Adresse out SPH, tmp ldi tmp, LOW(RAMEND) ;LOW-Byte der obersten RAM-Adresse out SPL, tmp sbi DDRB, LED ;B.2 als Ausgang cbi PORTB, LED ;B.2 auf LOW stellen -> LED aus am Anfang ;Timer Register werden belegt, hier Timer 0 ldi tmp, (1<<CS02) | (1<<CS00) ;prescaler ist 1024 out TCCR0, tmp ;Register TCCR0 ist für den Prescaller zuständig ldi tmp, (1<<TOIE0) ;Hier werden Interrupts nach Timer0 Überlauf eingeschaltet out TIMSK, tmp ;Register TIMSK ist dafür zuständig ldi tmp, time ;Hier wird der Timmer vorgelaen und zwar mit 255-90 out TCNT0, tmp ;Er läuft 90 mal durch, bevor ein Interrupt auftritt sei ;Interrupts zulassen loop: cpi zaehler, 0b00101000 ;Wenn Zählregister = 14 ist breq zeitum ;dann spring zu "zeitum:" rjmp loop ;Immer wieder selbst aufrufen -> Endlosschleife zeitum: clr zaehler ;Zählregister auf 0 setzen sbic PINB, LED ;überspringe, wenn B.2 = 0 ist (LED aus?) rjmp zeitum1 ;wenn B.2 = 1, dann spring zu "zeitum1:" zeitum0: sbi PORTB, LED ;B.2 = 1 setzen -> LED an rjmp loop ;wieder zur loop springen zeitum1: cbi PORTB, LED ;B.2 auf 0 setzen -> LED aus rjmp loop ;wieder zur loop springen pruefZaehler: inc zaehler ;Zählregister um 1 erhöhen ldi tmp, time ;Hier wird der Timer vorgelaen und zwar mit 255-90 out TCNT0, tmp ;Er läuft 90 mal durch, bevor ein Interrupt auftritt reti ;wieder zurück, wo du hergekommen bist![]()
Gruß
Thomas
Achja, stimmt der Kommentar bei dieser Zeile?![]()
out TCNT0, tmp ;Er läuft 90 mal durch, bevor ein Interrupt auftritt







Zitieren

Lesezeichen