Autor Tema: problema al usar #define para definir nombres para los puertos  (Leído 5973 veces)

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

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
problema al usar #define para definir nombres para los puertos
« en: 25 de Agosto de 2009, 01:26:16 »
el programa que transcribo más abajo me da un warning y varios errores que no logro quitar

Todo comenzó cuando decidí usar los puertos con #defines para nombrarlos con un nombre. Por ejemplo:
#define tecla_up = PIN_A0
#define tecla_down = PIN_A1
#define tecla_select = PIN_A2




// lcd.c //////////////////////////////////////////////////////////////////////
// #define use_portb_lcd TRUE // para usar port D comentar esta linea
#include <lcd.c> // librería del lcd

///////////////////////////////////////////////////////////////////////////////


// Libreria ds1307.c //////////////////////////////////////////////////////////

#define RTC_SDA PIN_C4 // configura el pin C4 como SDA
#define RTC_SCL PIN_C3// configura el pin C3 como SCL

#define USE_INTERRUPTS 1

#include <libreria_rtc.c>

///////////////////////////////////////////////////////////////////////////////


// VARIABLES PARA configurar puertos

#define tecla_up = PIN_A0
#define tecla_down = PIN_A1
#define tecla_select = PIN_A2


#define PinParaOndaCuadrada = PIN_B4
#define PTT = PIN_B1
#define LedControl = PIN_B0




///VARIABLES GLOBALES




