af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
1
2
3
4
5
|
; Équivalences
.equ PINA = 0x00
.equ DDRA = 0x01
.equ PORTA = 0x02
|
733c078a
Geoffrey PREUD'HOMME
Configuration des...
|
6
|
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
7
8
9
10
|
.equ PINB = 0x03
.equ DDRB = 0x04
.equ PORTB = 0x05
|
733c078a
Geoffrey PREUD'HOMME
Configuration des...
|
11
12
|
.equ SREG = 0x3F
|
930282df
Geoffrey PREUD'HOMME
Afficheur numérique
|
13
14
|
.equ WDTCSR = 0x60
|
733c078a
Geoffrey PREUD'HOMME
Configuration des...
|
15
16
17
18
|
.equ EIMSK = 0x3D
.equ EICRA = 0x69
.equ EICRB = 0x6A
|
6244f6c8
Geoffrey PREUD'HOMME
Initialisation ADC
|
19
20
21
22
23
|
.equ ADMUX = 0x7C
.equ ADCSRB = 0x7B
.equ ADCSRA = 0x7A
.equ ADCH = 0x79
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
24
25
26
27
28
29
|
.equ SPH = 0x3E
.equ SPL = 0x3D
; Nommage des registres utilisés
.def etat = r19
|
733c078a
Geoffrey PREUD'HOMME
Configuration des...
|
30
|
.def reference = r20
|
930282df
Geoffrey PREUD'HOMME
Afficheur numérique
|
31
32
33
34
|
.def d3 = r20 ; Digit 3 (tout à gauche)
.def d2 = r20 ; Digit 2
.def d1 = r20 ; Digit 1
.def d0 = r20 ; Digit 0 (tout à droite)
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
35
36
|
.def compteur = r20 ; Utilisé pour différentes choses
.def tempo = r20 ; Utilisé pour différentes choses mais très brièvement
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
37
38
39
40
41
42
|
; Vecteurs d'interruptions
.org 0x000 ; Vecteur RESET
jmp debut
|
733c078a
Geoffrey PREUD'HOMME
Configuration des...
|
43
44
45
46
47
48
49
50
51
52
53
|
.org 0x0002 ; INT0
jmp valider
.org 0x0004 ; INT1
jmp retour
.org 0x0006 ; INT2
jmp incrementer
.org 0x0008 ; INT3
jmp decrementer
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
54
|
|
aa2eef0b
Geoffrey PREUD'HOMME
Initialisation wa...
|
55
56
57
58
59
60
61
|
.org 0x0018 ; Watchdog
jmp watchdog
.org 0x003A ; ADC
jmp adc
|
930282df
Geoffrey PREUD'HOMME
Afficheur numérique
|
62
63
|
.org 0x0080
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
64
65
|
; Tableaux de la mémoire du programme
|
930282df
Geoffrey PREUD'HOMME
Afficheur numérique
|
66
|
afficheurNombres:
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
67
|
.DB 0x3F, 0x30, 0x6D, 0x79, 0x72, 0x5B, 0x5F, 0x31, 0x7F, 0x7B
|
930282df
Geoffrey PREUD'HOMME
Afficheur numérique
|
68
69
|
; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
|
c2a24067
Geoffrey PREUD'HOMME
Bouton retour
|
70
71
72
|
afficheurLettres:
.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
; 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, °
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
73
74
75
76
77
|
; Programme
debut:
; Configuration des composants
|
733c078a
Geoffrey PREUD'HOMME
Configuration des...
|
78
79
|
SREG <- 0b10000000
|
930282df
Geoffrey PREUD'HOMME
Afficheur numérique
|
80
|
; Watchdog
|
aa2eef0b
Geoffrey PREUD'HOMME
Initialisation wa...
|
81
82
|
WDTCSR <- 0b00010000
WDTCSR <- 0b01000111
|
930282df
Geoffrey PREUD'HOMME
Afficheur numérique
|
83
|
|
733c078a
Geoffrey PREUD'HOMME
Configuration des...
|
84
85
86
87
88
89
|
; Interruptions externes
EIMSK <- 0b00001111
EICRA <- 0b11111111 ; TODO Oscillations annulables ?
EICRB <- 0b00000000
; ADC
|
6244f6c8
Geoffrey PREUD'HOMME
Initialisation ADC
|
90
91
92
|
ADMUX <- 0b01110000
ADCSRB <- 0b00001011
ADCSRA <- 0b10011101 ; TODO Auto-trigger ?
|
733c078a
Geoffrey PREUD'HOMME
Configuration des...
|
93
|
sei
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
94
95
96
97
98
99
100
|
; Initialisation des valeurs
boucle:
sleep
jmp boucle
; Fonctions
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
101
102
103
104
105
106
107
108
|
afficherHeure:
; Affiche l'heure actuelle
temp <-
ret
afficherTemperature:
; Considère le registre compteur comme une température et l'affiche
|
c2a24067
Geoffrey PREUD'HOMME
Bouton retour
|
109
|
d0 <- afficheurLettre[26] ; Sigle °
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
110
111
112
113
114
115
|
d1 <- afficheur[compteur%10]
temp <- compteur + 50
d2 <- afficheur[(temp/10)%10]
d3 <- afficheur[temp/100]
ret
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
116
117
118
119
120
121
122
123
124
125
126
127
|
agir10s:
; Initialise une lecture ADC
; Met à jour l'état de veille (si on est en état veille)
ret
agirHeure:
; Recharge la température de référence
ret
; Interruption boutons
incrementer:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
128
129
130
131
132
133
134
135
136
137
138
|
si etat <= 1 saut reti
si etat = 2 saut etatMenuJour
si etat < 9 saut etatPlusUn
si etat = 9 saut etatLundi
si etat = 17 saut etatMenuNuit
si etat = 18 saut TODO
si etat = 19 saut etatMenuHorloge
si etat = 20 saut TODO
si etat = 21 saut etatMenuAssoc
si etat < 24 saut etatPlusUn
si etat = 24 saut etatMenuHorlogeJour
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
139
140
141
|
reti
decrementer:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
|
si etat <= 1 saut reti
reti
etatMenuAssoc:
etat <- 2
reti
etatMenuJour:
etat <- 17
reti
etatMenuNuit:
etat <- 19
reti
etatMenuHorloge
etat <- 21
reti
etatPlusUn:
etat <- etat + 1
reti
etatLundi:
etat <- 3
reti
etatMenuHorlogeJour:
etat <- 22
reti
reti:
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
167
168
169
|
reti
valider:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
170
171
172
173
174
175
176
177
178
179
180
|
si etat <= 1 saut validerVeille
si etat = 2 saut validerAssoc
si etat <= 9 saut validerAJour
si etat <= 16 saut validerParaAJour
si etat = 17 saut validerTJour
si etat = 18 saut validerParaTJour
si etat = 19 saut validerTNuit
si etat = 20 saut validerParaTNuit
si etat = 21 saut validerHorloge
si etat <= 24 saut validerMenuHorloge
si etat <= 27 saut validerParaHorloge
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
181
182
183
|
reti
; TODO Affichages
validerVeille:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
184
|
etat <- 2
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
185
|
validerAssoc:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
186
|
etat <- 3
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
187
|
validerAJour:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
188
|
etat <- etat + 7
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
189
190
191
192
193
|
reti
validerParaAJour:
; TODO
reti
validerTJour:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
194
|
etat <- 18
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
195
196
197
|
reti
validerParaTJour:
; TODO
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
198
|
etat <- 17
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
199
200
|
reti
validerTNuit:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
201
|
etat <- 20
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
202
203
204
|
reti
validerParaTNuit:
; TODO
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
205
|
etat <- 19
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
206
207
|
reti
validerHorloge:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
208
|
etat <- 22
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
209
210
|
reti
validerMenuHorloge:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
211
|
etat <- etat + 3
|
0f97c980
Geoffrey PREUD'HOMME
Bouton valider
|
212
213
|
reti
validerParaHorloge:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
214
|
etat <- etat - 3
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
215
216
217
|
reti
retour:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
218
219
220
221
222
223
224
|
si etat <= 1 saut retourRien
si (etat = 2 ou etat = 17 ou etat = 19 ou etat = 21) saut retourVeille
si etat <= 9 saut retourMenuAssoc
si etat <= 16 saut retourMenuJAssoc
si etat <= 21 saut retourMoinsUn
si etat <= 24 saut retourMenuHorloge
si etat <= 27 saut retourMenuMenuHorloge
|
c2a24067
Geoffrey PREUD'HOMME
Bouton retour
|
225
226
227
|
retourRien:
reti
retourVeille:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
228
|
etat <- 0
|
c2a24067
Geoffrey PREUD'HOMME
Bouton retour
|
229
230
|
reti
retourMenuAssoc:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
231
|
etat <- 2
|
c2a24067
Geoffrey PREUD'HOMME
Bouton retour
|
232
233
|
reti
retourMenuJAssoc:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
234
|
etat <- etat - 7
|
c2a24067
Geoffrey PREUD'HOMME
Bouton retour
|
235
236
|
reti
retourMoinsUn:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
237
|
etat <- etat - 1
|
c2a24067
Geoffrey PREUD'HOMME
Bouton retour
|
238
239
|
reti
retourMenuHorloge:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
240
|
etat <- 21
|
c2a24067
Geoffrey PREUD'HOMME
Bouton retour
|
241
242
|
reti
retourMenuMenuHorloge:
|
1d126a93
Geoffrey PREUD'HOMME
Commencé l'interr...
|
243
|
etat <- etat - 3
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
244
245
246
247
248
249
250
251
252
|
reti
; Interruption Watchdog
watchdog:
; Met à jour les registres de temps, active agir10s ou agirHeure si nécessaire
reti
; Interruption ADC
adc:
|
aadee417
Geoffrey PREUD'HOMME
Définition des états
|
253
254
255
256
257
258
259
260
|
si ADCH > reference + 5 saut eteindreChaudiere
si ADCH < reference - 5 saut allumerChaudiere
reti
allumerChaudiere:
PORTC <- 0x01
reti
eteindreChaudiere:
PORTC <- 0x00
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
261
262
263
264
265
266
|
reti
; Interruption timer
timer:
; Affiche le digit suivant sur l'afficheur 7seg
reti
|