Blame view

principal.txt 2.23 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)
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