55e90e2ccf45c3355647a3aadc4fd63a307fc37c
[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         ; g, rck, sck -> low / scl -> high
10         ldi tmp1,0x07
11         out PORTB,tmp1
12         sbi PORTB,3
13
14         ; port d 6 -> output
15         sbi DDRD,6
16
17         ; ser -> low
18         cbi PORTD,6
19
20         ret
21
22 SET_HC595:
23
24         ; storage clock -> low
25         cbi PORTD,1
26
27         ; source driver
28
29         ; clock -> low
30         cbi PORTB,2
31         ; set ser line
32         cbi PORTD,6
33         sbrc hc595_source,7
34         sbi PORTD,6
35         ; clock -> high
36         sbi PORTB,2
37
38         ; clock -> low
39         cbi PORTB,2
40         ; set ser line
41         cbi PORTD,6
42         sbrc hc595_source,6
43         sbi PORTD,6
44         ; clock -> high
45         sbi PORTB,2
46
47         ; clock -> low
48         cbi PORTB,2
49         ; set ser line
50         cbi PORTD,6
51         sbrc hc595_source,5
52         sbi PORTD,6
53         ; clock -> high
54         sbi PORTB,2
55
56         ; clock -> low
57         cbi PORTB,2
58         ; set ser line
59         cbi PORTD,6
60         sbrc hc595_source,4
61         sbi PORTD,6
62         ; clock -> high
63         sbi PORTB,2
64
65         ; clock -> low
66         cbi PORTB,2
67         ; set ser line
68         cbi PORTD,6
69         sbrc hc595_source,3
70         sbi PORTD,6
71         ; clock -> high
72         sbi PORTB,2
73
74         ; clock -> low
75         cbi PORTB,2
76         ; set ser line
77         cbi PORTD,6
78         sbrc hc595_source,2
79         sbi PORTD,6
80         ; clock -> high
81         sbi PORTB,2
82
83         ; clock -> low
84         cbi PORTB,2
85         ; set ser line
86         cbi PORTD,6
87         sbrc hc595_source,1
88         sbi PORTD,6
89         ; clock -> high
90         sbi PORTB,2
91
92         ; clock -> low
93         cbi PORTB,2
94         ; set ser line
95         cbi PORTD,6
96         sbrc hc595_source,0
97         sbi PORTD,6
98         ; clock -> high
99         sbi PORTB,2
100
101         ; sink driver
102         
103         ; clock -> low
104         cbi PORTB,2
105         ; set ser line
106         cbi PORTD,6
107         sbrc hc595_sink,7
108         sbi PORTD,6
109         ; clock -> high
110         sbi PORTB,2
111         
112         ; clock -> low
113         cbi PORTB,2
114         ; set ser line
115         cbi PORTD,6
116         sbrc hc595_sink,6
117         sbi PORTD,6
118         ; clock -> high
119         sbi PORTB,2
120         
121         ; clock -> low
122         cbi PORTB,2
123         ; set ser line
124         cbi PORTD,6
125         sbrc hc595_sink,5
126         sbi PORTD,6
127         ; clock -> high
128         sbi PORTB,2
129         
130         ; clock -> low
131         cbi PORTB,2
132         ; set ser line
133         cbi PORTD,6
134         sbrc hc595_sink,4
135         sbi PORTD,6
136         ; clock -> high
137         sbi PORTB,2
138         
139         ; clock -> low
140         cbi PORTB,2
141         ; set ser line
142         cbi PORTD,6
143         sbrc hc595_sink,3
144         sbi PORTD,6
145         ; clock -> high
146         sbi PORTB,2
147         
148         ; clock -> low
149         cbi PORTB,2
150         ; set ser line
151         cbi PORTD,6
152         sbrc hc595_sink,2
153         sbi PORTD,6
154         ; clock -> high
155         sbi PORTB,2
156         
157         ; clock -> low
158         cbi PORTB,2
159         ; set ser line
160         cbi PORTD,6
161         sbrc hc595_sink,1
162         sbi PORTD,6
163         ; clock -> high
164         sbi PORTB,2
165         
166         ; clock -> low
167         cbi PORTB,2
168         ; set ser line
169         cbi PORTD,6
170         sbrc hc595_sink,0
171         sbi PORTD,6
172         ; clock -> high
173         sbi PORTB,2
174         
175         ; store to storage register
176         sbi PORTB,1
177
178         ret