bug materiel, ou bug logiciel ?

je n'ai pas pris le temps de détailler ton code, mais cette ligne ...

time = (seconde + (60 * minute) + (3600 * heure)); // on met à jour le temps programé

tu mets le temps en secondes, et pour 9 h tu as 36009=32400
et si tu rajoute 10mn tu as 32400+60
10=33000

avec time qui est un tu peux y mettre + ou - 32767

time = (seconde + (60 * minute) + (3600 * heure)); // on met à jour le temps programé

passe time en "long" au lieu de int