Jeje ...ya arregle el error........en todo kaso aki va el kodigo........para ke lo vean tb y si alguien me puede decir ke significa este codigo:"10<<2" ...aki el kodigo del programa....ta weno....toavia lo toy arreglando pa despues poder desplegarlo en el puerto A del PIC mediante unos leds......thx por la respuesta Jonathan.
char Tecla, Temp,Temp1,Temp2, Pulsada;
void delay_ms()
{
unsigned char x,y;
x=10000;
while (x)
{
x>>= 0;
x--;
}}
void Lee_Tecla()
{//para las kolumnas
TRISB = 0b11110000;
OPTION.7 = 0; // habilita pull-ups
PORTB = 0;
#asm
comf PORTB,W; // Lee y complementa
movwf Temp1; // Lee y complementa (Columna)
swapf Temp1,f; // Cambia alta por baja
#endasm
Temp=0;
while (!(Temp1 & 0x01)) // cuenta hasta que llegue a un bit set
{
Temp1>>= 1;
Temp++;
}
if (Temp<4) // se ha pulsado
{
Temp2=Temp; // Guardo columna
//para las filas
TRISB = 0b00001111; // ahora la fila
OPTION.7 = 0; // habilita pull-ups
PORTB = 0;
#asm
comf PORTB,W; // Lee y complementa
movwf Temp1; // Lee y complementa (Fila)
#endasm
Temp=0;
while (!(Temp1 & 0x01)) // cuenta hasta que llegue a un bit set
{ Temp1>>=1;
Temp++;
}
if (Temp<4) // Fila correcta
{ Temp1=Temp;
Tecla=(Temp2<<2)+Temp1;
}
else Tecla=0xFF;
}
else Tecla=0xFF;
}
void main()
{
while(1)
{
Lee_Tecla ();
delay_ms ();
}
}
se me olvidaba decir ke el delay_ms() no kacho si esta bien.....jejeje
Disfruten lo ke keda de año...y el otro tb...