Commit 54877f0f764ec8f8e06f7cef7795e4895bc81be4
1 parent
2c6f9cd6
Correction du code pour que ça compile et affiche des trucs
Showing
2 changed files
with
34 additions
and
251 deletions
Show diff stats
principal.txt
@@ -3,12 +3,9 @@ | @@ -3,12 +3,9 @@ | ||
3 | .equ PINA = 0x00 | 3 | .equ PINA = 0x00 |
4 | .equ DDRA = 0x01 | 4 | .equ DDRA = 0x01 |
5 | .equ PORTA = 0x02 | 5 | .equ PORTA = 0x02 |
6 | - | ||
7 | -.equ PINB = 0x03 | ||
8 | -.equ DDRB = 0x04 | ||
9 | -.equ PORTB = 0x05 | ||
10 | - | ||
11 | -.equ SREG = 0x3F | 6 | +.equ PINC = 0x06 |
7 | +.equ DDRC = 0x07 | ||
8 | +.equ PORTC = 0x08 | ||
12 | 9 | ||
13 | .equ WDTCSR = 0x60 | 10 | .equ WDTCSR = 0x60 |
14 | 11 | ||
@@ -30,8 +27,8 @@ | @@ -30,8 +27,8 @@ | ||
30 | 27 | ||
31 | ; Nommage des registres utilisés | 28 | ; Nommage des registres utilisés |
32 | 29 | ||
33 | -.def etat = r0 | ||
34 | -.def reference = r1 ; Température de référence actuelle | 30 | +.def etat = r12 |
31 | +.def reference = r13 ; Température de référence actuelle | ||
35 | .def d3 = r2 ; Digit 3 (tout à gauche) | 32 | .def d3 = r2 ; Digit 3 (tout à gauche) |
36 | .def d2 = r3 ; Digit 2 | 33 | .def d2 = r3 ; Digit 2 |
37 | .def d1 = r4 ; Digit 1 | 34 | .def d1 = r4 ; Digit 1 |
@@ -75,14 +72,16 @@ | @@ -75,14 +72,16 @@ | ||
75 | ; Tableaux de la mémoire du programme | 72 | ; Tableaux de la mémoire du programme |
76 | 73 | ||
77 | afficheur: | 74 | afficheur: |
78 | - .DB 0x3F, 0x30, 0x6D, 0x79, 0x72, 0x5B, 0x5F, 0x31, 0x7F, 0x7B, 0x77, 0x40, 0x4c, 0xfc, 0xcf, 0xc7, 0x40, 0xf6, 0x04, 0x3c, 0x40, 0x0E, 0x37, 0x54, 0x5c, 0x40, 0x40, 0x44, 0x5b, 0x4e, 0x1c, 0x1c, 0x40, 0x40, 0x40, 0x40, 0x63 | ||
79 | - ; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, ° | 75 | + .DB 0x3F, 0x30, 0x6D, 0x79, 0x72, 0x5B, 0x5F, 0x31, 0x7F, 0x7B |
76 | + ; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 | ||
80 | 77 | ||
81 | ; Programme | 78 | ; Programme |
82 | 79 | ||
83 | debut: | 80 | debut: |
84 | ; Configuration des composants | 81 | ; Configuration des composants |
85 | - SREG <- 0b10000000 | 82 | + ; Ports parallèles |
83 | + DDRA@IO <- 0xFF | ||
84 | + DDRC@IO <- 0xFF | ||
86 | 85 | ||
87 | ; Watchdog | 86 | ; Watchdog |
88 | WDTCSR <- 0b00010000 | 87 | WDTCSR <- 0b00010000 |
@@ -126,25 +125,25 @@ afficherHorloge: | @@ -126,25 +125,25 @@ afficherHorloge: | ||
126 | ; Affiche l'heure actuelle | 125 | ; Affiche l'heure actuelle |
127 | temp <- t2 & 0b00011111 | 126 | temp <- t2 & 0b00011111 |
128 | d3 <- 0x00 | 127 | d3 <- 0x00 |
129 | - si temp > 10 alors d3 <- afficheur[temp/10] | ||
130 | - d2 <- afficheur[temp%10] | 0b10000000 | ||
131 | - d1 <- afficheur[t2/10] | ||
132 | - d0 <- afficheur[t2%10] | 128 | + si temp > 10 alors d3 <- afficheur@ROM[temp/10] |
129 | + d2 <- afficheur@ROM[temp%10] | 0b10000000 | ||
130 | + d1 <- afficheur@ROM[t2/10] | ||
131 | + d0 <- afficheur@ROM[t2%10] | ||
133 | ret | 132 | ret |
134 | 133 | ||
135 | afficherTemperature: | 134 | afficherTemperature: |
136 | ; Considère le registre compteur comme une température et l'affiche | 135 | ; Considère le registre compteur comme une température et l'affiche |
137 | - d0 <- afficheurLettre[26] ; Sigle degré | ||
138 | - d1 <- afficheur[compteur%10] | 136 | + d0 <- 0x63 |
137 | + d1 <- afficheur@ROM[compteur%10] | ||
139 | temp <- compteur + 50 | 138 | temp <- compteur + 50 |
140 | - d2 <- afficheur[(temp/10)%10] | 0b10000000 | ||
141 | - d3 <- afficheur[temp/100] | 139 | + d2 <- afficheur@ROM[(temp/10)%10] | 0b10000000 |
140 | + d3 <- afficheur@ROM[temp/100] | ||
142 | ret | 141 | ret |
143 | 142 | ||
144 | afficherHeur: | 143 | afficherHeur: |
145 | ; Considère le registre compteur comme une heure et l'affiche | 144 | ; Considère le registre compteur comme une heure et l'affiche |
146 | - d3 <- afficheur[compteur/10] | ||
147 | - d2 <- afficheur[compteur%10] | 0b10000000 | 145 | + d3 <- afficheur@ROM[compteur/10] |
146 | + d2 <- afficheur@ROM[compteur%10] | 0b10000000 | ||
148 | d1 <- 0x00 | 147 | d1 <- 0x00 |
149 | d0 <- 0x00 | 148 | d0 <- 0x00 |
150 | ret | 149 | ret |
@@ -153,8 +152,8 @@ afficherMinu: | @@ -153,8 +152,8 @@ afficherMinu: | ||
153 | ; Considère le registre compteur comme une minute et l'affiche | 152 | ; Considère le registre compteur comme une minute et l'affiche |
154 | d3 <- 0x00 | 153 | d3 <- 0x00 |
155 | d2 <- 0b10000000 | 154 | d2 <- 0b10000000 |
156 | - d1 <- afficheur[compteur/10] | ||
157 | - d0 <- afficheur[compteur%10] | 155 | + d1 <- afficheur@ROM[compteur/10] |
156 | + d0 <- afficheur@ROM[compteur%10] | ||
158 | ret | 157 | ret |
159 | 158 | ||
160 | afficherJour: | 159 | afficherJour: |
@@ -281,12 +280,16 @@ etatMenuJoursC: | @@ -281,12 +280,16 @@ etatMenuJoursC: | ||
281 | call boundJour | 280 | call boundJour |
282 | jmp etatMenuJoursU | 281 | jmp etatMenuJoursU |
283 | 282 | ||
283 | +etatMenuJoursS: | ||
284 | + ; TODO Switch mode nuit ↔ mode jour | ||
285 | + reti | ||
286 | + | ||
284 | etatParaJours: | 287 | etatParaJours: |
285 | etat <- etat + 7 | 288 | etat <- etat + 7 |
286 | compteur <- 12 | 289 | compteur <- 12 |
287 | etatParaJoursU: | 290 | etatParaJoursU: |
288 | - d3 <- afficheur[compteur/10] | ||
289 | - d2 <- afficheur[compteur%10] | 291 | + d3 <- afficheur@ROM[compteur/10] |
292 | + d2 <- afficheur@ROM[compteur%10] | ||
290 | d1 <- 0x00 | 293 | d1 <- 0x00 |
291 | d0 <- 0xFF ; TODO Récupérer le mode | 294 | d0 <- 0xFF ; TODO Récupérer le mode |
292 | reti | 295 | reti |
@@ -319,7 +322,7 @@ etatParaTJourC: | @@ -319,7 +322,7 @@ etatParaTJourC: | ||
319 | ; TODO Sauvegarde | 322 | ; TODO Sauvegarde |
320 | jmp etatParaTJourU | 323 | jmp etatParaTJourU |
321 | 324 | ||
322 | -etatMenuTNuit: | 325 | + etatMenuTNuit: |
323 | etat <- 19 | 326 | etat <- 19 |
324 | d3 <- 0x54 | 327 | d3 <- 0x54 |
325 | d2 <- 0x1c | 328 | d2 <- 0x1c |
@@ -411,8 +414,8 @@ etatParaHMinuC: | @@ -411,8 +414,8 @@ etatParaHMinuC: | ||
411 | 414 | ||
412 | incrementer: | 415 | incrementer: |
413 | inc compteur | 416 | inc compteur |
414 | - si etat = 0 saut etatVeilleHeur | ||
415 | - si etat = 1 saut etatVeilleTemp | 417 | + si etat = 0 saut etatVeilleTemp |
418 | + si etat = 1 saut etatVeilleHeur | ||
416 | si etat = 2 saut etatMenuTJour | 419 | si etat = 2 saut etatMenuTJour |
417 | si etat <= 9 saut etatMenuJoursC | 420 | si etat <= 9 saut etatMenuJoursC |
418 | si etat <= 16 saut etatParaJoursC | 421 | si etat <= 16 saut etatParaJoursC |
@@ -431,8 +434,8 @@ incrementer: | @@ -431,8 +434,8 @@ incrementer: | ||
431 | 434 | ||
432 | decrementer: | 435 | decrementer: |
433 | dec compteur | 436 | dec compteur |
434 | - si etat = 0 saut etatVeilleHeur | ||
435 | - si etat = 1 saut etatVeilleTemp | 437 | + si etat = 0 saut etatVeilleTemp |
438 | + si etat = 1 saut etatVeilleHeur | ||
436 | si etat = 2 saut etatMenuHorloge | 439 | si etat = 2 saut etatMenuHorloge |
437 | si etat <= 9 saut etatMenuJoursC | 440 | si etat <= 9 saut etatMenuJoursC |
438 | si etat <= 16 saut etatParaJoursC | 441 | si etat <= 16 saut etatParaJoursC |
@@ -500,7 +503,7 @@ watchdog: | @@ -500,7 +503,7 @@ watchdog: | ||
500 | t2 <- t2 & 0b11100000 ; Heure à minuit | 503 | t2 <- t2 & 0b11100000 ; Heure à minuit |
501 | si t2 >= 0b11100000 alors t2 <- 0b00000000 ; Si on est dimanche soir, on revient à lundi matin | 504 | si t2 >= 0b11100000 alors t2 <- 0b00000000 ; Si on est dimanche soir, on revient à lundi matin |
502 | watchdogHeure: | 505 | watchdogHeure: |
503 | - call agirHeure | 506 | + call agirHeur |
504 | reti | 507 | reti |
505 | 508 | ||
506 | ; Interruption ADC | 509 | ; Interruption ADC |
scripts/instr.asm deleted
@@ -1,220 +0,0 @@ | @@ -1,220 +0,0 @@ | ||
1 | -; | ||
2 | -; Complete instruction set | ||
3 | -; test file for gavrasm compiler | ||
4 | -; | ||
5 | -; If testhigh is 0 the lower range of values is tested, | ||
6 | -; if testhigh is 1 the upper range of values is tested | ||
7 | -; | ||
8 | -.EQU testhigh=0 | ||
9 | -; | ||
10 | -.IF testhigh==0 ; Lower range of values | ||
11 | -.DEF r = R0 | ||
12 | -.DEF rh = R16 | ||
13 | -.DEF rd = R24 | ||
14 | -.DEF rf = R16 | ||
15 | -.DEF rm = R0 | ||
16 | -.EQU p = 0 | ||
17 | -.EQU pl = 0 | ||
18 | -.EQU b = 0 | ||
19 | -.EQU k63 = 0 | ||
20 | -.EQU k127 = 0 | ||
21 | -.EQU k255 = 0 | ||
22 | -.EQU k4095 = 0 | ||
23 | -.EQU k65535 = 0 | ||
24 | -.EQU k4M = 0 | ||
25 | -.ELSE ; Upper range of values | ||
26 | -.DEF r = R31 | ||
27 | -.DEF rh = R31 | ||
28 | -.DEF rd = R30 | ||
29 | -.DEF rf = R23 | ||
30 | -.DEF rm = R30 | ||
31 | -.EQU p = 63 | ||
32 | -.EQU pl = 31 | ||
33 | -.EQU b = 7 | ||
34 | -.EQU k63 = 63 | ||
35 | -.EQU k127 = -63 | ||
36 | -.EQU k255 = 255 | ||
37 | -.EQU k4095 = -2048 | ||
38 | -.EQU k65535 = 65535 | ||
39 | -.EQU k4M = 4194303 | ||
40 | -.ENDIF | ||
41 | -; | ||
42 | -instruct: | ||
43 | - adc r,r | ||
44 | - add r,r | ||
45 | - adiw rd,k63 | ||
46 | - and r,r | ||
47 | - andi rh,k255 | ||
48 | - asr r | ||
49 | - bclr b | ||
50 | - bld r,b | ||
51 | -.IF testhigh==0 | ||
52 | - brbc b,-64 | ||
53 | - brbs b,-64 | ||
54 | - brcc -64 | ||
55 | - brcs -64 | ||
56 | -.ELSE | ||
57 | - brbc b,+63 | ||
58 | - brbs b,+63 | ||
59 | - brcc +63 | ||
60 | - brcs +63 | ||
61 | -.ENDIF | ||
62 | - break | ||
63 | -.IF testhigh==0 | ||
64 | - breq -64 | ||
65 | - brge -64 | ||
66 | - brhc -64 | ||
67 | - brhs -64 | ||
68 | - brid -64 | ||
69 | - brie -64 | ||
70 | - brlo -64 | ||
71 | - brlt -64 | ||
72 | - brmi -64 | ||
73 | - brne -64 | ||
74 | - brpl -64 | ||
75 | - brsh -64 | ||
76 | - brtc -64 | ||
77 | - brts -64 | ||
78 | - brvc -64 | ||
79 | - brvs -64 | ||
80 | -.ELSE | ||
81 | - breq +63 | ||
82 | - brge +63 | ||
83 | - brhc +63 | ||
84 | - brhs +63 | ||
85 | - brid +63 | ||
86 | - brie +63 | ||
87 | - brlo +63 | ||
88 | - brlt +63 | ||
89 | - brmi +63 | ||
90 | - brne +63 | ||
91 | - brpl +63 | ||
92 | - brsh +63 | ||
93 | - brtc +63 | ||
94 | - brts +63 | ||
95 | - brvc +63 | ||
96 | - brvs +63 | ||
97 | -.ENDIF | ||
98 | - bset b | ||
99 | - bst r,b | ||
100 | - call k4M | ||
101 | - cbi pl,b | ||
102 | - cbr rh,k255 | ||
103 | - clc | ||
104 | - clh | ||
105 | - cli | ||
106 | - cln | ||
107 | - clr r | ||
108 | - cls | ||
109 | - clt | ||
110 | - clv | ||
111 | - clz | ||
112 | - com r | ||
113 | - cp r,r | ||
114 | - cpc r,r | ||
115 | - cpi rh,k255 | ||
116 | - cpse r,r | ||
117 | - dec r | ||
118 | - des 8 | ||
119 | - eicall | ||
120 | - eijmp | ||
121 | - elpm | ||
122 | - elpm r,Z | ||
123 | - elpm r,Z+ | ||
124 | - eor r,r | ||
125 | - fmul rf,rf | ||
126 | - fmuls rf,rf | ||
127 | - fmulsu rf,rf | ||
128 | - icall | ||
129 | - ijmp | ||
130 | - in r,p | ||
131 | - inc r | ||
132 | - jmp k4M | ||
133 | - lac Z,r | ||
134 | - las Z,r | ||
135 | - lat Z,r | ||
136 | - ld r,X | ||
137 | - ld r,X+ | ||
138 | - ld r,-X | ||
139 | - ld r,Y | ||
140 | - ld r,Y+ | ||
141 | - ld r,-Y | ||
142 | - ld r,Z | ||
143 | - ld r,Z+ | ||
144 | - ld r,-Z | ||
145 | - ldd r,Y+k63 | ||
146 | - ldd r,Z+k63 | ||
147 | - ldi rh,k255 | ||
148 | - lds r,k65535 | ||
149 | - lpm | ||
150 | - lpm r,Z | ||
151 | - lpm r,Z+ | ||
152 | - lsl r | ||
153 | - lsr r | ||
154 | - mov r,r | ||
155 | - movw rm,rm | ||
156 | - mul r,r | ||
157 | - muls rh,rh | ||
158 | - neg r | ||
159 | - nop | ||
160 | - or r,r | ||
161 | - ori rh,k255 | ||
162 | - out p,r | ||
163 | - pop r | ||
164 | - push r | ||
165 | -.IF testhigh==0 | ||
166 | - rcall -2048 | ||
167 | -.ELSE | ||
168 | - rcall +2047 | ||
169 | -.ENDIF | ||
170 | - ret | ||
171 | - reti | ||
172 | -.IF testhigh==0 | ||
173 | - rjmp -2048 | ||
174 | -.ELSE | ||
175 | - rcall +2047 | ||
176 | -.ENDIF | ||
177 | - rol r | ||
178 | - ror r | ||
179 | - sbc r,r | ||
180 | - sbci rh,k255 | ||
181 | - sbi pl,b | ||
182 | - sbic pl,b | ||
183 | - sbis pl,b | ||
184 | - sbiw rd,k63 | ||
185 | - sbr rh,k255 | ||
186 | - sbrc r,b | ||
187 | - sbrs r,b | ||
188 | - sec | ||
189 | - seh | ||
190 | - sei | ||
191 | - sen | ||
192 | - ser rh | ||
193 | - ses | ||
194 | - set | ||
195 | - sev | ||
196 | - sez | ||
197 | - sleep | ||
198 | - spm | ||
199 | - spm Z+ | ||
200 | - st X,r | ||
201 | - st X+,r | ||
202 | - st -X,r | ||
203 | - st Y,r | ||
204 | - st Y+,r | ||
205 | - st -Y,r | ||
206 | - st Z,r | ||
207 | - st Z+,r | ||
208 | - st -Z,r | ||
209 | - std Y+k63,r | ||
210 | - std Z+k63,r | ||
211 | - sts k65535,r | ||
212 | - sub r,r | ||
213 | - subi rh,k255 | ||
214 | - swap r | ||
215 | - tst r | ||
216 | - wdr | ||
217 | - xch Z,r | ||
218 | -.EXIT | ||
219 | - | ||
220 | -This is the complete instruction set in one file. |