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
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.