Autor Tema: error en el programa  (Leído 2017 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado markos4live

  • PIC10
  • *
  • Mensajes: 4
error en el programa
« en: 31 de Mayo de 2005, 14:23:00 »
Hola, el problema que tengo es que me da error el programa cuando le doy a build en el MPLAB, me da error en el if(PORTD_RD2==0), y no se porque.
el programa que tengo es el siguiente:


#include<16f877.h>
#include<reg.h>
#fuses HS,NOWDT,NOPROTECT,NOPUT,NOBROWNOUT,NOLVP
#use delay(clock=20000000)
#define ON 1;
#define OFF 0;



unsigned int contador=0;
void init_SEMAFORO(void);      //declaramos la variable semaforo
void init_tmr1(void);         //declaramos la variable reloj
void cambiar_semaforo(void);      //declaramos la variable cambio de semaforo

main()
{
   TRISB=0b00000100;      
   init_SEMAFORO();               //inicializamos semaforo
   INTCON_GIE=1;                  //permitimos interrupciones
   INTCON_PEIE=1;
   while(1){
         if(PORTB_RB2==0)         //si vale 0 habilitar interrupciones
            {
               init_tmr0();      //inicialimos temporizador
            }
   }
void init_SEMAFORO(void)   //subprograma inicial del semaforo
{
   TRISD=0b00000000;   // Puerto D salidas
   PORTD=0b00000000;   // Puerto D Salidas
   PORTD_RD2=ON;      //Lo enciendo (rojo)
   PORTD_RD5=ON;      //Lo enciendo (verde)

}

void init_tmr1 (void)
{
   INTCON_T0IE=1;      //permitimos interrupciones en el reloj
   contador=1;      //ponemos a 1 el contador

   OPTION_REG_T0CS=0;   //ponemos el postcaler a 1
   OPTION_REG_T0SE=0;
   OPTION_REG_PSA=0;
   OPTION_REG_PS2=1;   //configuramos el prescaler a 256
   OPTION_REG_PS1=1;
   OPTION_REG_PS0=1;

}

void cambiar_semaforo(void)      //subprograma para cambiar el semaforo de estado
{
   
   if(PORTD_RD2==ON){      //condicion de cumplimiento, si...
      PORTD_RD2=OFF;      //apagamos este led
      PORTD_RD3=ON;      //encendemos este led
   }
   else{            //sino...
      PORTD_RD2=ON;      //encendemos este led
      PORTD_RD3=OFF;      //apagamos este led
   }
   if(PORTD_RD4==ON){      //condicion de cumplimiento, si...
      PORTD_RD4=OFF;      //apagamos este led
      PORTD_RD5=ON;      //encendemos este led
   }
   else{            //sino...
      PORTD_RD4=ON;      //apagamos este led
      PORTD_RD5=OFF;      //encendemos este led
   }
}

#INT_TIMER1
void interr_TMR0(void)      //se produce cada 0.0131
{
   if (contador<750)         //750*0.0131 =9.8 segundos
   {
      contador++;
   }
   else{
      cambiar_semaforo();            
      contador=1;
   }
   INTCON_T0IF=0;
}

Desconectado El_Coach

  • PIC12
  • **
  • Mensajes: 79
RE: error en el programa
« Respuesta #1 en: 31 de Mayo de 2005, 16:42:00 »
El compilador que utilizas es el CCS ?
"Hazlo o no lo hagas, pero nunca lo intentes"

Desconectado roc364

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 108
RE: error en el programa
« Respuesta #2 en: 31 de Mayo de 2005, 18:12:00 »
Que error te da exactamente??
Hay solo 10 tipos de personas, los que entienden el codigo binario, y los que no.

Viva La Patagonia Argentina!!

Desconectado roc364

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 108
RE: error en el programa
« Respuesta #3 en: 31 de Mayo de 2005, 18:15:00 »
aparte no encuentro en ningun lado del codigo que diga "if (PORTD_RD2==0)"
 
Hay solo 10 tipos de personas, los que entienden el codigo binario, y los que no.

Viva La Patagonia Argentina!!

Desconectado markos4live

  • PIC10
  • *
  • Mensajes: 4
RE: error en el programa
« Respuesta #4 en: 01 de Junio de 2005, 10:34:00 »
la función if (PORTB_RB2==0) esta dentro del subprograma cambiar semaforo:

void cambiar_semaforo(void) //subprograma para cambiar el semaforo de estado
{

if(PORTD_RD2==ON){ //condicion de cumplimiento, si...
PORTD_RD2=OFF; //apagamos este led
PORTD_RD3=ON; //encendemos este led
}
else{ //sino...
PORTD_RD2=ON; //encendemos este led
PORTD_RD3=OFF; //apagamos este led
}
if(PORTD_RD4==ON){ //condicion de cumplimiento, si...
PORTD_RD4=OFF; //apagamos este led
PORTD_RD5=ON; //encendemos este led
}
else{ //sino...
PORTD_RD4=ON; //apagamos este led
PORTD_RD5=OFF; //encendemos este led
}
}

y el error que me da es el siguiente:
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:Archivos de programaPICCCcsc.exe" semaf.c
Error[58]   T:PAEEESB02PROGRA~1SEMAF.C 53 : Expecting a close paren
Halting build on first failed translation as user preferences indicate.
BUILD FAILED: Wed Jun 01 17:36:17 2005
no entiendo pq dice que esta esperando a cerrar un parentesis.
Y si, el compilador que uso es el CCS

Desconectado roc364

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 108
RE: error en el programa
« Respuesta #5 en: 01 de Junio de 2005, 19:59:00 »
markoboy: yo lo unico que encuentro, es que te estaria faltando una llave } en el final de la funcion main...  proba con eso a ver que pasa!!!
vos estas usando el compilador CCS desde el MPLAB no???
probaste de compilarlo directamente con el CCS?
Hay solo 10 tipos de personas, los que entienden el codigo binario, y los que no.

Viva La Patagonia Argentina!!

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: error en el programa
« Respuesta #6 en: 01 de Junio de 2005, 23:41:00 »
La función if (PORTB_RB2==0) no es tal, es if (PORTB_RD2==1)

De todas formas el error es que le falta cerrar la llave del main

Compilar desde MPLAB o desde CCS es lo mismo (en el MPLAB solo se dan los paths de los compiladores)

Un saludo


 

anything