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