vo postar o fonte, se vc axarem algum erro avisem plz!!!
#include <at89x52.h>
/* Declaração dos sensores */
#define PORTA_FECHADA !P2_1
#define LATA !P2_7
/* Fim da declaração dos sensores */
/* Declaração dos atuadores */
#define desce P1_0
#define sobe P1_1
/* Fim da declaração dos atuadores */
void tempo(int seg);
void func_sobe(int seg);
void func_desce(int seg);
main(void)
{
P1=P2=P3=P0=0xFF;
sobe=desce=0;
TMOD=0x11;
TCON=0;
func_sobe(3);
while(1)
{
if(PORTA_FECHADA && LATA)
{
tempo(2);
func_desce(3);
func_sobe(3);
while(LATA);
}
}
}
void func_desce(int seg)
{
int contador;
desce=1;
while(seg>0)
{
contador=20;
while(contador>0)
{
TH1=0x3C;
TL1=0xAF;
TR1=1;
while(TF1==0)
{
if(!PORTA_FECHADA)
{
desce=0;
while(!PORTA_FECHADA);
desce=1;
}
}
contador--;
TF1=0;
TR1=0;
}
seg--;
}
desce=0;
}
void func_sobe(int seg)
{
int contador;
sobe=1;
while(seg>0)
{
contador=20;
while(contador>0)
{
TH1=0x3C;
TL1=0xAF;
TR1=1;
while(TF1==0)
{
if(!PORTA_FECHADA)
{
sobe=0;
while(!PORTA_FECHADA);
sobe=1;
}
}
contador--;
TF1=0;
TR1=0;
}
seg--;
}
sobe=0;
}
void tempo(int seg)
{
int contador;
while(seg>0)
{
contador=20;
while(contador>0)
{
TH1=0x3C;
TL1=0xAF;
TR1=1;
while(TF1==0);
TR1=0;
TF1=0;
contador--;
}
seg--;
}
}