Gast
#17591
ok ok ich bin ein newbie mit asm und avr :)
aber hab mal viel mit dem 368er gemacht ...
hab da nen source zusammen gestückelt...
;------------------------------------------------
; Timer 0
;------------------------------------------------
.include "4433def.inc"
.def temp = r16
.def counter = r17
.def leds = r18
.equ start = 256 - 244
.equ loops = 10;
rjmp reset ; Reset Handler
reti ; IRQ0 Handler
reti ; IRQ1 Handler
reti ; Timer1 Capture Handler
reti ; Timer1 compare Handler
reti ; Timer1 Overflow Handler
rjmp timer0 ; Timer0 Overflow Handler
reti ; SPI Transfer Complete Handler
reti ; UART RX Complete Handler : RXCIE
reti ; UDR Empty Handler
reti ; UART TX Complete Handler
reti ; ADC Conversion Complete Interrupt Handler
reti ; EEPROM Ready Handler
reti ; Analog Comparator Handler
reset:
ldi temp, RAMEND
out SP, temp ; set stack pointer
ldi temp, 0xFF
out DDRB, temp ; PORTB configured for output
ldi temp, 0xFF
out PORTB, leds ; LEDs ausschalten
ldi temp, 1<<TOIE0 ; 0000 0010
out TIMSK, temp ; timer 0 interrupt ein
ldi temp, start
out TCNT0, temp ; Startwert des Timers
ldi temp, 0b00000101
out TCCR0, temp ; ; Timer starten mit Vorteiler 1024
ldi counter, loops
ldi leds, 0xFF
sei ; interrupts generell aktivieren
main:
loop:
rjmp loop
;--------------------------------------------------
timer0:
dec counter
brne restart
ldi counter, loops
rol leds
out PORTB, leds
restart:
ldi temp, start
out TCNT0, temp ; Timer fängt wieder von vorn an
reti
und jetzt meine fragen ....
in der zeile:
ldi temp, 0xFF
out PORTB, leds ; LEDs ausschalten
werden da nicht alle leds eingeschalten ??
wegen dem komentar das stammt nicht von mir ...
und dann wenn timer0 aufegrufen wird
und "rol leds" ... sollte dann nicht lauter 1er
gerollt werden ?? aber es macht genau das was ich
eigentlich wollte es wird 1 led aus geschaltet und wandert dann im
"kreis" nur weiß ich nicht warum
kann mir das jemand erklären ??