author | Tero Marttila <terom@fixme.fi> |
Thu, 17 Jun 2010 20:00:27 +0300 | |
changeset 33 | 0d0309787be3 |
parent 30 | 5226e512755c |
permissions | -rw-r--r-- |
18 | 1 |
;; |
2 |
;; Driving 7-segment LED displays over SPI |
|
3 |
;; |
|
4 |
||
5 |
; Output Enable control |
|
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:
diff
changeset
|
6 |
.equ LED7_DDR = DDRB |
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:
diff
changeset
|
7 |
.equ LED7_PORT = PORTB |
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:
diff
changeset
|
8 |
.equ LED7_OE = PORTB1 ; Output Enable (Low) |
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:
diff
changeset
|
9 |
|
18 | 10 |
; Font for 7-segment display |
11 |
; Includes decimal digits 0-9, hexadecimal digits A-F, and some special chars |
|
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:
diff
changeset
|
12 |
LED7_Font: |
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:
diff
changeset
|
13 |
.db 0b00111111, 0b00000110 ; 0, 1 |
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:
diff
changeset
|
14 |
.db 0b01011011, 0b01001111 ; 2, 3 |
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:
diff
changeset
|
15 |
.db 0b01100110, 0b01101101 ; 4, 5 |
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:
diff
changeset
|
16 |
.db 0b01111101, 0b00000111 ; 6, 7 |
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:
diff
changeset
|
17 |
.db 0b01111111, 0b01100111 ; 8, 9 |
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:
diff
changeset
|
18 |
.db 0b01110111, 0b01111100 ; A, b |
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:
diff
changeset
|
19 |
.db 0b00111001, 0b01011110 ; C, d |
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:
diff
changeset
|
20 |
.db 0b01111001, 0b01110001 ; E, f |
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:
diff
changeset
|
21 |
.db 0b10000000, 0b00000000 ; ., |
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:
diff
changeset
|
22 |
|
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
23 |
.equ LED7_0 = 0 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
24 |
.equ LED7_1 = 1 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
25 |
.equ LED7_2 = 2 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
26 |
.equ LED7_3 = 3 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
27 |
.equ LED7_4 = 4 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
28 |
.equ LED7_5 = 5 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
29 |
.equ LED7_6 = 6 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
30 |
.equ LED7_7 = 7 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
31 |
.equ LED7_8 = 8 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
32 |
.equ LED7_9 = 9 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
33 |
.equ LED7_A = 10 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
34 |
.equ LED7_B = 11 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
35 |
.equ LED7_C = 12 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
36 |
.equ LED7_D = 13 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
37 |
.equ LED7_E = 14 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
38 |
.equ LED7_F = 15 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
39 |
.equ LED7_DOT = 16 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
40 |
.equ LED7_EMPTY = 17 |
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:
diff
changeset
|
41 |
|
26
db2ec641c955
refactor code to move buffers to SPI
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
42 |
; LEDs are on beginning of SPI universe |
db2ec641c955
refactor code to move buffers to SPI
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
43 |
.set led7_buffer = spi_outbuf + 0 |
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:
diff
changeset
|
44 |
|
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:
diff
changeset
|
45 |
;; Initialize LCD to empty, and enable |
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:
diff
changeset
|
46 |
LED7_Init: |
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:
diff
changeset
|
47 |
; Setup ENable port |
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:
diff
changeset
|
48 |
sbi LED7_PORT, LED7_OE ; Disabled (Low) |
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:
diff
changeset
|
49 |
sbi LED7_DDR, LED7_OE ; Out |
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
50 |
|
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
51 |
; Initialize buffer |
30
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
26
diff
changeset
|
52 |
ldi r16, 0b01000000 |
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
53 |
sts led7_buffer + 0, r16 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
54 |
sts led7_buffer + 1, r16 |
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:
diff
changeset
|
55 |
|
26
db2ec641c955
refactor code to move buffers to SPI
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
56 |
; Update display |
db2ec641c955
refactor code to move buffers to SPI
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
57 |
rcall SPI_SendRecv |
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:
diff
changeset
|
58 |
|
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
59 |
; Enable output once the initial display has been shifted out |
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:
diff
changeset
|
60 |
cbi LED7_PORT, LED7_OE |
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:
diff
changeset
|
61 |
|
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:
diff
changeset
|
62 |
; Done |
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:
diff
changeset
|
63 |
ret |
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:
diff
changeset
|
64 |
|
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
65 |
LED7_LoadChar: |
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:
diff
changeset
|
66 |
clr r0, 0 |
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:
diff
changeset
|
67 |
|
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:
diff
changeset
|
68 |
; Prep address |
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:
diff
changeset
|
69 |
; base addr for font table |
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
70 |
ldi ZH, high(2 * LED7_Font) |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
71 |
ldi ZL, low(2 * LED7_Font) |
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:
diff
changeset
|
72 |
|
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:
diff
changeset
|
73 |
; offset |
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
74 |
add ZL, r8 |
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:
diff
changeset
|
75 |
adc ZH, r0 |
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:
diff
changeset
|
76 |
|
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:
diff
changeset
|
77 |
; Load char |
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
78 |
lpm r8, Z |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
79 |
|
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
80 |
; Done |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
81 |
ret |
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
82 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
83 |
;; Display an 8-bit hexadecimal value on the display |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
84 |
;; Input: r16 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
85 |
LED7_ShowHex: |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
86 |
; base16 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
87 |
ldi r17, 16 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
88 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
89 |
; 1's |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
90 |
call div8u |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
91 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
92 |
; r16 = result, r15 = remainder |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
93 |
mov r17, r15 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
94 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
95 |
; Continue |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
96 |
rjmp LED7_Show |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
97 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
98 |
;; Display an 8-bit decimal value on the display |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
99 |
;; Input: r16 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
100 |
LED7_ShowDec: |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
101 |
; base10 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
102 |
ldi r17, 10 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
103 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
104 |
; 1's |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
105 |
call div8u |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
106 |
mov r8, r15 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
107 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
108 |
; 10's |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
109 |
call div8u |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
110 |
mov r9, r16 ; 100's |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
111 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
112 |
; 1's from r8 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
113 |
rcall LED7_LoadChar |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
114 |
mov r17, r8 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
115 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
116 |
; 10's from r15 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
117 |
mov r8, r15 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
118 |
rcall LED7_LoadChar |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
119 |
mov r16, r8 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
120 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
121 |
; Set dots for 100's |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
122 |
sbrc r9, 0 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
123 |
ori r17, 0b10000000 ; +100 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
124 |
sbrc r9, 1 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
125 |
ori r16, 0b10000000 ; +200 |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
126 |
|
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
127 |
; Continue |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
128 |
rjmp LED7_ShowRaw |
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
129 |
|
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
130 |
;; Display a single digit on the display |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
131 |
;; Input: r16, r17 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
132 |
LED7_Show: |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
133 |
mov r8, r16 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
134 |
rcall LED7_LoadChar |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
135 |
mov r16, r8 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
136 |
|
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
137 |
mov r8, r17 |
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
138 |
rcall LED7_LoadChar |
25
33496b1a964f
show (hexa)decimal values on display from ADC or DIP
Tero Marttila <terom@fixme.fi>
parents:
23
diff
changeset
|
139 |
mov r17, r8 |
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
140 |
|
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:
diff
changeset
|
141 |
;; Continue |
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:
diff
changeset
|
142 |
|
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:
diff
changeset
|
143 |
;; Display a raw segment mask |
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
144 |
;; Input: r16, r17 |
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:
diff
changeset
|
145 |
LED7_ShowRaw: |
26
db2ec641c955
refactor code to move buffers to SPI
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
146 |
; Store buffer |
23
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
147 |
sts led7_buffer + 0, r16 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
148 |
sts led7_buffer + 1, r17 |
a6afc0eb347f
synchronous SPI, two-digit led7
Tero Marttila <terom@fixme.fi>
parents:
18
diff
changeset
|
149 |
|
26
db2ec641c955
refactor code to move buffers to SPI
Tero Marttila <terom@fixme.fi>
parents:
25
diff
changeset
|
150 |
; Update display |
30
5226e512755c
Use Timer0 for async SPI updates (semi-useful)
Tero Marttila <terom@fixme.fi>
parents:
26
diff
changeset
|
151 |
rjmp SPI_Update |
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:
diff
changeset
|
152 |