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)
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
35
36
37
38
39
40
|
; Vecteurs d'interruptions
.org 0x000 ; Vecteur RESET
jmp debut
|
6244f6c8
Geoffrey PREUD'HOMME
Initialisation ADC
|
41
42
43
|
.org 0x003A ; ADC
jmp adc
|
733c078a
Geoffrey PREUD'HOMME
Configuration des...
|
44
45
46
47
48
49
50
51
52
53
54
|
.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
|
55
|
|
930282df
Geoffrey PREUD'HOMME
Afficheur numérique
|
56
57
|
.org 0x0080
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
58
59
|
; Tableaux de la mémoire du programme
|
930282df
Geoffrey PREUD'HOMME
Afficheur numérique
|
60
61
62
63
64
65
66
|
afficheurNombres:
.DB 0x7E, 0x0C, 0x37, 0x9F, 0x4D, 0xDB, 0xFB, 0x0E, 0xFF, 0xDF ; TODO Ce sont pas les bonnes valeurs
; 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
|
67
68
69
70
71
|
; Programme
debut:
; Configuration des composants
|
733c078a
Geoffrey PREUD'HOMME
Configuration des...
|
72
73
|
SREG <- 0b10000000
|
930282df
Geoffrey PREUD'HOMME
Afficheur numérique
|
74
75
76
|
; Watchdog
WDTCSR <-
|
733c078a
Geoffrey PREUD'HOMME
Configuration des...
|
77
78
79
80
81
82
|
; Interruptions externes
EIMSK <- 0b00001111
EICRA <- 0b11111111 ; TODO Oscillations annulables ?
EICRB <- 0b00000000
; ADC
|
6244f6c8
Geoffrey PREUD'HOMME
Initialisation ADC
|
83
84
85
|
ADMUX <- 0b01110000
ADCSRB <- 0b00001011
ADCSRA <- 0b10011101 ; TODO Auto-trigger ?
|
733c078a
Geoffrey PREUD'HOMME
Configuration des...
|
86
|
sei
|
af2c171d
Geoffrey PREUD'HOMME
Rédaction du matin
|
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
; Initialisation des valeurs
boucle:
sleep
jmp boucle
; Fonctions
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:
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
|
124
125
126
127
128
129
130
131
|
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
|
132
133
134
135
136
137
|
reti
; Interruption timer
timer:
; Affiche le digit suivant sur l'afficheur 7seg
reti
|