Blame view

Algorithme 4.12 KB
e44501f2   ezalczer   Algorithme
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  ;Algorithme de tutorat de microp
  
  ;Initialisation
  
  0x0000:
  	JMP debut
  
  0x0002:
  	JMP HMJN
  
  0x0004:
  	JMP MH
  	
  0x002E:
  	JMP inc_heure
  
  debut:
  	DDRA = 0x07
  	DDRB = 0xFF
  	DDRC = 0x0F
  	DDRD = 0x03
  	DDRF = 0x02
  	EIMSK = 0x037
  	EICRA = 0x06
  	EICRB = 0x00
74a5d5fa   Nicolas Havard   Ajout des l initi...
26
27
28
  	ADMUX <- 0b00010000
  	ADCSRB <- 0b00000000
  	ADCSRA <- 0b11100101
e44501f2   ezalczer   Algorithme
29
30
31
32
33
34
35
36
37
  	tab jour_lettre_1 = [70, 6E, 6E, 1C, 7C, 5B, 7E]
  	tab jour_lettre_2 = [7C, 6C, 73, 73, 73, 6F, 0C]
  	tab chiffre = [7E, 0C, 37, 17, 4D, 5B, 7B, 0E, 7F, 5F]
  	tab heure_jour = [08, 08, 08, 08, 08, 08, 08]
  	tab minute_jour = [00, 00, 00, 00, 00 ,00, 00]
  	tab heure_nuit = [20, 20, 20, 20, 20, 20, 20]
  	tab minute_nuit = [00, 00, 00, 00, 00 ,00, 00]
  	T_nuit=15		;Température de la nuit
  	T_jour=20		;Température du jour
3065ceb0   ezalczer   reglage
38
  	Jour=0          ;Jour actuel
e44501f2   ezalczer   Algorithme
39
40
41
  	Heure=0			;Heure actuelle
  	Minute=0		;Minute actuelle
  	Seconde=0		;Seconde actuelle
6d9ee0ad   ezalczer   Ajout de top_seconde
42
  	Top_seconde=0   ;Tops de timer0
e44501f2   ezalczer   Algorithme
43
  	chauffe=0		;Etat actuel : 1 si en chauffage, 0 sinon
e44501f2   ezalczer   Algorithme
44
45
  	T=capteur		;Température actuelle lue par le capteur
  
c528355c   ezalczer   Ajout des reti et...
46
      sei
e44501f2   ezalczer   Algorithme
47
48
49
50
  	JMP boucle_inf
  
  boucle_inf:
  	CALL reglage	;Fonction de réglage de la chaudière
