Página 1 de 1

Problema BIZARRO!!!!

MensagemEnviado: 08 Jun 2007 18:45
por Fenix
eu fiz um programa pro AT89S52 e eu quero botar mais coisa nele, ams se eu fizer qualquer coisa ele da problema em uma linha q eu num mexo, e num tem como arrumar, pq a linha ta certa!!!!!!! e esse prog tava compilado, e funcionando!
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--;
}
}

MensagemEnviado: 10 Jun 2007 22:42
por styg
nao deu pra t entende nao.. isso ta funcionando, ou mexendo que ele nao funfa??

Re: Problema BIZARRO!!!!

MensagemEnviado: 11 Jun 2007 12:07
por andre_luis
Fenix escreveu: P1=P2=P3=P0=0xFF;


A linguagem 'C' aceita isso ?

MensagemEnviado: 11 Jun 2007 13:00
por brasilma
Minhas sugestões são as seguintes:

Fazer como "Jack" (o estripador), e ir por partes, ou seja, inicie um novo projeto acrescentando aos poucos as partes do seu programa, até ver a que está dando problema, e ai resolva o problema.

ou

Tentar implementar as rotinas de forma diferente até que o problema suma.

Isto é normal em programação, e o melhor é aprender logo como resolver.

Abraços,
MArcos.

Re: Problema BIZARRO!!!!

MensagemEnviado: 11 Jun 2007 13:26
por Fábio Pereira
andre_teprom escreveu:
Fenix escreveu: P1=P2=P3=P0=0xFF;


A linguagem 'C' aceita isso ?


Aceita sim ... ;-)

T+

MensagemEnviado: 12 Jun 2007 15:52
por Fenix
brasilma escreveu:Minhas sugestões são as seguintes:

Fazer como "Jack" (o estripador), e ir por partes, ou seja, inicie um novo projeto acrescentando aos poucos as partes do seu programa, até ver a que está dando problema, e ai resolva o problema.

ou

Tentar implementar as rotinas de forma diferente até que o problema suma.

Isto é normal em programação, e o melhor é aprender logo como resolver.

Abraços,
MArcos.


Esse fonte não tem problema, compila e não da erro, mas se eu mudar qualquer coisa, por exemplo, se eu colocar: P0=0xFF; P1=0xFF; P2=0xFF; P3=0xFF; em vez de P0=P1=P2=P3=0xFF ,o programa não vai compilar mais, vai dar erro na linha 73, que é essa: "void func_sobe(int seg) ". mas ela não tem erro!

esse é o problema, eu já tentei compilar em outro PC e deu o mesmo erro.

Só pra deixar a coisa mais estranha, eu copiei o fonte q postei aqui pra editar na Escola e agora compilo, com as alterações sem problema!

Achoo que "resolvi" o problemas, se der o erro denovo volto aqui.