timer.s
changeset 89 1b3cea759eff
parent 88 c923295ee520
child 90 13c2deb919d1
equal deleted inserted replaced
88:c923295ee520 89:1b3cea759eff
     1 .nolist
       
     2 .include "m168def.inc"      ; Same family as 328P
       
     3 .list
       
     4 
       
     5 ;; Interrupt Vector
       
     6 .org 0x00
       
     7         rjmp        init
       
     8 
       
     9 .org OC1Aaddr
       
    10 		; Timer/Counter1 Compare Output A
       
    11 		rjmp		Timer_OC1A
       
    12 
       
    13 .org OC0Aaddr
       
    14         ; Timer/Counter0 Compare Output A
       
    15         rjmp        Timer_OC0A
       
    16 
       
    17 .org 0x40
       
    18 
       
    19 ;; Syntax
       
    20 .include "macros.inc"
       
    21 
       
    22 ;; Timer0 Compare A handler
       
    23 Tick:
       
    24 	; Toggle
       
    25 		sbi			PIND, PORTD7
       
    26 
       
    27 		ret
       
    28 
       
    29 ;; Timer
       
    30 .set TIMER0_CB_A = Tick
       
    31 .include "timer.inc"
       
    32 
       
    33 Main:
       
    34 init:
       
    35     ; Stack
       
    36         ldi         r16, high(RAMEND)
       
    37         ldi         r17, low(RAMEND)
       
    38         out         SPH, r16
       
    39         out         SPL, r17
       
    40 
       
    41     ; Enable interrupts
       
    42         sei
       
    43 
       
    44 	; Turn off LED7
       
    45 		sbi			DDRB, PORTB1
       
    46 		sbi			PORTB, PORTB1
       
    47 
       
    48 
       
    49 	; DEBUG
       
    50 		sbi			DDRD, PORTD7
       
    51 		cbi			PORTD, PORTD7
       
    52 
       
    53 		sbi			DDRD, PORTD6
       
    54 		sbi			DDRD, PORTD5
       
    55 		
       
    56 
       
    57     ; Timer
       
    58 		; setup
       
    59         rcall       Timer0_Init
       
    60 		
       
    61 		; run with 255k cycles
       
    62 		ldi			r16, 255
       
    63 		rcall		Timer0_Start	
       
    64 
       
    65 loop:
       
    66 	; Run timer
       
    67 		rjmp		loop
       
    68