...
« Última modificación: 26 de Agosto de 2009, 00:27:02 por jukinch »
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: problema al usar #define para definir nombres para los puertos
« Respuesta #1 en: 25 de Agosto de 2009, 01:29:03 »
acá va el código que no me da error.
Código: C
  1. ///////////////////////////////////////////////////////////////////////////////
  2. //   Autor:  JUKINCH para el foro todopic                                    //
  3. //   Fecha:  
  4. //                                                                           //
  5. //   Programa:  proyecto zorras - CON rtc ds1307 y LCD 2*16                   //
  6. //   Version:   0.1                                                          //
  7. //                                                                           //
  8. //   Dispositivo: PIC 16F877A         Compilador:    CCS vs4.023             //
  9. //   Entorno IDE: ccs                                                        //
  10. //   PIC: 16f877a                                                            //
  11. ///////////////////////////////////////////////////////////////////////////////
  12.  
  13.  
  14. //    Conexión del LCD al Pic (configuración de pines)
  15. //
  16. //       PIC           LCD
  17. //
  18. //     PORTd.0          E
  19. //     PORTd.1          RS
  20. //     PORTd.2          R_W
  21. //
  22. //
  23. //     PORTd.4          D4
  24. //     PORTd.5          D5
  25. //     PORTd.6          D6
  26. //     PORTd.7          D7
  27. /////////////////////////////////////////////////////////////////////////////
  28. //      COMO ALIMENTAR EL LCD
  29.  
  30. //     pin VDD a 5v
  31. //     pin VSs a gnd
  32. //     pin VO a gnd o resistor para fijar contraste
  33.  
  34. //     COMO ENCENDER LA LUZ DEL BACKLIGHT
  35.  
  36. //     PIN 15 a 5v
  37. //     pin 16 a gnd
  38. /////////////////////////////////////////////////////////////////////////////
  39. //      COMO CONECTAR EL RTC. DS1307
  40. //
  41. //       pin 1 y 2 poner un cristal de 36768khz  
  42. //       pin 3 bateria vcc 3V
  43. //       pin 4 gnd
  44. //       pin 5 SDA al SDA del pic 16f877a (Es el pin 23)y una resistencia de 10k a VCC
  45. //       pin 6 SCL al SCL del pic 16f877a (Es el pin 18)y una resistencia de 10k a VCC
  46. //       pin 7 no conectado
  47. //       pin 8 a VCC 5V
  48. /////////////////////////////////////////////////////////////////////////////
  49. //       3 botones para modificar hora en rA 0,1,2 con resistencia pull up
  50. //
  51. /////////////////////////////////////////////////////////////////////////////
  52.  
  53. // LA SALIDA DE EMISION MORSE AL TRANSMISOR ES POR RB.4
  54.  
  55. /////////////////////////////////////////////////////////////////////////////
  56.  
  57.  
  58.  
  59.  
  60.  
  61. // DIRECTIVAS DEL PREPROCESADOR //////////////////////////////////////////////  
  62. #include <16f877a.h>            //pic a utilizar          
  63. #fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
  64. #use delay (clock=4000000)         //Fosc=4Mhz
  65.  
  66.  
  67.  
  68. // lcd.c //////////////////////////////////////////////////////////////////////
  69. // #define use_portb_lcd TRUE // para usar port D comentar esta linea
  70. #include <lcd.c> // librería del lcd
  71.  
  72. ///////////////////////////////////////////////////////////////////////////////
  73.  
  74.  
  75. // Libreria ds1307.c //////////////////////////////////////////////////////////
  76.  
  77. #define RTC_SDA PIN_C4 // configura el pin C4 como SDA
  78. #define RTC_SCL PIN_C3// configura el pin C3 como SCL
  79.  
  80. #define USE_INTERRUPTS 1
  81.  
  82. #include <libreria_rtc.c>
  83.  
  84. ///////////////////////////////////////////////////////////////////////////////
  85.  
  86. ///VARIABLES GLOBALES
  87.  
  88.  
  89.  
  90. // VARIABLES PARA EL RTC
  91. int sec=0;
  92. int min=0;
  93. int hrs=0;
  94. int day=0;
  95. int month=0;
  96. int yr=0;
  97. int dow=0;
  98. /////////////////////////////////////////////////////////////////////////////
  99. // VARIABLES PARA EL MORSE
  100.  
  101.  
  102. const int unidad=140; // la unidad en milisegundos para delay_ms se debe
  103.                       // declarar como constante
  104.                       // porque sinó sobrepasa el valor permitido para usar como
  105.                       // variable
  106.  
  107.  
  108. //------------ HORA DE ARRANQUE -----------------//
  109.  
  110.  
  111. int horaStartMorse=0; // hora de arranque
  112. int minutoStartMorse=0; // minuto de arranque
  113. int segundoStartMorse=0; // segundo morse
  114. //------------ HORA DE FINAL -----------------//
  115. int horaStopMorse=0; // hora de detención
  116. int minutoStopMorse=0; // hora de detención
  117.  
  118. int horaStartProximo=0;
  119. int minutoStartProximo=0; // VARIABLE PARA COMPUTO DE 5 minutos después de arranque
  120. int MinutosEntreTxyTx=0;
  121. /////////////////////////////////////////////////////////////////////////////
  122. //DEFINICIONES DE FUNCIONES
  123.  
  124. void oscilador(void);
  125. void punto(void);
  126. void espacioentrecaracter(void);
  127. void raya(void);
  128. void espacioentreletra(void);
  129. void espaciopal(void);
  130.  
  131.  
  132. void muestrahora(void);
  133. void configuradigitoshora(void);
  134.  void configuradigitosminutos(void);
  135. void configuradigitossegundos(void);
  136.   void  muestrahorastartfox(void);
  137.  
  138. void configurahorastartfox(void);  
  139. void configuraminutosstartfox(void);  
  140.  
  141. void configurahorastopfox(void);        
  142. void configuraminutostopfox(void);        
  143. void muestrahorastopfox(void);            
  144. void   configuraminentreTxyTx(void );
  145.  
  146.  
  147. //------Programa principal--------------------------------------
  148.  
  149. void main(void)
  150. {
  151.  
  152. // VARIABLES LOCALES DE MAIN
  153.    int i=0; // variable para for para probar parpadeo de led en port b.1
  154.    int bucle=0; // variable para for Cantidad de veces que dice MOE
  155.    int32 bucleoscilafinal=1; // // variable para el for del tono final
  156.    
  157. //------Puertos y pines-----------------------------------------
  158.    set_tris_a(0b11111);                 // puerto a como ENTRADAS
  159.    set_tris_b(0b00000000);              // puerto b como salidas
  160.    
  161.  
  162.  
  163. //----------descomentar para inicializar hora en rtc----------------------------
  164.                //    Inicializa DS1307
  165.                   ds1307_init(DS1307_OUT_ENABLED | DS1307_OUT_1_HZ);
  166.                   sec=0;
  167.                    min=0;
  168.                 hrs=0;
  169.                 day=1;
  170.                   month=1;
  171.                    yr=1;
  172.                    dow=1; //dia de la semana
  173.                // configura hora inicial DS1307
  174.                 ds1307_set_date_time(day,month,yr,dow,hrs,min,sec);
  175. //-----------------------------------------------------------------------------            
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192. // 1 ------------------------- CONFIGURAR ZORRA -----------------------------
  193.  
  194.     lcd_init();         //-----Inicializo el LCD-------------------------------
  195.     lcd_putc('\f');     //-borro la pantalla-----------------------------------
  196.     lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.     printf(lcd_putc,"CONFIGURAR ZORRA");
  215.  
  216.  
  217. while (1)  // bucle MENÚ principal
  218.    {
  219.               if (input(PIN_A2) ) // controla el puerto A2 PARA PASAR OPCION SETUP
  220.                    {
  221.                    delay_ms(150);
  222.                    GOTO ConfiguraHoraRTC;
  223.                    };
  224.    }
  225.    
  226.  
  227. // 2 ------------------------- CONFIGURAR HORA RTC-----------------------------
  228. ConfiguraHoraRTC:    // OPCION 1) CONFIGURA HORA
  229. lcd_putc('\f');     //-borro la pantalla-----------------------------------
  230. lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
  231. printf(lcd_putc,"HORA RTC");
  232. while (1)  // bucle CONFIGURA digitos HORA RTC
  233.       {
  234.            muestrahora();
  235.            delay_ms(10);    
  236.            if (input(PIN_A2) ) // controla el puerto A2 PARA PASAR OPCION SETUP
  237.             {delay_ms(150);
  238.             GOTO ConfiguraMinutosRTC;
  239.             };
  240.             configuradigitoshora();
  241.       }
  242.      
  243.  
  244. // 3 ------------------------- CONFIGURAR MINUTOS RTC--------------------------
  245. ConfiguraMinutosRTC:
  246. lcd_putc('\f');     //-borro la pantalla-----------------------------------
  247. lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
  248. printf(lcd_putc,"MINUTOS RTC");
  249.  
  250.  
  251. while (1)  // bucle CONFIGURA digitos minutos RTC
  252.    {
  253.      delay_ms(10);
  254.      muestrahora();
  255.      if (input(PIN_A2) ) // controla el puerto A2 PARA PASAR OPCION SETUP
  256.       {delay_ms(150);
  257.       GOTO ConfiguraSegundosRTC;
  258.       };
  259.       configuradigitosminutos();    
  260.    }

 
 // 4 ------------------------- CONFIGURAR SEGUNDOS RTC ------------------------
 ConfiguraSegundosRTC:
lcd_putc('\f');     //-borro la pantalla-----------------------------------
lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
printf(lcd_putc,"SEGUNDOS RTC");

 while (1)  // bucle CONFIGURA digitos segundos RTC
      {

         muestrahora();
           delay_ms(10);      
           if (input(PIN_A2) ) // controla el puerto A2 PARA PASAR OPCION SETUP
            {delay_ms(150);
            GOTO ConfiguraHoraStartZorra;
            }
      
            configuradigitossegundos();          
      }


// 5 ------------------------- CONFIGURAR HORA START ------------------------
ConfiguraHoraStartZorra:

            lcd_putc('\f');     //-borro la pantalla-----------------------------------
                lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
                printf(lcd_putc,"HORA START TX");
            
            lcd_gotoxy(1,2);    //----pongo el cursor en caracter 1 de la línea 2----
            
            
            while (1)  // bucle CONFIGURA digitos Hora Start Fox
               {
              
              if (input(PIN_A2) ) // controla el port.A2 PARA PASAR OPCION SETUP
                        {
                        delay_ms(150);
                       GOTO ConfiguraMinutosStartZorra;
                        }
        
               configurahorastartfox();
            delay_ms(10);
            }
      

 // 6 ------------------------- CONFIGURAR MINUTOS START -----------------------

ConfiguraMinutosStartZorra:

lcd_putc('\f');     //-borro la pantalla-----------------------------------
    lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
    printf(lcd_putc,"MINUTOS START TX");


while (1)  // bucle CONFIGURA digitos minutosStart Fox
         {
        
              if (input(PIN_A2) ) // controla el puerto A2 PARA PASAR OPCION SETUP
                     {
                       delay_ms(150);
                       GOTO ConfiguraHoraStopZorra;
                     }
              configuraminutosstartfox();      
         }
        
 // 7 ------------------------- CONFIGURAR HORA STOP  -----------------------
ConfiguraHoraStopZorra:

lcd_putc('\f');     //-borro la pantalla-----------------------------------
    lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
    printf(lcd_putc,"HORA STOP TX");

        lcd_gotoxy(1,2);    //----pongo el cursor en caracter 1 de la línea 2----
         printf(lcd_putc,"%u",horaStopMorse);
         printf(lcd_putc,":");
         printf(lcd_putc,"%u",minutoStopMorse);

while (1)  // bucle CONFIGURA digitos Hora Stop Fox
         {
        
              if (input(PIN_A2) ) // controla el puerto A2 PARA PASAR OPCION SETUP
               {delay_ms(150);
               GOTO ConfiguraMinutosStopFox;
               };

         configurahorastopfox();
         }


// 8 ------------------------- CONFIGURAR MINUTOS STOP  -----------------------
ConfiguraMinutosStopFox:

lcd_putc('\f');     //-borro la pantalla-----------------------------------
    lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
    printf(lcd_putc,"MINUTOS STOP TX");

        lcd_gotoxy(1,2);    //----pongo el cursor en caracter 1 de la línea 2----
                              printf(lcd_putc,"%u",horaStopMorse);
                              printf(lcd_putc,":");
                              printf(lcd_putc,"%u",minutoStopMorse);


while (1)  // bucle CONFIGURA digitos minutos Stop Fox
         {
        
              if (input(PIN_A2) ) // controla el puerto A2 PARA PASAR OPCION SETUP
               {delay_ms(150);
               GOTO ConfiguraMinutosEntreTxyTx;
               };
         configuraminutostopfox();
         }


// 9 ------------------------- CONFIGURAR MINUTOS entre Tx  -----------------------
ConfiguraMinutosEntreTxyTx:

lcd_putc('\f');     //-borro la pantalla-----------------------------------
    lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
    printf(lcd_putc,"Tiempo.. Tx y Tx");
        lcd_gotoxy(1,2);    //----pongo el cursor en caracter 1 de la línea 2----
                              printf(lcd_putc,"minutos: ");
                              printf(lcd_putc,"%u",MinutosEntreTxyTx);
                              
                              
while (1)  // bucle cantidad de minutos entre tx y tx
         {
        lcd_gotoxy(1,2);    //----pongo el cursor en caracter 1 de la línea 2----
                              printf(lcd_putc,"minutos:        ");
        lcd_gotoxy(9,2);    //----pongo el cursor en caracter 1 de la línea 2----                              
         printf(lcd_putc,"%u",MinutosEntreTxyTx);
         delay_ms(15);

              if (input(PIN_A2) ) // controla el puerto A2 PARA PASAR OPCION SETUP
               {delay_ms(150);
               GOTO EsperaInicioZorra;
               };
         configuraminentreTxyTx();
         }


 // 9 ------------------------- ESPERA INICIO DE ZORRA  -----------------------
EsperaInicioZorra:
{

// ESCRIBE EN LINEA 1 DEL LCD EL TEXTO ESPERANDO INICIO  
    lcd_init();         //-----Inicializo el LCD-------------------------------
    lcd_putc('\f');     //-borro la pantalla-----------------------------------
    lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
    printf(lcd_putc,"ESPERANDO INICIO");

// PASA EL CURSOR A LA 2 DEL LCD---------------------------------------------
    
   lcd_gotoxy(1,2);    //----pongo el cursor en caracter 1 de la línea 2-----
 
}

 COMPRUEBA_ARRANQUE:
    while (1)  // bucle muestra HORA y comprueba la hora DE ARRANQUE de ZORRA //
      {        
      
       muestrahora();
      lcd_gotoxy(10,2);
    

         if (horaStartMorse<10)
                {
                printf(lcd_putc,"0");
                printf(lcd_putc,"%u",horaStartMorse);
                }
         else
                {
                printf(lcd_putc,"%u",horaStartMorse);
                }
         printf(lcd_putc,":");
           delay_ms(10);
         if (minutoStartMorse<10)
                {
                printf(lcd_putc,"0");
                printf(lcd_putc,"%u",minutoStartMorse);
                }
         else
                {
                printf(lcd_putc,"%u",minutoStartMorse);
                }                

                    lcd_gotoxy(1,2);
    
    
    
    
    delay_ms(200);
                    
                if ((horaStartMorse==hrs) && (minutoStartMorse==min)&& (segundoStartMorse==sec) )
                     GOTO EMITE;
      }
        
 EMITE:        
    { // label ARRANCA emisión de ZORRA
     lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
    printf(lcd_putc,"TRANSMITIENDO...");
    lcd_gotoxy(1,2);

output_HIGH(PIN_B0);     // ACTIVA PTT



         {// EMITE palabra moe en CODIGO MORSE EN PORT RB.1
            for (bucle=1;bucle<9;++bucle)
                   {   // letra M
                       raya();                     // unidad(140)*3=420 ms
                        muestrahora();
                       espacioentrecaracter();     // unidad(140)  =140 ms
                       muestrahora();
                       raya();                     // unidad(140)*3=420 ms
                       muestrahora();
                       espacioentreletra();        // unidad(140)*3=420 ms

                       // Letra O
                       raya();                     // unidad(140)*3=420 ms
                       muestrahora();
                       espacioentrecaracter();     // unidad(140)  =140 ms
                       muestrahora();
                       raya();                     // unidad(140)*3=420 ms
                       muestrahora();
                       espacioentrecaracter();     // unidad(140)  =140 ms
                       muestrahora();
                       raya();                     // unidad(140)*3=420 ms
                       muestrahora();
                       espacioentreletra();        // unidad(140)*3=420 ms
                                              // Letra e
                       punto();                    // unidad(140)  =140 ms
                       muestrahora();
                       espaciopal();               // unidad(140)*7=980 ms

                    }


                                              // subtotal          4480 ms

                                          // total * 8 BUCLES =   35840 ms

                                              // END OF MESSAGE
                
                       punto();                          // unidad(140)  =140 ms
                       muestrahora();
                       espacioentrecaracter();           // unidad(140)  =140 ms
                       raya();                           // unidad(140)*3=420 ms
                       muestrahora();
                       espacioentrecaracter();           // unidad(140)  =140 ms
                       punto();                          // unidad(140)  =140 ms
                       muestrahora();
                       espacioentrecaracter();           // unidad(140)  =140 ms
                       raya();                           // unidad(140)*3=420 ms
                       muestrahora();
                       espacioentrecaracter();           // unidad(140)  =140 ms
                       punto();                          // unidad(140)  =140 ms
                       muestrahora();
                       espaciopal();                     // unidad(140)*7=980 ms
      
                                              // total             2800 ms


                                             // Resto para completar el minuto
                                             // 35840 ms + 2800 = 38640 ms
                                             // 60000 ms - 38640 ms = 21360 ms
                              


                       // COMPLETA EL MINUTO CON UN TONO AUDIBLE durante 21360 ms
                       // TONO AUDIBLE HASTA COMPLETAR EL MINUTO //
                       for (bucleoscilafinal=1;bucleoscilafinal<=21000;bucleoscilafinal++)
                          {
                             output_high(PIN_B4);
                             delay_us(500);
                  // COMENTE PARA PROBAR ERROR muestrahora();
                             output_low(PIN_B4);
                             delay_us(500);
                          }
                           //21360 // repite hasta completar
                           // el minuto con un tono fijo
                           // puse 21000 para tener resto de silencio por si me paso del minuto
          

output_LOW(PIN_B0);     // DESACTIVA PTT



          ds1307_get_time(hrs,min,sec); // lee hora DS1307
          
          
          
          ////////////////////////////////////////////////ver esto/////////////
                    ////////////////////////////////////////////////ver esto/////////////
                              ////////////////////////////////////////////////ver esto/////////////
                                        ////////////////////////////////////////////////ver esto/////////////
                                                  ////////////////////////////////////////////////ver esto/////////////
          if ((min+MinutosEntreTxyTx)<=59)
              {
              minutoStartProximo=min+MinutosEntreTxyTx;
              horaStartProximo=hrs;
              }
          Else {
                minutoStartProximo=0;
                
                if (23==hrs)
                           {
                           horaStartProximo=0;
                           }
                    else
                           {horaStartProximo=hrs+1;
                           }
                }
        
          
          goto COMPRUEBA_CUATROMINUTOS;
         }// TERMINA DE EMITIR palabra moe en CODIGO MORSE EN PORT RB.1

    } // TERMINA label ARRANCA ZORRA
            
 COMPRUEBA_CUATROMINUTOS:

     lcd_putc('\f');     //-borro la pantalla-----------------------------------
     lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
    printf(lcd_putc,"ESPERANDO...");
    while (1)  // bucle muestra HORA y comprueba LOS CUATRO MINUTOS DE REARRANQUE de ZORRA //
      {        
                  muestrahora();
                  lcd_gotoxy(11,2);
    

// muestra hora nuevo tx -----------------------------------------------------
         if (horaStartProximo<10)
                {
                printf(lcd_putc,"0");
                printf(lcd_putc,"%u",horaStartProximo);
                }
         else
                {
                printf(lcd_putc,"%u",horaStartProximo);
                }
         printf(lcd_putc,":");
           delay_ms(10);
         if (minutoStartProximo<10)
                {
                printf(lcd_putc,"0");
                printf(lcd_putc,"%u",minutoStartProximo);
                }
         else
                {
                printf(lcd_putc,"%u",minutoStartProximo);
                }                

         lcd_gotoxy(1,2);                        
                    delay_ms(200);


// comprueba si debe finalizar transmisión----------------------------------

              if ((hrs>=horaStopMorse) && (min>=minutoStopMorse) )
                     GOTO FINALTRANSMISION;  
                
                if (min==minutoStartProximo) //COMPRUEBA MINUTO 0 O 5 PARA RECOMENZAR A EMITIR
                     GOTO EMITE;
      }
            
            
            
  


FINALTRANSMISION:
   {
   lcd_putc('\f');     //-borro la pantalla-----------------------------------
   lcd_gotoxy(1,1);    //----pongo el cursor en caracter 1 de la línea 1------
      printf(lcd_putc,"FIN TX");
       while (1)
         {        
lcd_gotoxy(1,2);
       muestrahora();
       delay_ms(200);
         }
   }







  
}// final de main
// FIN DE PROGRAMA ////////////////////////////////////////////////














