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 );
}