Möchte einen einfachen Timer programmieren - habe auch schon im TimerTutor und AtmelDatasheet nachgeschaut.
Nutze ich Timer1, dann gehts - folgender Code mit Timer 0 funzt nicht?!
Code:.include "m8def.inc" ;Definitionsdatei laden .cseg ;Beginn eines Code-Segmentes ; ; .def temp = r16 .def counter = r17 .def leds = r18 .equ start = 256-1 .equ loops = 0 ; .org 0x000 rjmp reset ;Reset Handler reti ;IRQ0 Handler reti ;IRQ1 Handler reti ;Timer1 Capture Handler reti ;Timer1 compare Handler reti ;Timer1 Overflow Handler rjmp timer0 ;reti ;Timer0 Overflow Handler reti ;SPI Transfer Complete Handler reti ;UART RX Complete Handler 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,LOW(RAMEND) ;temp auf letzte Position im RAM setzen out spl,temp ;LB vom SP mit LB vom Ramende ldi temp,HIGH(RAMEND) ;temp auf letzte Position im RAM setzen out sph,temp ;HB vom SP mit HB vom Ramende ldi temp,0xff out ddrd,temp ldi temp,0b00001111 out portd,temp ldi temp, 1 out TIMSK, temp ldi temp, start out TCNT0, temp ldi temp, 0b00000101 out TCCR0, temp ldi counter, loops ldi leds,0xff sei main: loop: rjmp loop ;------------------------------------- timer0: dec counter brne restart ldi counter, loops com leds out portd, leds restart: ldi temp, start out tcnt0,temp reti







Zitieren

Lesezeichen