Blame view

principal.txt 5.21 KB
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