Commit d47c1384099829b99d94dee494ec9f8dd363268f
1 parent
38c40966
Finalisation du programme
Ça maaaaaarche !
Showing
1 changed file
with
51 additions
and
13 deletions
Show diff stats
principal.txt
... | ... | @@ -31,18 +31,22 @@ |
31 | 31 | ; Nommage des registres utilisés |
32 | 32 | |
33 | 33 | .def etat = r12 |
34 | +.def compteur = r6 ; Utilisé pour modifier des valeurs dans le menu | |
35 | + | |
34 | 36 | .def reference = r13 ; Température de référence actuelle |
37 | + | |
35 | 38 | .def d3 = r2 ; Digit 3 (tout à gauche) |
36 | 39 | .def d2 = r3 ; Digit 2 |
37 | 40 | .def d1 = r4 ; Digit 1 |
38 | 41 | .def d0 = r5 ; Digit 0 (tout à droite) |
39 | -.def compteur = r6 ; Utilisé pour modifier des valeurs dans le menu | |
40 | -.def temp = r7 ; Utilisé pour différentes choses mais très brièvement | |
42 | + | |
41 | 43 | .def t2 = r8 ; Jour (3 premiers bits) et Heure (5 derniers bits) |
42 | 44 | .def t1 = r9 ; Minutes |
43 | 45 | .def t0 = r10 ; Secondes / 2 |
44 | 46 | .def tt = r11 ; Watchdog artificiel |
45 | 47 | |
48 | +.def temp = r7 ; Utilisé pour différentes choses mais très brièvement | |
49 | + | |
46 | 50 | ; Nommage des adresses RAM utilisées |
47 | 51 | |
48 | 52 | .equ assocs = 0x0200 ; Association des modes aux heures |
... | ... | @@ -93,6 +97,10 @@ debut: |
93 | 97 | DDRC@IO <- 0xFF |
94 | 98 | DDRG@IO <- 0xFF |
95 | 99 | |
100 | + ; Barres de chargement | |
101 | + PORTA@IO <- 0x40 | |
102 | + PORTC@IO <- 0x00 | |
103 | + | |
96 | 104 | ; Watchdog |
97 | 105 | ;WDTCSR <- 0b00010000 |
98 | 106 | ;WDTCSR <- 0b01000111 |
... | ... | @@ -112,17 +120,43 @@ debut: |
112 | 120 | ADCSRB <- 0b00000010 |
113 | 121 | ADCSRA <- 0b11011110 |
114 | 122 | |
115 | - sei | |
123 | +; Initialisation des registre | |
124 | + etat <- 0 | |
125 | + ; compteur initialisé quand on en aura besoin | |
126 | + ; reference initialisé avec agirHeure | |
127 | + ; d3, d2, d1, d0 initialisés avec afficherHorloge | |
116 | 128 | |
117 | -; Initialisation des valeurs | |
118 | 129 | ; Mercredi 12h34'56 |
119 | - t2 <- 0b01001100 | |
130 | + t2 <- 0b01001100 | |
120 | 131 | t1 <- 34 |
121 | 132 | t0 <- 28 |
122 | 133 | tt <- 0 |
123 | 134 | |
124 | - etat <- 0 | |
135 | + ; temp initialisé quand on en aura besoin | |
136 | + | |
137 | +; Initialisation de la RAM | |
138 | + ; Valeurs de démonstration : 7° - 27° (on jouerait plus sur du 17° - 21° en réalité) | |
139 | + tempNuit <- 20 | |
140 | + tempJour <- 220 | |
141 | + | |
142 | + ; Initialisation des associations | |
143 | + compteur <- 0 ; Jour | |
144 | +initJour: | |
145 | + temp <- 0 ; Heure | |
146 | +initHeure: | |
147 | + assocs[compteur * 24 + temp] <- 0 ; Par défaut le mode jour | |
148 | + si temp <= 7 alors assocs[compteur * 24 + temp] <- 1 ; Entre minuit et 7h le mode nuit | |
149 | + inc temp | |
150 | + if temp < 24 saut initHeure | |
151 | + inc compteur | |
152 | + if compteur < 7 saut initJour | |
153 | + | |
154 | +; Logique de démarrage | |
125 | 155 | call afficherHorloge |
156 | + call agirHeure | |
157 | + | |
158 | + ; On active les interruptions une fois que tout est prêt | |
159 | + sei | |
126 | 160 | |
127 | 161 | boucle: |
128 | 162 | sleep |
... | ... | @@ -254,7 +288,7 @@ a10sVeilleTemp: |
254 | 288 | |
255 | 289 | agirHeure: |
256 | 290 | ; Recharge la température de référence |
257 | - temp <- (t2 / 0b00100000) * 24 + compteur | |
291 | + temp <- (t2 / 0b00100000) * 24 + (t2 & 0b00011111) | |
258 | 292 | if assocs[temp] = 0x00 alors reference <- tempJour |
259 | 293 | if assocs[temp] = 0x01 alors reference <- tempNuit |
260 | 294 | ret |
... | ... | @@ -311,7 +345,8 @@ etatMenuAssoc: |
311 | 345 | reti |
312 | 346 | |
313 | 347 | etatMenuJours: |
314 | - compteur <- 0 | |
348 | + ; Par défaut on prend le jour actuel | |
349 | + compteur <- t2 / 0b00100000 | |
315 | 350 | etatMenuJoursU: |
316 | 351 | etat <- 3 + compteur |
317 | 352 | call afficherJour |
... | ... | @@ -327,7 +362,7 @@ etatMenuJoursC: |
327 | 362 | |
328 | 363 | etatParaJours: |
329 | 364 | etat <- etat + 7 |
330 | - compteur <- t0 & 0b00011111 | |
365 | + compteur <- t2 & 0b00011111 | |
331 | 366 | etatParaJoursU: |
332 | 367 | d3 <- afficheur@ROM[compteur/10] |
333 | 368 | d2 <- afficheur@ROM[compteur%10] |
... | ... | @@ -425,25 +460,27 @@ etatMenuHMinu: |
425 | 460 | |
426 | 461 | etatParaHJour: |
427 | 462 | etat <- 25 |
428 | - compteur <- t0 / 0b00100000 | |
463 | + compteur <- t2 / 0b00100000 | |
429 | 464 | call afficherJour |
430 | 465 | reti |
431 | 466 | |
432 | 467 | etatParaHJourC: |
433 | 468 | call boundJour |
434 | - t0 <- (compteur * 0b00100000) + (t0 & 0b00011111) | |
469 | + t2 <- (compteur * 0b00100000) + (t2 & 0b00011111) | |
470 | + call agirHeure | |
435 | 471 | call afficherJour |
436 | 472 | reti |
437 | 473 | |
438 | 474 | etatParaHHeur: |
439 | 475 | etat <- 26 |
440 | - compteur <- t0 & 0b00011111 | |
476 | + compteur <- t2 & 0b00011111 | |
441 | 477 | call afficherHeur |
442 | 478 | reti |
443 | 479 | |
444 | 480 | etatParaHHeurC: |
445 | 481 | call boundHeur |
446 | - t0 <- (t0 & 0b11100000) + compteur | |
482 | + t2 <- (t2 & 0b11100000) + compteur | |
483 | + call agirHeure | |
447 | 484 | call afficherHeur |
448 | 485 | reti |
449 | 486 | |
... | ... | @@ -542,6 +579,7 @@ watchdog: |
542 | 579 | |
543 | 580 | ; Interruption ADC |
544 | 581 | adc: |
582 | + ADCSRA <- 0b11011101 ; DEBUG Lire la température continuellement | |
545 | 583 | si ADCH > reference + 5 saut eteindreChaudiere |
546 | 584 | si ADCH < reference - 5 saut allumerChaudiere |
547 | 585 | reti | ... | ... |