////////////////////////////////////////////////////////////////////////////////
//
// programación de las funciones declaradas más arriba para formar oscilador,
// punto, raya, espacios, tono final.
//
////////////////////////////////////////////////////////////////////////////////

    

// función oscilador
// genera una onda cuadrada de 1000hz
void oscilador(void)
{
         int bucleoscilador=0;

         do
                  {
                    output_high(PIN_B4);
                    delay_us(500);
                    output_low(PIN_B4);
                    delay_us(500);
                   bucleoscilador++;
                  }

                  while (bucleoscilador<unidad); // repite hasta valor
                                                 // de la constante unidad
}






void raya(void)
{
      oscilador();
      oscilador();
      oscilador();
}




void punto(void)
{
      oscilador();
}



// definición de espacios ///////////////////////////////////


void espacioentrecaracter(void)
{
   delay_ms(unidad);
}


void espacioentreletra(void)
{
   delay_ms(unidad*3);
}

void espaciopal(void)
{
   delay_ms(unidad*7);
}












void muestrahora(void)
{
ds1307_get_time(hrs,min,sec); // lee hora DS1307

        lcd_gotoxy(1,2);    //----pongo el cursor en caracter 1 de la línea 2----
            printf(lcd_putc,"                "); // Borro segundo renglón del lcd
        lcd_gotoxy(1,2);
        if (hrs<10)
                {
                printf(lcd_putc,"0");
                printf(lcd_putc,"%u",hrs);
                }
         else
                {
                printf(lcd_putc,"%u",hrs);
                }
         printf(lcd_putc,":");

         if (min<10)
                {
                printf(lcd_putc,"0");
                printf(lcd_putc,"%u",min);
                }
         else
                {
                printf(lcd_putc,"%u",min);
                }                

         printf(lcd_putc,":");

         if (sec<10)
                {
                printf(lcd_putc,"0");
                printf(lcd_putc,"%u",sec);
                }
         else
                {
                printf(lcd_putc,"%u",sec);
                }                
}







