#include <16f877a.h>
#use delay(clock=4000000)
#byte portd=8
#fuses XT,NOPROTECT,PUT,BROWNOUT,NOWDT,NOLVP
#int_RB
RB_isr() 
{

}
#define LCD_ENABLE_PIN PIN_D2
#define LCD_RS_PIN PIN_D0
#define LCD_RW_PIN PIN_D1
#define LCD_TYPE 1
#include <flex_lcd.c>

int mesesD,mesesU,diasD,diasU,horasD,horasU,minutosD,minutosU,segundosD,segundosU;

void main()
{
   lcd_init();



   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_RB);
   enable_interrupts(GLOBAL);
   lcd_putc("Reloj digital");
   delay_ms(1500);
   lcd_putc("\fHora ");
   while(1)
   {
   for(horasD=0;horasD<3;horasD++)
   {
   lcd_gotoxy(6,1);
   printf(lcd_putc,"%d",horasD);
   switch(horasD)
   {
      case 0:
      {
         for(horasU=0;horasU<10;horasU++)
         {
         lcd_gotoxy(7,1);
         printf(lcd_putc,"%d:",horasU);
            for(minutosD=0;minutosD<6;minutosD++)
            {
            lcd_gotoxy(9,1);
            printf(lcd_putc,"%d",minutosD);
               for(minutosU=0;minutosU<10;minutosU++)
               {
               lcd_gotoxy(10,1);
               printf(lcd_putc,"%d:",minutosU);
                  for(segundosD=0;segundosD<6;segundosD++)
                  {
                  lcd_gotoxy(12,1);
                  printf(lcd_putc,"%d",segundosD);
                     for(segundosU=0;segundosU<10;segundosU++)
                     {
                     lcd_gotoxy(13,1);
                     printf(lcd_putc,"%d",segundosU);
                     delay_ms(1000);
                     }
                  }
               }     
            }   
         }
         break;  
      }
      case 1:{
      
         for(horasU=0;horasU<10;horasU++)
         {
         lcd_gotoxy(7,1);
         printf(lcd_putc,"%d:",horasU);
            for(minutosD=0;minutosD<6;minutosD++)
            {
            lcd_gotoxy(9,1);
            printf(lcd_putc,"%d",minutosD);
               for(minutosU=0;minutosU<10;minutosU++)
               {
               lcd_gotoxy(10,1);
               printf(lcd_putc,"%d:",minutosU);
                  for(segundosD=0;segundosD<6;segundosD++)
                  {
                  lcd_gotoxy(12,1);
                  printf(lcd_putc,"%d",segundosD);
                     for(segundosU=0;segundosU<10;segundosU++)
                     {
                     lcd_gotoxy(13,1);
                     printf(lcd_putc,"%d",segundosU);
                     delay_ms(1000);
                     }
                  }
               }     
            }   
         }
         break;  
         }
            
      case 2:{
         for(horasU=0;horasU<4;horasU++)
         {
         lcd_gotoxy(7,1);
         printf(lcd_putc,"%d",horasU);
         for(minutosD=0;minutosD<6;minutosD++)
            {
            lcd_gotoxy(9,1);
            printf(lcd_putc,"%d",minutosD);
               for(minutosU=0;minutosU<10;minutosU++)
               {
               lcd_gotoxy(10,1);
               printf(lcd_putc,"%d:",minutosU);
                  for(segundosD=0;segundosD<6;segundosD++)
                  {
                  lcd_gotoxy(12,1);
                  printf(lcd_putc,"%d",segundosD);
                     for(segundosU=0;segundosU<10;segundosU++)
                     {
                     lcd_gotoxy(13,1);
                     printf(lcd_putc,"%d",segundosU);
                     delay_ms(1000);
                     }
                  }
               }     
            }
         }
         break;
         }
      }  
   }
}   
   
}

