TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: juandazero en 17 de Noviembre de 2014, 02:49:54
-
tengo un problema con mi proyecto de un reloj manejado por lcd y teclado matricial, tengo problemas al ir a otro void y el puerto b se me bloquea por decirlo asi, la programacion es la siguiente espero me puedan colaborar, estoy utilizando un pic18f4550, ya utilice varias librerias de teclado pensando que era eso y no lo es, no se si por la interrupcion en fin no logro entonctar el problema
#include <proyecto.h>
#define LCD_ENABLE_PIN PIN_D0 ////
#define LCD_RS_PIN PIN_D1 ////
#define LCD_RW_PIN PIN_D2 ////
#define LCD_DATA4 PIN_D4 ////
#define LCD_DATA5 PIN_D5 ////
#define LCD_DATA6 PIN_D6 ////
#define LCD_DATA7 PIN_D7
#define USE_PORTD_LCD TRUE
#define use_portb_kbd TRUE
#include <LCD.c>
#include <teclado.c>
#include<string.h>
#use standard_io(B)
#define clear_int_rb()
unsigned char i;
int8 segundos=0;
int8 minutos=0;
int8 horas=0;
int8 fantastic=0;
int valor;
int1 cont=0;
#INT_TIMER1
void TIMER_interrupt(void)
{
if (cont==1){
output_toggle(pin_D3);
fantastic++;
segundos++;
}
set_timer1(3036);
cont++;
}
void pantalla_2(void)
{
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
char c;
int dia=0;
int8 cambio1;
int8 cambio2=0;
int8 cambio3;
i=0;
lcd_putc("\f");
lcd_gotoxy(8,1);
printf(lcd_putc,"MIN:");
lcd_gotoxy(15,1);
printf(lcd_putc,"SEG:");
lcd_gotoxy(1,2);
printf(lcd_putc,"DIA:");
lcd_gotoxy(11,2);
printf(lcd_putc,"MES: NOV");
lcd_gotoxy(27,1);
printf(lcd_putc,"A%CO: 2014",0Xee);
clear_interrupt(INT_RB);
clear_interrupt(INT_EXT);
while(true){
lcd_gotoxy(1,1);
printf(lcd_putc,"HOR:");
lcd_gotoxy(19,1);
printf(lcd_putc,"%2u",segundos);
lcd_gotoxy(5,1);
printf(lcd_putc,"%2u"horas);
lcd_gotoxy(12,1);
printf(lcd_putc,"%2u",minutos);
i=Recibir_Tecla();
if(i=='1'){
lcd_gotoxy(5,1);
lcd_send_byte(0,0x0F);
}
if(segundos>=60)
{
segundos=0;
minutos++;
}
if(minutos==60)
{
minutos=0;
horas++;
}
if(horas==24)
{
horas=0;
dia++;
}
cambio1=20;
cambio3=39;
if (cambio1>=20 && cambio2==0)
{
cambio1+=fantastic;
lcd_gotoxy(cambio1,2);
printf(lcd_putc,"%c%c",0x0010,0Xff);
if (cambio1==40){
cambio2=1;
fantastic=0;
}
}
if (cambio3<=39 && cambio2==1 )
{
cambio3-=fantastic;
lcd_gotoxy(cambio3,2);
printf(lcd_putc,"%c%c",0xff,0X0010);
if(cambio3==21){
fantastic=0;
cambio2=0;
}}
switch (dia){
case 0:
lcd_gotoxy(5,2);
printf(lcd_putc,"DOM");
break;
case 1:
lcd_gotoxy(5,2);
printf(lcd_putc,"LUN");
break;
case 2:
lcd_gotoxy(5,2);
printf(lcd_putc,"MAR");
break;
case 3:
lcd_gotoxy(5,2);
printf(lcd_putc,"MIE");
break;
case 4:
lcd_gotoxy(5,2);
printf(lcd_putc,"JUE");
break;
case 5:
lcd_gotoxy(5,2);
printf(lcd_putc,"VIE");
break;
case 6:
lcd_gotoxy(5,2);
printf(lcd_putc,"SAB");
dia=0;
break;
}
delay_ms(100);
}
}
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_comparator(NC_NC_NC_NC);
port_b_pullups(TRUE);
lcd_init();
lcd_gotoxy(5,1);
printf(lcd_putc," BIENVENIDO ");
lcd_gotoxy(22,1);
printf(lcd_putc,"JUAN DAVID CUELLARr");
lcd_gotoxy(22,2);
printf(lcd_putc,"DIEGO F RODRIGUEZ");
delay_ms(2000);
lcd_putc("\f");
printf(lcd_putc," Pulse Acceso para ");
printf(lcd_putc,"iniciar el programa");
for(;;){
do{ //espera hasta que se pulse una tecla
i=Recibir_Tecla(); }
while(i==0);
if(i!=0){
delay_ms(180);
pantalla_2();
}}}