b27f65ffef75ef487e4f37f33ec5c951209a28b3
[my-code/atmel.git] / led_plex / main.asm
1 ; main file of led_plex project
2 ;
3 ; schematics: http://hackdaworld.org/download/led_plex/led_plex.png
4 ;
5 ; author: hackbard@hackdaworld.org
6 ;
7
8 ; device specific definition file
9 .include "../include/tn2313def.inc"
10
11 ; defines
12 .def    tmp1            = r16
13 .def    tmp2            = r17
14 .def    uart_rxtx       = r18
15 .def    hc595_sink      = r19
16 .def    hc595_source    = r20
17
18 ;
19 ; interrupts
20 ;
21
22 ; RESET
23 rjmp INIT
24
25 ; INT0
26 reti
27
28 ; INT1
29 reti
30
31 ; T1 CAPT1
32 reti
33
34 ; T1 COMP A
35 reti
36
37 ; T1 OVF1
38 rjmp T1_OVF
39
40 ; T0 OVF0
41 rjmp T0_OVF
42
43 ; UART RX
44 rjmp UART_RECEIVE
45
46 ; UART UDRE
47 reti
48
49 ; UART TX
50 reti
51
52 ; ANA COMP
53 reti
54
55 ; PCINT
56 reti
57
58 ; T1 COMP B
59 reti
60
61 ; T0 COMP A
62 reti
63
64 ; T0 COMP B
65 reti
66
67 ; USI START
68 reti
69
70 ; USI OVF
71 reti
72
73 ; EE READY
74 reti
75
76 ; WDT OVF
77 reti
78
79 ;
80 ; init and main code
81 ;
82
83 RESET:
84 INIT:
85
86         ; gio port init
87         rcall PORT_INIT
88
89         ; timer0 init
90         rcall TIMER0_INIT
91
92         ; timer0 interrupt enable
93         rcall TIMER0_INT_INIT
94
95         ; uart init
96         rcall UART_INIT
97
98         ; uart interrupt enable
99         rcall UART_INT_RX_INIT
100
101         ; set stackpointer
102         ldi tmp1,low(RAMEND)
103         out SPL,tmp1
104
105         ; global interrupt enable
106         sei 
107
108         ; signal ready output
109         ldi uart_rxtx,0x68
110         rcall UART_TX
111
112         ; led init
113         ldi hc595_sink,0xff
114         ldi hc595_source,0x01
115         rcall SET_HC595
116
117 MAIN:
118
119         ; loop forever
120         rjmp MAIN
121
122
123 ; include subroutines
124 .include "port.asm"
125 .include "timer.asm"
126 .include "uart.asm"
127
128
129 ;
130 ; interrupt routines
131 ;
132
133 T1_OVF:
134         reti
135
136 T0_OVF:
137
138         ; debug output
139         cbi PORTD,3
140         
141         ; shift source
142         rol hc595_source
143
144         ; update sink
145
146         ; set hc595
147         rcall SET_HC595
148
149         ; debug output
150         sbi PORTD,3
151         
152         reti
153
154 UART_RECEIVE:
155         reti
156