Autor Tema: Problemas con los puertos en PIC12F629 con CCS C  (Leído 3729 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Problemas con los puertos en PIC12F629 con CCS C
« en: 12 de Febrero de 2012, 19:52:56 »
Hola a todos, tengo un problema con un pic 12F629 resuta que he hecho un código para un pic16F876 y va prefecto y lo he intentado migrar a un pic 12F629 y tengo problemas con los puertos, he leído varios hilos al respecto pero no me funcionaron las soluciones.

el código es este:
Código: [Seleccionar]
// Declaraciones de Post-Procesado
      #include <12f629.h>
     // #device ICD=TRUE     //Con esta instruccióin el proyecto solo funciona si está conectado el ICD
      
      #FUSES HS,nowdt,noprotect
      #USE delay(clock=4000000)

      /*#define _TONES.C         //Modificacion de los pines de la Librería para los tonos de los botones
      #define TONE_PIN  PIN_A3 //Definición del pin del zumbador
      #include <TONES.C>       //Librería de tonos
      */
    
      #USE STANDARD_IO (A)
      


//****************************Definiciones de pines***********************
      #define telefono PIN_A5   //Contacto del cable telefónico
      #define pulsador PIN_A6  //Pulsador de desactivación
      #define sirena PIN_A7   //Señal de alarma
    
//****************************Declaraciones Globales**********************
int flag_segundos = 0;
int flag_RB = 0;
int tele = 0;
int pulsa = 0;
long milisegundos = 0;

//***************************Inte3rrupciones*******************************

#int_TIMER0
  void TIMER0_isr(){
        long limitemlseg=999;
        
        
     if(pulsa==1){   //Si pulsadorstart está pulsado se ejecuta la rutina siguiente
        if((++milisegundos > limitemlseg) || (milisegundos == limitemlseg)){ //Decrementamos milisegundos hasta que sea mayor que 999
            milisegundos = 0; //cargamos milisegundos con el valor 0 para un proximo conteo
             flag_segundos = 1; //Activamos la bandera de interrupción
     }  
    }  
  }
void main(){
   int segundos = 0;
   int minutos = 0;
   int horas = 0;
   int limitepulsador=1;
  
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16); //configuración del timer 2 para el cronómetro
   set_timer0 (0x1B);
   enable_interrupts(INT_TIMER0);  //habilitamos las interrupciones del timer 2
  
   enable_interrupts(global);   //Activamos las interrupciones globales sin esto no funcionan las interrupciones ni timer
  
   output_low(sirena);  //apagamos la bomba de vacío

   do{
  
   //**************************Rutina de contactos*******************************
      if(input(telefono)==0){  //si se cierra el contacto de la línea telefónica
       delay_ms(20);           //Un retraso para evitar rebotes del pulsador
         if(input(telefono)==0){ //si sigue cerrado el contacto de la línea teleónica
            tele=1;                 //Se incrementa la variable tele
         }
        }
        else tele=0;
          
    if(input(pulsador)==0){  //si accionamos el pulsador
       delay_ms(20);           //Un retraso para evitar rebotes del pulsador
         if(input(pulsador)==0){ //si sigue cerrado el pulsador
            pulsa++;                 //Se incrementa la variable tele
            if(pulsa > limitepulsador){   //Si la variable pulsa es mayor que límitepulsador
               pulsa = 0;                // se pone la variable tele a 0
             }
            }
          }
  
//********************************Rutina de alarma*********************************      
  
         if(tele==1){
             output_high(sirena);
         }
           else{
             output_low(sirena);
       }
       if(tele==0 && pulsa==1){//
          milisegundos=30;
          pulsa=0;
       }
      
       while(tele==1 && pulsa==1 && segundos!=10){ //Mientras la línea este activada y minutos no haya llegado a 1 se ejecuta
             if(flag_segundos==1){
              flag_segundos = 0;    
              if((++segundos > 59)||(segundos==59)){
                 segundos = 0;
                 if((++minutos > 59)||(minutos==59)){
                    minutos = 0;
                    if((++horas > 1)||(horas==1)){
                      horas = 0;
                 }
               }
             }
           }
           if(segundos==10){
             segundos = 0;
             minutos = 0;
             horas = 0;
             pulsa = 0;
           }
            output_low(sirena);
         }
   }
   while(TRUE);
}




Al compilar el código que he hecho me da error en todos los pines y no se como puedo solucionarlo.

Utilizo el CCS C versión 4.107 al compilar me sale esto:

Código: [Seleccionar]
***Error 12 “Alarma_CPD PIC12F629.c” Line 84(21,22): Undefined identifier PIN_A7

***Error 12 “Alarma_CPD PIC12F629.c” Line 84(22,23): Undefined identifier PIN_A6

***Error 12 “Alarma_CPD PIC12F629.c” Line 84(27,28): Undefined identifier PIN_A6

***Error 12 “Alarma_CPD PIC12F629.c” Line 84(32,33): Undefined identifier PIN_A7

Etc…etc..


El código no está terminado y tengo que solucionar unas cosillas.
« Última modificación: 12 de Febrero de 2012, 19:58:48 por Thulsa Doom »
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problemas con los puertos en PIC12F629 con CCS C
« Respuesta #1 en: 12 de Febrero de 2012, 21:24:02 »
  Recuerdo que en el datasheet el 12C509 el puerto figuraba como GPIO y no como A o B. Tal vez buscando en el archivo .h del pic en cuestión puedas ver si figura como PIN_A0 o algo parecido a GPIO_0
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado marqueses

  • PIC12
  • **
  • Mensajes: 80
    • Alberto Marqueses Blog
Re: Problemas con los puertos en PIC12F629 con CCS C
« Respuesta #2 en: 13 de Febrero de 2012, 07:02:28 »
El 12F629 es de 8 pines, dos de ellos son Vcc y GND, por lo que quedan 6 pines de I/O. Por lo tanto, estos pines van de PIN_A0 a PIN_A5, es por ello que te salta el error, estas inventándote pines hay jejeje  ;-)
Alberto Aragón Marqueses
albertomarqueses.wordpress.com

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: Problemas con los puertos en PIC12F629 con CCS C
« Respuesta #3 en: 13 de Febrero de 2012, 13:32:06 »
jajaja ya me di cuenta, en cuanto el compañero me dijo que mirara el .h me di cuenta y lo solucione ahora el pic va perfecto y hace lo que yo quiero lo que en nada se le llena la ram jajajaja,
Sias y me tiré unas horas dándole vueltas y comiéndome el coco sin saber que era lo que pasaba, seguro que esta no será la única vez que me pase una chorrada como esta
saludos y gracias
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...


 

anything