void configuradigitoshora(void)
{
 // digitos hora
  
            if (input(PIN_A0) ) // controla el puerto A pin0 incrementa horas
                     {
                     output_toggle(PIN_B0);
                 if (hrs>22)
                         hrs=0;
                     else hrs++;
                          i2c_start();
                          i2c_write(0xD0);
                          i2c_write(0x02);
                          i2c_write(ds1307_bin2bcd(hrs));
                          i2c_stop();
                     delay_ms(150);
                     }
          
           if (input(PIN_A1) ) // controla el puerto A pin1 decrementa horas
                     {
                     output_toggle(PIN_B0);
                          if (hrs>0)hrs--;
                          else hrs=0;
                     i2c_start();
                     i2c_write(0xD0);
                     i2c_write(0x02);
                     i2c_write(ds1307_bin2bcd(hrs));
                     i2c_stop();
                     delay_ms(150);
                     }
      }
      
      
      
      
      
      
      
      
      
      
  void configuradigitosminutos(void)    
           {
           // digito minutos
      
      if (input(PIN_A0) ) // controla el puerto A pin0 incrementa minutos

                     {
                     output_toggle(PIN_B0);
                     if (min>58)
                         min=0;
                     else min++;    
                     i2c_start();
                     i2c_write(0xD0);
                     i2c_write(0x01);
                     i2c_write(ds1307_bin2bcd(min));
                     i2c_stop();
                     delay_ms(150);
                     };
          
      if (input(PIN_A1) ) // controla el puerto A pin1 decrementa minutos

                     {
                     output_toggle(PIN_B0);
                     if (min>0)
                         min--;
                     else min=0;    
                     i2c_start();
                     i2c_write(0xD0);
                     i2c_write(0x01);
                     i2c_write(ds1307_bin2bcd(min));
                     i2c_stop();
                     delay_ms(150);
                     };
      }
      
      
      
      
      
      
      
