author | Tero Marttila <terom@paivola.fi> |
Fri, 11 Apr 2014 14:42:19 +0300 | |
changeset 64 | f9221fa50c75 |
parent 32 | 7ceb76b5a104 |
permissions | -rw-r--r-- |
3 | 1 |
.nolist |
2 |
.include "m168def.inc" ; Same family as 328P |
|
3 |
.list |
|
4 |
||
32
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
5 |
|
3 | 6 |
;; Interrupt Vector |
7 |
.org 0x00 |
|
8 |
rjmp init |
|
9 |
||
18 | 10 |
.org OC1Aaddr |
30
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
11 |
; Timer/Counter1 Compare Output A |
18 | 12 |
rjmp Timer_OC1A |
13 |
||
30
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
14 |
.org OC0Aaddr |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
15 |
; Timer/Counter0 Compare Output A |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
16 |
rjmp Timer_OC0A |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
17 |
|
3 | 18 |
.org SPIaddr |
19 |
rjmp SPI_Interrupt |
|
20 |
||
8 | 21 |
.org ADCCaddr |
22 |
rjmp ADC_Interrupt |
|
23 |
||
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
19
diff
changeset
|
24 |
.org 0x40 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
19
diff
changeset
|
25 |
|
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
19
diff
changeset
|
26 |
;; Syntax |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
19
diff
changeset
|
27 |
.include "macros.inc" |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
19
diff
changeset
|
28 |
|
3 | 29 |
;; SPI |
17
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
30 |
.include "spi.inc" |
3 | 31 |
|
32 |
;; LCD |
|
17
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
33 |
.include "led7seg.inc" |
3 | 34 |
|
28
51344df466ca
rename ShowADC -> ShowValue, and use DIP
Tero Marttila <terom@fixme.fi>
parents:
26
diff
changeset
|
35 |
;; DIPs |
51344df466ca
rename ShowADC -> ShowValue, and use DIP
Tero Marttila <terom@fixme.fi>
parents:
26
diff
changeset
|
36 |
.include "dip.inc" |
51344df466ca
rename ShowADC -> ShowValue, and use DIP
Tero Marttila <terom@fixme.fi>
parents:
26
diff
changeset
|
37 |
|
8 | 38 |
;; ADC |
32
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
39 |
|
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
40 |
; ADC Interrupt handler |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
41 |
On_ADC: |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
42 |
; DEBUG |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
43 |
sbi PIND, PORTD7 |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
44 |
|
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
45 |
; Check timer, from r16 |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
46 |
rcall ADC_Read8 |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
47 |
|
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
48 |
ldi r17, 64 |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
49 |
mul r16, r17 |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
50 |
mov XL, r0 |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
51 |
mov XH, r1 |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
52 |
|
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
53 |
rjmp Timer_Update |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
54 |
|
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
55 |
.set ADC_Handler = On_ADC |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
56 |
|
17
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
57 |
.include "adc.inc" |
8 | 58 |
|
18 | 59 |
;; Timer |
30
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
60 |
.set TIMER0_CB_A = SPI_Update |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
61 |
|
18 | 62 |
.include "timer.inc" |
63 |
||
17
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
64 |
;; Utils |
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
65 |
.include "delay.inc" |
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
66 |
.include "div.inc" |
7 | 67 |
|
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
68 |
Sleep_ADC: |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
69 |
; delay |
32
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
70 |
rcall ADC_Read8 |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
71 |
; rcall DIP_Read8 |
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
72 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
73 |
; Sleep for 64 * var timer cycles |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
74 |
ldi r17, 64 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
75 |
mul r16, r17 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
76 |
mov XL, r0 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
77 |
mov XH, r1 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
78 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
79 |
rjmp Timer_Sleep |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
80 |
|
28
51344df466ca
rename ShowADC -> ShowValue, and use DIP
Tero Marttila <terom@fixme.fi>
parents:
26
diff
changeset
|
81 |
;; Show value |
51344df466ca
rename ShowADC -> ShowValue, and use DIP
Tero Marttila <terom@fixme.fi>
parents:
26
diff
changeset
|
82 |
Main_ShowValue: |
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
83 |
; load value to r16 |
30
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
84 |
; rcall DIP_Read8 |
32
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
85 |
rcall ADC_Read8 |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
86 |
; rcall Timer0_Read8 |
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
87 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
88 |
; display from r16 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
89 |
rcall LED7_ShowHex |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
90 |
|
30
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
91 |
; wait |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
92 |
rcall Sleep_ADC |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
93 |
|
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
94 |
; ldi XL, 0 |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
95 |
; ldi XH, 16 |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
96 |
; rcall Timer_Sleep |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
97 |
|
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
98 |
; rcall ADC_Read8 |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
99 |
; mov r20, r16 |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
100 |
; rcall VarDelay |
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
101 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
102 |
; continue |
28
51344df466ca
rename ShowADC -> ShowValue, and use DIP
Tero Marttila <terom@fixme.fi>
parents:
26
diff
changeset
|
103 |
rjmp Main_ShowValue |
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
104 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
105 |
;; Count down from F |
6 | 106 |
; Returns once we've hit zero |
107 |
Main_Countdown: |
|
16 | 108 |
; init from F |
17
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
109 |
ldi r24, LED7_F |
6 | 110 |
|
15
c8f3a514bbef
read SPI to r10, and use it (hack)
Tero Marttila <terom@fixme.fi>
parents:
8
diff
changeset
|
111 |
_count_loop: |
6 | 112 |
; display |
113 |
mov r16, r24 |
|
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
114 |
mov r16, r24 |
17
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
115 |
rcall LED7_Show |
6 | 116 |
|
117 |
; exit if zero |
|
118 |
tst r24 |
|
15
c8f3a514bbef
read SPI to r10, and use it (hack)
Tero Marttila <terom@fixme.fi>
parents:
8
diff
changeset
|
119 |
breq _count_end |
6 | 120 |
|
121 |
; count down |
|
122 |
dec r24 |
|
123 |
||
124 |
; wait... |
|
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
125 |
rcall Sleep_ADC |
6 | 126 |
|
127 |
; next |
|
15
c8f3a514bbef
read SPI to r10, and use it (hack)
Tero Marttila <terom@fixme.fi>
parents:
8
diff
changeset
|
128 |
rjmp _count_loop |
c8f3a514bbef
read SPI to r10, and use it (hack)
Tero Marttila <terom@fixme.fi>
parents:
8
diff
changeset
|
129 |
|
c8f3a514bbef
read SPI to r10, and use it (hack)
Tero Marttila <terom@fixme.fi>
parents:
8
diff
changeset
|
130 |
_count_end: |
c8f3a514bbef
read SPI to r10, and use it (hack)
Tero Marttila <terom@fixme.fi>
parents:
8
diff
changeset
|
131 |
; done |
c8f3a514bbef
read SPI to r10, and use it (hack)
Tero Marttila <terom@fixme.fi>
parents:
8
diff
changeset
|
132 |
ret |
6 | 133 |
|
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
134 |
;; Count up from 00 -> 255 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
135 |
; Returns once done |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
136 |
Main_CountUp: |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
137 |
; init from 0 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
138 |
ldi r24, 0 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
139 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
140 |
_countup_loop: |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
141 |
; display |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
142 |
mov r16, r24 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
143 |
rcall LED7_ShowDec |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
144 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
145 |
; wait... |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
146 |
rcall Sleep_ADC |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
147 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
148 |
; exit if zero |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
149 |
cpi r24, 255 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
150 |
breq _countup_end |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
151 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
152 |
; count up |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
153 |
inc r24 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
154 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
155 |
; continue |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
156 |
rjmp _countup_loop |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
157 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
158 |
_countup_end: |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
159 |
; done |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
160 |
ret |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
161 |
|
6 | 162 |
;; Blink between dot and empty |
163 |
Main_Blink: |
|
164 |
_blink_loop: |
|
165 |
; dot |
|
17
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
166 |
ldi r16, LED7_DOT |
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
167 |
ldi r17, LED7_EMPTY |
17
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
168 |
rcall LED7_Show |
6 | 169 |
|
170 |
; wait... |
|
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
171 |
rcall Sleep_ADC |
6 | 172 |
|
173 |
; empty |
|
17
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
174 |
ldi r16, LED7_EMPTY |
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
175 |
ldi r17, LED7_DOT |
17
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
176 |
rcall LED7_Show |
6 | 177 |
|
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
178 |
; wait... |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
179 |
rcall Sleep_ADC |
6 | 180 |
|
181 |
; loop |
|
182 |
rjmp _blink_loop |
|
183 |
||
184 |
;; Chase segments |
|
185 |
Main_Spin: |
|
186 |
_spin_init: |
|
187 |
; init from top |
|
188 |
ldi r24, 0b00000001 |
|
189 |
||
190 |
_spin_next: |
|
191 |
; display |
|
192 |
mov r16, r24 |
|
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
19
diff
changeset
|
193 |
mov r17, r24 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
19
diff
changeset
|
194 |
com r17 |
32
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
195 |
andi r17, 0b00111111 |
17
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
196 |
rcall LED7_ShowRaw |
6 | 197 |
|
18 | 198 |
; delay |
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
199 |
rcall Sleep_ADC |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
200 |
|
6 | 201 |
; next segment |
202 |
lsl r24 |
|
203 |
||
204 |
; go back to A if we hit G |
|
205 |
sbrc r24, 6 |
|
206 |
rjmp _spin_init |
|
207 |
||
208 |
rjmp _spin_next |
|
4 | 209 |
|
210 |
Main: |
|
3 | 211 |
init: |
212 |
; Stack |
|
213 |
ldi r16, high(RAMEND) |
|
214 |
ldi r17, low(RAMEND) |
|
215 |
out SPH, r16 |
|
216 |
out SPL, r17 |
|
217 |
||
218 |
; Enable interrupts |
|
219 |
sei |
|
220 |
||
8 | 221 |
; ADC (slowest to start up) |
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
19
diff
changeset
|
222 |
rcall ADC_Init |
18 | 223 |
|
224 |
; Timer |
|
225 |
rcall Timer_Init |
|
8 | 226 |
|
3 | 227 |
; SPI |
228 |
rcall SPI_Init |
|
229 |
||
8 | 230 |
; LCD (requires interrupts, blocks) |
17
a7c668003a19
split led7seg.s into .inc modules, and update Makefile to use .s -> .hex, and above .inc's for led7seg
Tero Marttila <terom@fixme.fi>
parents:
16
diff
changeset
|
231 |
rcall LED7_Init |
6 | 232 |
|
30
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
233 |
; DEBUG |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
234 |
sbi DDRD, PORTD7 |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
235 |
cbi PORTD, PORTD7 |
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
236 |
|
6 | 237 |
; Run |
32
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
238 |
rcall Main_Countup |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
239 |
; rcall Main_Countdown |
30
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
28
diff
changeset
|
240 |
; rcall Main_ShowValue |
32
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
241 |
; rcall Main_Spin |
7ceb76b5a104
semi-broken Timer_Update mechanism
Tero Marttila <terom@fixme.fi>
parents:
30
diff
changeset
|
242 |
rcall Main_Blink |
4 | 243 |
|
244 |
end: |
|
245 |
rjmp end |
|
246 |