From e44501f2b62eb18938b6691fab780eef054654e0 Mon Sep 17 00:00:00 2001 From: ezalczer Date: Wed, 24 May 2017 20:56:46 +0200 Subject: [PATCH] Algorithme --- Algorithme | 183 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+), 0 deletions(-) create mode 100644 Algorithme diff --git a/Algorithme b/Algorithme new file mode 100644 index 0000000..ef229e6 --- /dev/null +++ b/Algorithme @@ -0,0 +1,183 @@ +;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 + 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 + Heure=0 ;Heure actuelle + Minute=0 ;Minute actuelle + Seconde=0 ;Seconde actuelle + millisec=0; + chauffe=0 ;Etat actuel : 1 si en chauffage, 0 sinon + jour=0 ;Etat actuel : 1 si jour, 0 si nuit + T=capteur ;Température actuelle lue par le capteur + + JMP boucle_inf + +boucle_inf: + CALL reglage ;Fonction de réglage de la chaudière + JMP boucle_inf + +HMJN: + ;Desactive les interruptions + + 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 + + ;Reactive les interruptions + RETI + +MH: + ;Desactive les interruptions + Jour_aff=0 + while(!ok) + if(MH) + 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) + 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) + 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) + 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) + 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 + + ;Reactive les interruptions + RETI + +reglage: + T=capteur ;Lecture de la valeur du capteur de température + if(Heure:MinuteH_nuit) + if(T_nuit-T>0.5) + demarrage chaudiere ;Démarrage de la chaudière + else if(T_nuit-T<-0.5) + stop chaudiere ;Arrêt de la chaudière + else + if(T_jour-T>0.5) + demarrage chaudiere ;Démarrage de la chaudière + else if(T_jour-T<-0.5) + stop chaudiere ;Arrêt de la chaudière + RET + +inc_heure: + Millisec=Millisec+1 + if(Millisec==250) + Millisec=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 + call reglage + RETI + + +tempo: + wait 4ms + RET + \ No newline at end of file -- libgit2 0.21.2