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 | 3 | .equ PINA = 0x00 |
4 | 4 | .equ DDRA = 0x01 |
5 | 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 | 10 | .equ WDTCSR = 0x60 |
14 | 11 | |
... | ... | @@ -30,8 +27,8 @@ |
30 | 27 | |
31 | 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 | 32 | .def d3 = r2 ; Digit 3 (tout à gauche) |
36 | 33 | .def d2 = r3 ; Digit 2 |
37 | 34 | .def d1 = r4 ; Digit 1 |
... | ... | @@ -75,14 +72,16 @@ |
75 | 72 | ; Tableaux de la mémoire du programme |
76 | 73 | |
77 | 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 | 78 | ; Programme |
82 | 79 | |
83 | 80 | debut: |
84 | 81 | ; Configuration des composants |
85 | - SREG <- 0b10000000 | |
82 | + ; Ports parallèles | |
83 | + DDRA@IO <- 0xFF | |
84 | + DDRC@IO <- 0xFF | |
86 | 85 | |
87 | 86 | ; Watchdog |
88 | 87 | WDTCSR <- 0b00010000 |
... | ... | @@ -126,25 +125,25 @@ afficherHorloge: |
126 | 125 | ; Affiche l'heure actuelle |
127 | 126 | temp <- t2 & 0b00011111 |
128 | 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 | 132 | ret |
134 | 133 | |
135 | 134 | afficherTemperature: |
136 | 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 | 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 | 141 | ret |
143 | 142 | |
144 | 143 | afficherHeur: |
145 | 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 | 147 | d1 <- 0x00 |
149 | 148 | d0 <- 0x00 |
150 | 149 | ret |
... | ... | @@ -153,8 +152,8 @@ afficherMinu: |
153 | 152 | ; Considère le registre compteur comme une minute et l'affiche |
154 | 153 | d3 <- 0x00 |
155 | 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 | 157 | ret |
159 | 158 | |
160 | 159 | afficherJour: |
... | ... | @@ -281,12 +280,16 @@ etatMenuJoursC: |
281 | 280 | call boundJour |
282 | 281 | jmp etatMenuJoursU |
283 | 282 | |
283 | +etatMenuJoursS: | |
284 | + ; TODO Switch mode nuit ↔ mode jour | |
285 | + reti | |
286 | + | |
284 | 287 | etatParaJours: |
285 | 288 | etat <- etat + 7 |
286 | 289 | compteur <- 12 |
287 | 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 | 293 | d1 <- 0x00 |
291 | 294 | d0 <- 0xFF ; TODO Récupérer le mode |
292 | 295 | reti |
... | ... | @@ -319,7 +322,7 @@ etatParaTJourC: |
319 | 322 | ; TODO Sauvegarde |
320 | 323 | jmp etatParaTJourU |
321 | 324 | |
322 | -etatMenuTNuit: | |
325 | + etatMenuTNuit: | |
323 | 326 | etat <- 19 |
324 | 327 | d3 <- 0x54 |
325 | 328 | d2 <- 0x1c |
... | ... | @@ -411,8 +414,8 @@ etatParaHMinuC: |
411 | 414 | |
412 | 415 | incrementer: |
413 | 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 | 419 | si etat = 2 saut etatMenuTJour |
417 | 420 | si etat <= 9 saut etatMenuJoursC |
418 | 421 | si etat <= 16 saut etatParaJoursC |
... | ... | @@ -431,8 +434,8 @@ incrementer: |
431 | 434 | |
432 | 435 | decrementer: |
433 | 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 | 439 | si etat = 2 saut etatMenuHorloge |
437 | 440 | si etat <= 9 saut etatMenuJoursC |
438 | 441 | si etat <= 16 saut etatParaJoursC |
... | ... | @@ -500,7 +503,7 @@ watchdog: |
500 | 503 | t2 <- t2 & 0b11100000 ; Heure à minuit |
501 | 504 | si t2 >= 0b11100000 alors t2 <- 0b00000000 ; Si on est dimanche soir, on revient à lundi matin |
502 | 505 | watchdogHeure: |
503 | - call agirHeure | |
506 | + call agirHeur | |
504 | 507 | reti |
505 | 508 | |
506 | 509 | ; Interruption ADC | ... | ... |
scripts/instr.asm deleted
... | ... | @@ -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. |