eefa04fcccbf0c04d653c8b7feb0be3b0a040666
[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         ; release hc595 register clear
31         sbi PORTB,3
32
33         ret
34
35 SET_HC595:
36
37         ; storage clock -> low
38         cbi PORTB,1
39
40         ; source driver
41
42         ; clock -> low
43         cbi PORTB,2
44         ; set ser line
45         cbi PORTD,6
46         sbrc hc595_source,7
47         sbi PORTD,6
48         ; clock -> high
49         sbi PORTB,2
50
51         ; clock -> low
52         cbi PORTB,2
53         ; set ser line
54         cbi PORTD,6
55         sbrc hc595_source,6
56         sbi PORTD,6
57         ; clock -> high
58         sbi PORTB,2
59
60         ; clock -> low
61         cbi PORTB,2
62         ; set ser line
63         cbi PORTD,6
64         sbrc hc595_source,5
65         sbi PORTD,6
66         ; clock -> high
67         sbi PORTB,2
68
69         ; clock -> low
70         cbi PORTB,2
71         ; set ser line
72         cbi PORTD,6
73         sbrc hc595_source,4
74         sbi PORTD,6
75         ; clock -> high
76         sbi PORTB,2
77
78         ; clock -> low
79         cbi PORTB,2
80         ; set ser line
81         cbi PORTD,6
82         sbrc hc595_source,3
83         sbi PORTD,6
84         ; clock -> high
85         sbi PORTB,2
86
87         ; clock -> low
88         cbi PORTB,2
89         ; set ser line
90         cbi PORTD,6
91         sbrc hc595_source,2
92         sbi PORTD,6
93         ; clock -> high
94         sbi PORTB,2
95
96         ; clock -> low
97         cbi PORTB,2
98         ; set ser line
99         cbi PORTD,6
100         sbrc hc595_source,1
101         sbi PORTD,6
102         ; clock -> high
103         sbi PORTB,2
104
105         ; clock -> low
106         cbi PORTB,2
107         ; set ser line
108         cbi PORTD,6
109         sbrc hc595_source,0
110         sbi PORTD,6
111         ; clock -> high
112         sbi PORTB,2
113
114         ; sink driver
115         
116         ; clock -> low
117         cbi PORTB,2
118         ; set ser line
119         cbi PORTD,6
120         sbrc hc595_sink,7
121         sbi PORTD,6
122         ; clock -> high
123         sbi PORTB,2
124         
125         ; clock -> low
126         cbi PORTB,2
127         ; set ser line
128         cbi PORTD,6
129         sbrc hc595_sink,6
130         sbi PORTD,6
131         ; clock -> high
132         sbi PORTB,2
133         
134         ; clock -> low
135         cbi PORTB,2
136         ; set ser line
137         cbi PORTD,6
138         sbrc hc595_sink,5
139         sbi PORTD,6
140         ; clock -> high
141         sbi PORTB,2
142         
143         ; clock -> low
144         cbi PORTB,2
145         ; set ser line
146         cbi PORTD,6
147         sbrc hc595_sink,4
148         sbi PORTD,6
149         ; clock -> high
150         sbi PORTB,2
151         
152         ; clock -> low
153         cbi PORTB,2
154         ; set ser line
155         cbi PORTD,6
156         sbrc hc595_sink,3
157         sbi PORTD,6
158         ; clock -> high
159         sbi PORTB,2
160         
161         ; clock -> low
162         cbi PORTB,2
163         ; set ser line
164         cbi PORTD,6
165         sbrc hc595_sink,2
166         sbi PORTD,6
167         ; clock -> high
168         sbi PORTB,2
169         
170         ; clock -> low
171         cbi PORTB,2
172         ; set ser line
173         cbi PORTD,6
174         sbrc hc595_sink,1
175         sbi PORTD,6
176         ; clock -> high
177         sbi PORTB,2
178         
179         ; clock -> low
180         cbi PORTB,2
181         ; set ser line
182         cbi PORTD,6
183         sbrc hc595_sink,0
184         sbi PORTD,6
185         ; clock -> high
186         sbi PORTB,2
187         
188         ; store to storage register
189         sbi PORTB,1
190
191         ret