Commit e44501f2b62eb18938b6691fab780eef054654e0

Authored by ezalczer
0 parents

Algorithme

Showing 1 changed file with 183 additions and 0 deletions   Show diff stats
Algorithme 0 → 100644
  1 +++ a/Algorithme
... ... @@ -0,0 +1,183 @@
  1 +;Algorithme de tutorat de microp
  2 +
  3 +;Initialisation
  4 +
  5 +0x0000:
  6 + JMP debut
  7 +
  8 +0x0002:
  9 + JMP HMJN
  10 +
  11 +0x0004:
  12 + JMP MH
  13 +
  14 +0x002E:
  15 + JMP inc_heure
  16 +
  17 +debut:
  18 + DDRA = 0x07
  19 + DDRB = 0xFF
  20 + DDRC = 0x0F
  21 + DDRD = 0x03
  22 + DDRF = 0x02
  23 + EIMSK = 0x037
  24 + EICRA = 0x06
  25 + EICRB = 0x00
  26 + tab jour_lettre_1 = [70, 6E, 6E, 1C, 7C, 5B, 7E]
  27 + tab jour_lettre_2 = [7C, 6C, 73, 73, 73, 6F, 0C]
  28 + tab chiffre = [7E, 0C, 37, 17, 4D, 5B, 7B, 0E, 7F, 5F]
  29 + tab heure_jour = [08, 08, 08, 08, 08, 08, 08]
  30 + tab minute_jour = [00, 00, 00, 00, 00 ,00, 00]
  31 + tab heure_nuit = [20, 20, 20, 20, 20, 20, 20]
  32 + tab minute_nuit = [00, 00, 00, 00, 00 ,00, 00]
  33 + T_nuit=15 ;Température de la nuit
  34 + T_jour=20 ;Température du jour
  35 + Heure=0 ;Heure actuelle
  36 + Minute=0 ;Minute actuelle
  37 + Seconde=0 ;Seconde actuelle
  38 + millisec=0;
  39 + chauffe=0 ;Etat actuel : 1 si en chauffage, 0 sinon
  40 + jour=0 ;Etat actuel : 1 si jour, 0 si nuit
  41 + T=capteur ;Température actuelle lue par le capteur
  42 +
  43 + JMP boucle_inf
  44 +
  45 +boucle_inf:
  46 + CALL reglage ;Fonction de réglage de la chaudière
  47 + JMP boucle_inf
  48 +
  49 +HMJN:
  50 + ;Desactive les interruptions
  51 +
  52 + WHILE(!HMJN)
  53 + if(plus)
  54 + Heure=(Heure+1)%24 ;Ajout de 1
  55 + if(moins)
  56 + Heure=(Heure+23)%24 ;Retrait de 1
  57 + Afficher(Heure:Minute) ;Affichage de l'heure
  58 +
  59 + WHILE(!HMJN)
  60 + if(plus)
  61 + Minute=(Minute+1)%60 ;Ajout de 1
  62 + if(moins)
  63 + Minute=(Minute+59)%60 ;Retrait de 1
  64 + Afficher(Heure:Minute) ;Affichage de l'heure
  65 +
  66 + WHILE(!HMJN)
  67 + if(plus)
  68 + if(T_jour<30.5)
  69 + T_jour=T_jour+0.5 ;Ajout par pas de 0.5
  70 + if(moins)
  71 + if(T_jour>5)
  72 + T=jour=T_jour-0.5 ;Retrait par pas de 0.5
  73 + Afficher(T_jour) ;Affichage de la temperature du jour
  74 +
  75 + WHILE(!HMJN)
  76 + if(plus)
  77 + if(T_nuit<30.5)
  78 + T_nuit=T_nuit+0.5 ;Ajout par pas de 0.5
  79 + if(moins)
  80 + if(T_nuit>5)
  81 + T=nuit=T_nuit-0.5 ;Retrait par pas de 0.5
  82 + Afficher(T_nuit) ;Affichage de la temperature de la nuit
  83 +
  84 + ;Reactive les interruptions
  85 + RETI
  86 +
  87 +MH:
  88 + ;Desactive les interruptions
  89 + Jour_aff=0
  90 + while(!ok)
  91 + if(MH)
  92 + RETI
  93 + if(plus)
  94 + Jour_aff=(Jour_aff+1)%7
  95 + if(moins)
  96 + Jour_aff=(Jour_aff-1)%7
  97 + afficher jour_lettre_1[Jour_aff]
  98 + afficher jour_lettre_2[Jour_aff]
  99 + call tempo
  100 +
  101 + while(!ok)
  102 + if(MH)
  103 + RETI
  104 + if(plus)
  105 + heure_jour[Jour_aff]=(heure_jour[Jour_aff]+1)%24
  106 + if(moins)
  107 + heure_jour[Jour_aff]=(heure_jour[Jour_aff]-1)%24
  108 + afficher heure_jour[Jour_aff]
  109 + afficher minute_jour[Jour_aff]
  110 + call tempo
  111 +
  112 + while(!ok)
  113 + if(MH)
  114 + RETI
  115 + if(plus)
  116 + minute_jour[Jour_aff]=(minute_jour[Jour_aff]+1)%24
  117 + if(moins)
  118 + minute_jour[Jour_aff]=(minute_jour[Jour_aff]-1)%24
  119 + afficher heure_jour[Jour_aff]
  120 + afficher minute_jour[Jour_aff]
  121 + call tempo
  122 +
  123 + while(!ok)
  124 + if(MH)
  125 + RETI
  126 + if(plus)
  127 + heure_nuit[Jour_aff]=(heure_nuit[Jour_aff]+1)%24
  128 + if(moins)
  129 + heure_nuit[Jour_aff]=(heure_nuit[Jour_aff]-1)%24
  130 + afficher heure_nuit[Jour_aff]
  131 + afficher minute_nuit[Jour_aff]
  132 + call tempo
  133 +
  134 + while(!ok)
  135 + if(MH)
  136 + RETI
  137 + if(plus)
  138 + minute_nuit[Jour_aff]=(minute_nuit[Jour_aff]+1)%24
  139 + if(moins)
  140 + minute_nuit[Jour_aff]=(minute_nuit[Jour_aff]-1)%24
  141 + afficher heure_nuit[Jour_aff]
  142 + afficher minute_nuit[Jour_aff]
  143 + call tempo
  144 +
  145 + ;Reactive les interruptions
  146 + RETI
  147 +
  148 +reglage:
  149 + T=capteur ;Lecture de la valeur du capteur de température
  150 + if(Heure:Minute<H_jour || Heure:Minute>H_nuit)
  151 + if(T_nuit-T>0.5)
  152 + demarrage chaudiere ;Démarrage de la chaudière
  153 + else if(T_nuit-T<-0.5)
  154 + stop chaudiere ;Arrêt de la chaudière
  155 + else
  156 + if(T_jour-T>0.5)
  157 + demarrage chaudiere ;Démarrage de la chaudière
  158 + else if(T_jour-T<-0.5)
  159 + stop chaudiere ;Arrêt de la chaudière
  160 + RET
  161 +
  162 +inc_heure:
  163 + Millisec=Millisec+1
  164 + if(Millisec==250)
  165 + Millisec=0
  166 + Seconde=Seconde+1
  167 + if(Seconde==60)
  168 + Seconde=0
  169 + Minute=Minute+1
  170 + if(Minute==60)
  171 + Minute=0
  172 + Heure=Heure+1
  173 + if(Heure==24)
  174 + Heure=0
  175 + Jour=(Jour+1)%7
  176 + call reglage
  177 + RETI
  178 +
  179 +
  180 +tempo:
  181 + wait 4ms
  182 + RET
  183 +
0 184 \ No newline at end of file
... ...