void configuradigitossegundos(void)      
{
      // digito segundos
          if (input(PIN_A0) ) // controla el puerto A pin0 incrementa segundos
                     {
                     output_toggle(PIN_B0);
                     if (sec>58)
                         sec=0;
                     else sec++;
                                        
                          i2c_start();
                          i2c_write(0xD0);
                          i2c_write(0x00);
                          i2c_write(ds1307_bin2bcd(sec));
                          i2c_stop();
                     delay_ms(150);
                     }
          if (input(PIN_A1) ) // controla el puerto A pin1 decrementa segundos
                     {
                     output_toggle(PIN_B0);
                     if (sec>0)
                         sec--;
                     else sec=0;
                    
                    
                          i2c_start();
                          i2c_write(0xD0);
                          i2c_write(0x00);
                          i2c_write(ds1307_bin2bcd(sec));
                          i2c_stop();
                     delay_ms(150);
                     }

      }
      
      
      
void muestrahorastartfox(void)            
     {
      lcd_gotoxy(1,2);    //----pongo el cursor en caracter 1 de la línea 2----
        lcd_gotoxy(1,2);
           delay_ms(10);
         if (horaStartMorse<10)
                {
                printf(lcd_putc,"0");
                printf(lcd_putc,"%u",horaStartMorse);
                }
         else
                {
                printf(lcd_putc,"%u",horaStartMorse);
                }
         printf(lcd_putc,":");
           delay_ms(10);
         if (minutoStartMorse<10)
                {
                printf(lcd_putc,"0");
                printf(lcd_putc,"%u",minutoStartMorse);
                }
         else
                {
                printf(lcd_putc,"%u",minutoStartMorse);
                }                

         printf(lcd_putc,":");

            printf(lcd_putc,"00");
     }
    

