Blame view

principal.txt 3.59 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
70
71
72
      ;      0,    1,    2,    3,    4,    5,    6,    7,    8,    9
  
  ;afficheurLettres:
  ;    .DB ; TODO
  ;    ;      A,    B,    C,    D,    E,    F,    G,    H ; TODO
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
109
110
111
112
113
114
115
  afficherHeure:
      ; Affiche l'heure actuelle
      temp <- 
      ret
  
  
  afficherTemperature:
      ; Considère le registre compteur comme une température et l'affiche
      d0 <- 0x63 ; Sigle °
      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
128
129
130
131
132
133
  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:
      reti
  
  decrementer:
      reti
  
  valider:
0f97c980   Geoffrey PREUD'HOMME   Bouton valider
134
135
136
137
138
139
140
141
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
167
168
169
170
171
172
173
174
175
176
177
178
      si mode <= 1 saut validerVeille
      si mode = 2 saut validerAssoc
      si mode <= 9 saut validerAJour
      si mode <= 16 saut validerParaAJour
      si mode = 17 saut validerTJour
      si mode = 18 saut validerParaTJour
      si mode = 19 saut validerTNuit
      si mode = 20 saut validerParaTNuit
      si mode = 21 saut validerHorloge
      si mode <= 24 saut validerMenuHorloge
      si mode <= 27 saut validerParaHorloge
      reti
      ; TODO Affichages
  validerVeille:
      mode <- 2
  validerAssoc:
      mode <- 3
  validerAJour:
      mode <- mode + 7
      reti
  validerParaAJour:
      ; TODO
      reti
  validerTJour:
      mode <- 18
      reti
  validerParaTJour:
      ; TODO
      mode <- 17
      reti
  validerTNuit:
      mode <- 20
      reti
  validerParaTNuit:
      ; TODO
      mode <- 19
      reti
  validerHorloge:
      mode <- 22
      reti
  validerMenuHorloge:
      mode <- mode + 3
      reti
  validerParaHorloge:
      mode <- mode - 3
af2c171d   Geoffrey PREUD'HOMME   Rédaction du matin
179
180
181
182
183
184
185
186
187
188
189
190
      reti
  
  retour:
      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
191
192
193
194
195
196
197
198
      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
199
200
201
202
203
204
      reti
  
  ; Interruption timer
  timer:
      ; Affiche le digit suivant sur l'afficheur 7seg
      reti