3bc2d780   ezalczer   affichage alternatif
51
52
53
54
55
  	if(Seconde/10 == 0 || Seconde/10 == 2 // Seconde/10 == 4)
  	    Afficher(Heure:Minute)
  	else
  	    Afficher(T)
  	call tempo
e44501f2   ezalczer   Algorithme
56
57
58
  	JMP boucle_inf
  
  HMJN:
c528355c   ezalczer   Ajout des reti et...
59
  	cli
e44501f2   ezalczer   Algorithme
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
  	
  	WHILE(!HMJN)
  		if(plus)
  			Heure=(Heure+1)%24	;Ajout de 1
  		if(moins)
  			Heure=(Heure+23)%24	;Retrait de 1
  		Afficher(Heure:Minute)	;Affichage de l'heure
  		
  	WHILE(!HMJN)
  		if(plus)
  			Minute=(Minute+1)%60	;Ajout de 1
  		if(moins)
  			Minute=(Minute+59)%60	;Retrait de 1
  		Afficher(Heure:Minute)		;Affichage de l'heure
  		
  	WHILE(!HMJN)
  		if(plus)
  			if(T_jour<30.5)
  				T_jour=T_jour+0.5	;Ajout par pas de 0.5
  		if(moins)
  			if(T_jour>5)
  				T=jour=T_jour-0.5	;Retrait par pas de 0.5
  		Afficher(T_jour)			;Affichage de la temperature du jour
  	
  	WHILE(!HMJN)
  		if(plus)
  			if(T_nuit<30.5)
  				T_nuit=T_nuit+0.5	;Ajout par pas de 0.5
  		if(moins)
  			if(T_nuit>5)
  				T=nuit=T_nuit-0.5	;Retrait par pas de 0.5
  		Afficher(T_nuit)			;Affichage de la temperature de la nuit
  	
c528355c   ezalczer   Ajout des reti et...
93
  	sei
e44501f2   ezalczer   Algorithme
94
95
96
  	RETI
  	
  MH:
c528355c   ezalczer   Ajout des reti et...
97
  	cli
e44501f2   ezalczer   Algorithme
98
99
100
  	Jour_aff=0
  	while(!ok)
  		if(MH)
3065ceb0   ezalczer   reglage
101
  		    sei
e44501f2   ezalczer   Algorithme
102
103
104
105
106
107
108
109
110
111
112
  			RETI
  		if(plus)
  			Jour_aff=(Jour_aff+1)%7
  		if(moins)
  			Jour_aff=(Jour_aff-1)%7
  		afficher jour_lettre_1[Jour_aff]
  		afficher jour_lettre_2[Jour_aff]
  		call tempo
  		
  	while(!ok)
  		if(MH)
3065ceb0   ezalczer   reglage
113
  		    sei
e44501f2   ezalczer   Algorithme
114
115
116
117
118
119
120
121
122
123
124
  			RETI
  		if(plus)
  			heure_jour[Jour_aff]=(heure_jour[Jour_aff]+1)%24
  		if(moins)
  			heure_jour[Jour_aff]=(heure_jour[Jour_aff]-1)%24
  		afficher heure_jour[Jour_aff]
  		afficher minute_jour[Jour_aff]
  		call tempo
  		
  	while(!ok)
  		if(MH)
3065ceb0   ezalczer   reglage
125
  		    sei
e44501f2   ezalczer   Algorithme
126
127
128
129
130
131
132
133
134
135
136
  			RETI
  		if(plus)
  			minute_jour[Jour_aff]=(minute_jour[Jour_aff]+1)%24
  		if(moins)
  			minute_jour[Jour_aff]=(minute_jour[Jour_aff]-1)%24
  		afficher heure_jour[Jour_aff]
  		afficher minute_jour[Jour_aff]
  		call tempo
  		
  	while(!ok)
  		if(MH)
3065ceb0   ezalczer   reglage
137
  		    sei
e44501f2   ezalczer   Algorithme
138
139
140
141
142
143
144
145
146
147
148
  			RETI
  		if(plus)
  			heure_nuit[Jour_aff]=(heure_nuit[Jour_aff]+1)%24
  		if(moins)
  			heure_nuit[Jour_aff]=(heure_nuit[Jour_aff]-1)%24
  		afficher heure_nuit[Jour_aff]
  		afficher minute_nuit[Jour_aff]
  		call tempo
  		
  	while(!ok)
  		if(MH)
3065ceb0   ezalczer   reglage
149
  		    sei
e44501f2   ezalczer   Algorithme
150
151
152
153
154
155
156
157
158
  			RETI
  		if(plus)
  			minute_nuit[Jour_aff]=(minute_nuit[Jour_aff]+1)%24
  		if(moins)
  			minute_nuit[Jour_aff]=(minute_nuit[Jour_aff]-1)%24
  		afficher heure_nuit[Jour_aff]
  		afficher minute_nuit[Jour_aff]
  		call tempo
  		
3065ceb0   ezalczer   reglage
159
  	sei
e44501f2   ezalczer   Algorithme
160
161
162
  	RETI
  				
  reglage:
3065ceb0   ezalczer   reglage
163
164
      H_reglage_jour=Heure_jour[Jour]:Minute_jour[Jour];
      H_reglage_nuit=Heure_nuit[Jour]:Minute_nuit[Jour];
e44501f2   ezalczer   Algorithme
165
  	T=capteur		;Lecture de la valeur du capteur de température
3065ceb0   ezalczer   reglage
166
  	if(Heure:Minute<H_reglage_jour || Heure:Minute>H_reglage_nuit)
36903a8a   ezalczer   chauffe
167
  		if(T_nuit-T>0.5 && !chauffe)
e44501f2   ezalczer   Algorithme
168
  			demarrage chaudiere		;Démarrage de la chaudière
36903a8a   ezalczer   chauffe
169
170
  			chauffe=1
  		else if(T_nuit-T<-0.5 && chauffe)
e44501f2   ezalczer   Algorithme
171
  			stop chaudiere			;Arrêt de la chaudière
36903a8a   ezalczer   chauffe
172
  			chauffe=0
e44501f2   ezalczer   Algorithme
173
  	else
36903a8a   ezalczer   chauffe
174
  		if(T_jour-T>0.5 && !chauffe)
e44501f2   ezalczer   Algorithme
175
  			demarrage chaudiere		;Démarrage de la chaudière
36903a8a   ezalczer   chauffe
176
177
  			chauffe=1
  		else if(T_jour-T<-0.5 && chauffe)
e44501f2   ezalczer   Algorithme
178
  			stop chaudiere			;Arrêt de la chaudière
36903a8a   ezalczer   chauffe
179
  			chauffe=0
e44501f2   ezalczer   Algorithme
180
181
182
  	RET
  	
  inc_heure:
699ced4c   ezalczer   Correction
183
      Top_seconde=Top_seconde+1
4837e77d   ezalczer   62500->250
184
      if(Top_seconde==250)
6d9ee0ad   ezalczer   Ajout de top_seconde
185
186
187
188
189
190
191
192
193
194
195
          Top_seconde=0
  	    Seconde=Seconde+1
  	    if(Seconde==60)
  	    	Seconde=0
  	    	Minute=Minute+1
  	    	if(Minute==60)
  	    		Minute=0
  	    		Heure=Heure+1
  	    		if(Heure==24)
  	    			Heure=0
  	    			Jour=(Jour+1)%7
e44501f2   ezalczer   Algorithme
196
197
198
199
200
201
  	call reglage
  	RETI
  	
  	
  tempo:
  	wait 4ms
6d9ee0ad   ezalczer   Ajout de top_seconde
202
  	RET