Título: Teklado matricial konektado a pic 16f874
Publicado por: ijfa en 10 Diciembre 2005, 00:02 am
Hola aki va mi konsulta....estoy empezando kon el teklado matricial........si alguien me puede ayudar plis....el teklado va konektado al puerto B....y tengo que enviar esos datos por rs232....si algiuen me puede ayudar a modifikar este porfa.... //programa de lectura de un teclado matricial conectado al puerto B. //se realiza una lectura cada 10ms.
char ADCON0@0x1F; // Registro ADCON0 char ADCON1@0x9F; // Direccion del registro ADCON1 char ADRESL@0x9E; char ADRESH@0x1E; char TXSTA@0x98; char RCSTA@0x18; char SPBRG@0x99; char TXREG@0x19; char RCREG@0x1A; char Tecla, Temp,Temp1,Temp2, Pulsada;
main() { while (1) {
Lee_Tecla(); delay_ms(10); } }
void Lee_Tecla(void) { set_tris_b(11110000b); clear_bit(OPTION_REG,NOT_RBPU); // habilita pull-ups output_port_b(0); asm comf PORTB,W; // Lee y complementa asm movwf _Temp1; // Lee y complementa (Columna) asm swapf _Temp1,f; // Cambia alta por baja 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 set_tris_b(00001111b); // ahora la fila clear_bit(OPTION_REG,NOT_RBPU); // habilita pull-ups
output_port_b(0); asm comf PORTB,W; // Lee y complementa asm movwf _Temp1; // Lee y complementa (Fila)
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; }
so nomas...
Título: Re: Teklado matricial konektado a pic 16f874
Publicado por: ijfa en 29 Diciembre 2005, 17:15 pm
OLA si alguien se raja kon una revisá de este kodigo por fa.....es que lo arregle pal compilador cc5x .....que es el que toy usando.... char Tecla, Temp,Temp1,Temp2, Pulsada;
void main() { while (1) {
Lee_Tecla(); delay_ms(10); } }
void Lee_Tecla(void) { 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 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; }
|