Commit 54877f0f764ec8f8e06f7cef7795e4895bc81be4

Authored by Geoffrey PREUD'HOMME
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
@@ -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.