Está en la página 1de 5

#include "C:\Users\Abraham\Desktop\Lalo\LaloPCW\main.h" #define use_portb_lcd TRUE uerto B #include <lcd.

c> #use standard_io(C) #use standard_io(A) //LCD se controla con p

//VARIABLES GLOBALES int dia=0, hora=0, minuto=0, segundo=0,delay_segundo=1000; //FIN DE VARIABLES GLOBALES void alarma() { if(dia>=1) domingo (domingo==0) { if(hora>=8 && hora <=19) e las 8:00 hasta las 19:00 { output_high(pin_C0); printf(lcd_putc, " ON"); } else { output_low(pin_C0); printf(lcd_putc, " OFF"); } } else { output_low(pin_C0); printf(lcd_putc, " OFF"); } }//FIN DE LA FUNCIN DE ALARMA

//todos los das excepto //durante esos das, desd

//FUNCIN QUE DEVUELVE EL NOMBRE DEL DA QUE EST DECLARADO -segn la variable 'dia'char* dia_sem(int dia) { switch(dia) { case 0: return("Domingo"); case 1: return("Lunes"); case 2: return("Martes"); case 3: return("Miercoles"); case 4: return("Jueves"); case 5: return("Viernes"); case 6: return("Sabado"); case 7: return("Domingo"); } }//FIN DE LA FUNCIN PARA EL NOMBRE DEL DA

//FUNCIN QUE MUESTRA EL RELOJ Y EL DA void clock(void) //Muestra el reloj en l a pantalla { char* dia_semana; delay_ms(1000); ++segundo; if (segundo==60) { ++minuto; segundo=0; } if (minuto==60) { ++hora; minuto=0; } if (hora==24) { ++dia; hora=0; } if (dia==8) dia=0; dia_semana=dia_sem(dia); //carga el nombre del da de la semana lcd_putc('\f'); lcd_gotoxy(1,1); printf(lcd_putc, " Dia %9s",dia_semana); lcd_gotoxy(1,2); printf(lcd_putc, " %2d:%2d:%2d",hora, minuto, segundo); }//FIN DE LA FUNCIN DE DA Y HORA

//STA FUNCIN CARGAR EL DA, HORA, MINUTO Y SEGUNDO DESEADOS void adjust_clock(void) { char* dia_semana; int dhms; //variable para men interno if (input(PIN_A1)) //Detecta botn de seleccin { dhms++; delay_ms(300); //Espera de tiempo lcd_putc('\f'); } if (dhms >= 4) //Si la variable supera el nmero de mens, se resetea dhms = 0; switch(dhms) { case 0: //modifica el da dia_semana=dia_sem(dia); lcd_putc('\f'); lcd_gotoxy(1,1); printf(lcd_putc, " Dia: %9s",dia_semana); lcd_gotoxy(1,2); printf(lcd_putc, "A1+ A2- A0-Hra"); if(input(PIN_A3))

{ dia++; delay_ms(300); } if(input(PIN_A2)) { dia--; delay_ms(300); } break; case 1: //modifica hora lcd_putc('\f'); lcd_gotoxy(1,1); printf(lcd_putc, " Hora:%2d:%2d:%2d",hora, minuto, segundo); lcd_gotoxy(1,2); printf(lcd_putc, "A1+ A2- A0-Min"); if(input(PIN_A3)) { hora++; delay_ms(300); } if(input(PIN_A2)) { hora--; delay_ms(300); } break; case 2: //modifica minuto lcd_putc('\f'); lcd_gotoxy(1,1); printf(lcd_putc, " Minuto:%2d:%2d:%2d",hora, minuto, segundo); lcd_gotoxy(1,2); printf(lcd_putc, "A1+ A2- A0-Seg"); if(input(PIN_A3)) { minuto++; delay_ms(300); } if(input(PIN_A2)) //Si se oprime RA2, dismin uye la espera de tiempo { minuto--; delay_ms(300); } break; case 3: //modifica segundo lcd_putc('\f'); lcd_gotoxy(1,1); printf(lcd_putc, "Segundo:%2d:%2d:%2d",hora, minuto, segundo); lcd_gotoxy(1,2); printf(lcd_putc, "A1+ A2- A0-Dia"); if(input(PIN_A3)) { segundo++; delay_ms(300); } if(input(PIN_A2)) //Si se oprime RA2, dismin uye la espera de tiempo { segundo--;

delay_ms(300); } break; } }//FIN DE FUNCIN DE CARGA DE FECHA/HORA

//STA FUNCIN CONFIGURA LA BASE DE TIEMPO SOBRE LA QUE SE MEDIR 1 SEGUNDO void adjust_time(void) { //Configura el conteo de t iempo lcd_putc('\f'); lcd_gotoxy(1,1); printf(lcd_putc, "Ajuste 1 segundo"); lcd_gotoxy(1,2); printf(lcd_putc, " %4d ms", delay_segundo); if(input(PIN_A1)) //Si se oprime RA1, aument a la espera de tiempo { delay_ms(300); ++delay_segundo; } if(input(PIN_A2)) //Si se oprime RA2, dismin uye la espera de tiempo { delay_ms(300); ++delay_segundo; } }//FIN DE LA CONFIGURACIN DE LA BASE DE TIEMPO

/****************************FUNCIN PRINCIPAL*************************/ void main() { SET_TRIS_A(PIN_A0); SET_TRIS_A(PIN_A1); SET_TRIS_A(PIN_A2); SET_TRIS_A(PIN_A3); setup_adc_ports(NO_ANALOGS); setup_adc(ADC_CLOCK_DIV_2); setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); 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); int indice; int n_menus = 3; lcd_init(); while (1) { if (input(PIN_A0)) {

//Nmero de mens //Inicializa el LCD

//Detecta botn de seleccin

indice++; delay_ms(300); lcd_putc('\f'); } if (indice >= n_menus) nmero de mens, se resetea indice = 0; switch (indice) un men { case 0: clock(); alarma(); break; case 1: adjust_clock(); break; case 2: adjust_time(); break; } }

//Espera de tiempo //Si la variable supera el //Elije la(s) funcin(es) de

} /**********************FIN DE LA FUNCIN PRINCIPAL*********************/

También podría gustarte