7109c3c08a14e4aa1bb44bed12dcf7ed43656b23
[my-code/atmel.git] / led_plex / port.asm
1 ; port functions
2
3 PORT_INIT:
4
5         ; port b 0-3 -> output
6         ldi tmp1,0x0f
7         out DDRB,tmp1
8
9         ; disable hc595 outputs
10         sbi PORTB,0
11
12         ; rck -> low
13         cbi PORTB,1
14
15         ; clear hc595 registers
16         cbi PORTB,3
17
18         ; rck -> high (store shift register data)
19         sbi PORTB,1
20
21         ; enable outputs
22         cbi PORTB,0
23
24         ; port d 6 -> output
25         sbi DDRD,6
26
27         ; ser -> low
28         cbi PORTD,6
29
30         ; port d 2 -> output (debug clk!)
31         sbi DDRD,2
32
33         ; port d 3 -> output (debug vertical!)
34         sbi DDRD,3
35
36         ; release hc595 register clear
37         sbi PORTB,3
38
39         ret
40
41 SET_HC595:
42
43         ; storage clock -> low
44         cbi PORTB,1
45
46         ; source driver
47
48         ; clock -> low
49         cbi PORTB,2
50         ; set ser line
51         cbi PORTD,6
52         sbrc hc595_source,7
53         sbi PORTD,6
54         ; clock -> high
55         sbi PORTB,2
56
57         ; clock -> low
58         cbi PORTB,2
59         ; set ser line
60         cbi PORTD,6
61         sbrc hc595_source,6
62         sbi PORTD,6
63         ; clock -> high
64         sbi PORTB,2
65
66         ; clock -> low
67         cbi PORTB,2
68         ; set ser line
69         cbi PORTD,6
70         sbrc hc595_source,5
71         sbi PORTD,6
72         ; clock -> high
73         sbi PORTB,2
74
75         ; clock -> low
76         cbi PORTB,2
77         ; set ser line
78         cbi PORTD,6
79         sbrc hc595_source,4
80         sbi PORTD,6
81         ; clock -> high
82         sbi PORTB,2
83
84         ; clock -> low
85         cbi PORTB,2
86         ; set ser line
87         cbi PORTD,6
88         sbrc hc595_source,3
89         sbi PORTD,6
90         ; clock -> high
91         sbi PORTB,2
92
93         ; clock -> low
94         cbi PORTB,2
95         ; set ser line
96         cbi PORTD,6
97         sbrc hc595_source,2
98         sbi PORTD,6
99         ; clock -> high
100         sbi PORTB,2
101
102         ; clock -> low
103         cbi PORTB,2
104         ; set ser line
105         cbi PORTD,6
106         sbrc hc595_source,1
107         sbi PORTD,6
108         ; clock -> high
109         sbi PORTB,2
110
111         ; clock -> low
112         cbi PORTB,2
113         ; set ser line
114         cbi PORTD,6
115         sbrc hc595_source,0
116         sbi PORTD,6
117         ; clock -> high
118         sbi PORTB,2
119
120         ; sink driver
121         
122         ; clock -> low
123         cbi PORTB,2
124         ; set ser line
125         cbi PORTD,6
126         sbrc hc595_sink,7
127         sbi PORTD,6
128         ; clock -> high
129         sbi PORTB,2
130         
131         ; clock -> low
132         cbi PORTB,2
133         ; set ser line
134         cbi PORTD,6
135         sbrc hc595_sink,6
136         sbi PORTD,6
137         ; clock -> high
138         sbi PORTB,2
139         
140         ; clock -> low
141         cbi PORTB,2
142         ; set ser line
143         cbi PORTD,6
144         sbrc hc595_sink,5
145         sbi PORTD,6
146         ; clock -> high
147         sbi PORTB,2
148         
149         ; clock -> low
150         cbi PORTB,2
151         ; set ser line
152         cbi PORTD,6
153         sbrc hc595_sink,4
154         sbi PORTD,6
155         ; clock -> high
156         sbi PORTB,2
157         
158         ; clock -> low
159         cbi PORTB,2
160         ; set ser line
161         cbi PORTD,6
162         sbrc hc595_sink,3
163         sbi PORTD,6
164         ; clock -> high
165         sbi PORTB,2
166         
167         ; clock -> low
168         cbi PORTB,2
169         ; set ser line
170         cbi PORTD,6
171         sbrc hc595_sink,2
172         sbi PORTD,6
173         ; clock -> high
174         sbi PORTB,2
175         
176         ; clock -> low
177         cbi PORTB,2
178         ; set ser line
179         cbi PORTD,6
180         sbrc hc595_sink,1
181         sbi PORTD,6
182         ; clock -> high
183         sbi PORTB,2
184         
185         ; clock -> low
186         cbi PORTB,2
187         ; set ser line
188         cbi PORTD,6
189         sbrc hc595_sink,0
190         sbi PORTD,6
191         ; clock -> high
192         sbi PORTB,2
193         
194         ; store to storage register
195         sbi PORTB,1
196
197         ret