Commit d47c1384099829b99d94dee494ec9f8dd363268f

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