void muestrahorastopfox(void)            
     {

      lcd_gotoxy(1,2);    //----pongo el cursor en caracter 1 de la línea 2----
                   delay_ms(10);
         if (horaStopMorse<10)
                {
                printf(lcd_putc,"0");
                printf(lcd_putc,"%u",horaStopMorse);
                }
         else
                {
                printf(lcd_putc,"%u",horaStopMorse);
                }
         printf(lcd_putc,":");
           delay_ms(5);
         if (minutoStopMorse<10)
                {
                printf(lcd_putc,"0");
                printf(lcd_putc,"%u",minutoStopMorse);
                }
         else
                {
                printf(lcd_putc,"%u",minutoStopMorse);
                }                

         printf(lcd_putc,":");

            printf(lcd_putc,"00");

}


    
void configurahorastartfox(void)
{
    muestrahorastartfox();
      if (input(PIN_A0) ) // controla el puerto A pin0 incrementa hora start morse
                     {
                     output_toggle(PIN_B0);
                     if (horaStartMorse>22)
                         horaStartMorse=23;
                     else horaStartMorse++;
                     delay_ms(150);
             muestrahorastartfox();
                     }

 if (input(PIN_A1) ) // controla el puerto A pin1 decrementa hora start morse
                     {
                     output_toggle(PIN_B0);
                     if (horaStartMorse>0)
                         horaStartMorse--;
                     else horaStartMorse=0;
                     delay_ms(150);
                     muestrahorastartfox();
                     }
}



