29
|
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 |
|