You are on page 1of 5

#include "C:\Users\Abraham\Desktop\Lalo\LaloPCW\main.

h"
#define use_portb_lcd TRUE //LCD se controla con p
uerto B
#include <lcd.c>
#use standard_io(C)
#use standard_io(A)
//VARIABLES GLOBALES
int dia=0, hora=0, minuto=0, segundo=0,delay_segundo=1000;
//FIN DE VARIABLES GLOBALES
void alarma()
{
if(dia>=1) //todos los das excepto
domingo (domingo==0)
{
if(hora>=8 && hora <=19) //durante esos das, desd
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
//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; //Nmero de mens
lcd_init(); //Inicializa el LCD
while (1)
{
if (input(PIN_A0)) //Detecta botn de seleccin
{
indice++;
delay_ms(300); //Espera de tiempo
lcd_putc('\f');
}
if (indice >= n_menus) //Si la variable supera el
nmero de mens, se resetea
indice = 0;
switch (indice) //Elije la(s) funcin(es) de
un men
{
case 0:
clock();
alarma();
break;
case 1:
adjust_clock();
break;
case 2:
adjust_time();
break;
}
}
}
/**********************FIN DE LA FUNCIN PRINCIPAL*********************/

You might also like