void configuraminutosstartfox(void)
{
muestrahorastartfox();
 if (input(PIN_A0) ) // controla el puerto A pin0 incrementa minutos start morse
                     {
                     output_toggle(PIN_B0);
                     if (minutoStartMorse>58)
                         minutoStartMorse=59;
                     else minutoStartMorse++;
                     delay_ms(150);
                     muestrahorastartfox();
                     }

 if (input(PIN_A1) ) // controla el puerto A pin1 decrementa minutos start morse
                     {
                     output_toggle(PIN_B0);
                     if (minutoStartMorse>0)
                         minutoStartMorse--;
                     else minutoStartMorse=0;
                     delay_ms(150);
                     muestrahorastartfox();
                     }
}




void configurahorastopfox(void)
{
  muestrahorastopfox();

         if (input(PIN_A0) ) // controla el puerto A pin0 incrementa hora stop morse
                              {
                              output_toggle(PIN_B0);
                              if (horaStopMorse>22)
                                  horaStopMorse=23;
                              else horaStopMorse++;
                              delay_ms(150);
                             muestrahorastopfox();
                             }
        
          if (input(PIN_A1) ) // controla el puerto A pin1 decrementa hora stop morse
                              {
                              output_toggle(PIN_B0);
                              if (horaStopMorse>0)
                                  horaStopMorse--;
                              else horaStopMorse=0;
                              delay_ms(150);
                             muestrahorastopfox();
                              }

}





        
void configuraminutostopfox(void)        
{
   muestrahorastopfox();
          if (input(PIN_A0) ) // controla el puerto A pin0 incrementa minutos stop morse
 &nb
« Última modificación: 26 de Agosto de 2009, 01:00:48 por jukinch »
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: problema al usar #define para definir nombres para los puertos
« Respuesta #2 en: 25 de Agosto de 2009, 01:32:36 »
Hola

Prueba quitar los = entre el #define y el nombre del pin.

Serian asi:
Código: [Seleccionar]
#define tecla_up  PIN_A0

Saludos
El papel lo aguanta todo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: problema al usar #define para definir nombres para los puertos
« Respuesta #3 en: 25 de Agosto de 2009, 01:38:28 »
 :shock: No terminaba más el código  :mrgreen:
No contesto mensajes privados, las consultas en el foro

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: problema al usar #define para definir nombres para los puertos
« Respuesta #4 en: 25 de Agosto de 2009, 02:49:58 »
Como dice MLO__, la sintaxis que empleas es incorrecta! La directiva 'define' no se utiliza para declarar variables, sino para definir macros simbólicas, las cuales son interpretadas por el preprocesador.
Por ejemplo, si te gusta escribir AQELLO en vez de ESTO, utilizas la directiva

#define ESTO AQUELLO

Y el preprocesador reemplazará toda ocurrencia de ESTO por AQUELLO.
Si ESTO necesita ALGO, podés utilizar argumentos:

#define NO 0
#define SI 1
#define ESTO(ALGO)    (ALGO)? SI: NO

Si este es el error, tienes suerte que este entre las primeras lineas compañero, tu codigo es muy largo :shock:
Una sugerencia: Si el error persiste, postea solamente las cercanias de la línea erronea.
« Última modificación: 25 de Agosto de 2009, 03:13:24 por fabianjm »
@fabianjsm is on twitter

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: problema al usar #define para definir nombres para los puertos
« Respuesta #5 en: 25 de Agosto de 2009, 14:42:46 »
Gracias fabianjm Suky y MLO_ por su tiempo y las respuestas :-/. Estaba empecinado con el error y no pensé que fuera eso. Me fijaba en las líneas de código en donde hacía referencia el compilador y por eso no obvservé a los #defines, creyendo que si debía usar el =, pese a haber leido el manual de ccs unas cuantas veces.
En cuanto tenga el proyecto funcionando al 100% prometo subirlo.
Estoy haciendo un dispositivo para hacer una competencia de radioaficionados.
Un abrazo desde San Nicolás, Argentina.
                        Jukinch
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: problema al usar #define para definir nombres para los puertos
« Respuesta #6 en: 25 de Agosto de 2009, 16:54:13 »
Hola, cuando publicas código es preferible usar el modo GeSHi el código queda formateado y es más fácil de leer.

Saludos !

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: problema al usar #define para definir nombres para los puertos
« Respuesta #7 en: 26 de Agosto de 2009, 00:17:06 »
Como hago para usar el modo GeSHi debo descargar el programa desde http://sourceforge.net/projects/geshi/files/ o hay alguna opción desde el foro? Es la que dice insertar código y tiene un iconito # ?
« Última modificación: 26 de Agosto de 2009, 00:21:54 por jukinch »
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: problema al usar #define para definir nombres para los puertos
« Respuesta #8 en: 26 de Agosto de 2009, 01:04:01 »
ya lo encontré. se pone [cod e=c]  acá el código [/cod e]
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado pajaro

  • PIC24H
  • ******
  • Mensajes: 1121
Re: problema al usar #define para definir nombres para los puertos
« Respuesta #9 en: 26 de Agosto de 2009, 13:01:55 »
Hola amigo jukinch

Te recomendaría que comentaras el código, bien por líneas (muy recomendable)   //comentario
o bien poniendote una pequeña explicacion /*.......*/ entre modulos.

Si el código es muy largo suele ocurrir que uno mismo se olvida, por que en su día hizo eso de esa forma,
es una recomendación.

Un saludo.
« Última modificación: 26 de Agosto de 2009, 13:04:31 por pajaro »

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: problema al usar #define para definir nombres para los puertos
« Respuesta #10 en: 26 de Agosto de 2009, 20:23:53 »
Gracias PAJARO por la sugerencia. Casualmente estoy optimizando el código para que sea más breve y claro. Porque hice mucho copio y pego copio y pego y quedó larguísimo.
Voy a encapsular todas en funciones.
Estoy usando una pantalla LCD y un RTC DS1307 mediante protocolo i2c para manejar los tiempos y transmitir con un transmisor una señal cada un tiempo determinado. Para una competencia de radio aficionados.
            Un abrazo.
                     
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes


 

anything