Autor Tema: problema con teclado matricial  (Leído 2524 veces)

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

Desconectado juandazero

  • PIC10
  • *
  • Mensajes: 2
problema con teclado matricial
« 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();
         
     
      }}}