Autor Tema: TECLADO MATRICIAL  (Leído 2789 veces)

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

Desconectado jorgevert

  • Moderadores
  • PIC10
  • *****
  • Mensajes: 30
TECLADO MATRICIAL
« en: 16 de Diciembre de 2003, 21:27:00 »
saludos

alguien puede ayudarme con el teclado matricial tengo problemas al testear las salidas del teclado
matricial las teclas se activan en alta mi problema resulta en que al leer las salidas del teclado
no obtengo los valores esperados que son ( 0x10,0x20,0x40,0x80 ) SOLO PULSO UNA TECLA  
entradas al teclado a traves del PORTA RA0-RA3
salidas del teclado a traves del PORTB RB4-RB7

#include <16f877.h>
#fuses HS,NOWDT,NOPROTECT,PUT,NOBROWNOUT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include <STDLIB.H>

int8 TEMP_1,TEMP_2,DATO;
// TEMP_1 VARIABLE USADA PARA ENVIAR DATOS AL TECLADO MATRICIAL
// TEMP_2 VARIABLE USADA PARA RECIBIR DATOS DEL TECLADO MATRICIAL
#INT_RB

INTERRUPCION_CHANGE_PORTB()
{
   DATO++;
   OUTPUT_D(DATO);
   delay_ms(500);
   TEMP_2=INPUT_B();
      SWITCH(TEMP_2)
         {
            CASE 0X10:
                        PRINTF("SE PULSO 1";
                        BREAK;  
            CASE 0X20:
                        PRINTF("SE PULSO 2";
                        BREAK;  
            CASE 0X40:
                        PRINTF("SE PULSO 3";
                        BREAK;  
            CASE 0X80:
                        PRINTF("SE PULSO 4";
                        BREAK;  
            DEFAULT:
                        PRINTF(" TECLA ";
                        BREAK;  
          }
}

void main ()
{
   TEMP_1=0;
   TEMP_2=0;
   setup_adc_ports( NO_ANALOGS );
   SET_TRIS_A(0X00);
   SET_TRIS_B(0XF0);
   PORT_B_PULLUPS(TRUE);
   enable_interrupts(global);
   enable_interrupts(INT_RB);
   PRINTF("INICIO";
   do
   {
      TEMP_1=0XF1;   
      OUTPUT_A(0XF1);   //ACTIVO 1ERA FILA   
      DELAY_MS(20);
      TEMP_1=0XF2;      
      OUTPUT_A(0XF2);   //ACTIVO 2DA FILA
      DELAY_MS(20);
      TEMP_1=0XF4;
      OUTPUT_A(0XF4);   //ACTIVO 3ERA FILA
      DELAY_MS(20);
      TEMP_1=0XF8;
      OUTPUT_A(0XF8);   //ACTIVO 4TA FILA
      DELAY_MS(20);
   }
   while( true );
}



 

anything