bonjour,
je suis en train de réaliser la programmation de mon pic(16f84) pour gérer un distributeur de croquette pour chat... (sa va en faire sourir bcp je pense)
bref, j'ai un problème...
voici mon algorithme
#include std84.h
#include bit84.h
#define led1 porta.0 //DEL absence croquette dans premier compartiment
#define led2 porta.1 //DEL batterie faible
#define moteur1 porta.3 //moteur sens normal
#define moteur2 porta.4 //moteur inverse
#define comp portb.0 //comparateur : pic courant
#define batt portb.2 //batterie faible
#define mrp portb.3 //minirupteur position roue
#define int3 portb.4 //deux chats
#define int2 portb.5 //un chat
#define int1 portb.6 //un chatton
#define acroc portb.7 // absence croquette dans roue
char n
// programme principal
void main()
{
trisa = 0b00000000;
trisb = 0b11111101;
for(;
{
while(acroc); //pas de croquette dans le premlier compartiment
{
led1 = 1;
prog();
}
led1 = 0;
if (int1) //si un chatton
prog(); //faire tourner la roue 1/5
if (int2) //si un chat
for(0;2;n++) //faire tourner la roue 2/5
{
prog();
}
if (int3) //si deux chats)
for(0;4;n++) //faire tourner la roue 4/5
{
prog();
}
for(0;208;n++) //temporisation 12h
{
delays(0.208);
}
}
}
//sous programme faire tourner le moteur 1/5
void prog()
{
while(!mrp) //si minirupteur roue = 0
{
moteur1 = 1; //faire tourner le moteur sens normal
} //jusqu'à roue bien
moteur1 = 0; //arrêt moteur
}
//programme d'interruption
void interrupt intf: surintensite()
{
if (comp)
do
{
moteur1 = 0;
moteur2 = 1;
}
while (!comp);
moteur2 = 0;
}
et lorsque je simule en pas à pas, et que je choisit "int2" il execute le sous programme en boucle infinie alors qu'il ne devrait le faire que 2 fois, je ne trouve pas de solution... alors si jamais qqun pouvais m'aider.. je susi toute seule et dans la galère!
merci bien..
-----