mauricio fernandez montoya

MC68HC908GP32 (4x4 matrix keypad program)

Discussion created by mauricio fernandez montoya on Sep 29, 2007
Latest reply on Oct 5, 2007 by Peter House
Hi.   i need to do a little proyect using a 4x4 matrix keypad.   i was thinking use the KBI module, but i found the way to do it without using KBI.

here is the entire code.  i wish you check it and tell me what is wrong, and how i can return an integer value from this program???

#include <hidef.h>
#include <MC68HC908GP32.h>
#include "serial.h"
#include "TIMERAPI.h"
#include "lcddrv.h"


void Inicio_uC(void);   
char Muestreo_Columnas[4]={0x07,0x0B,0x0D,0x0E};
char i, Fila_Encontrada, Columna_Encontrada,Tecla_Presionada, Salir;

void Inicio_uC(void){
    CONFIG1_COPD=1;   
    EnableInterrupts;
      PTA = 0;           
      DDRA = 0x0F;//[PTA7..PTA4]como entradas.
  }

void main(void) {
Inicio_uC();
for(;:smileywink: {
PTA=0;  //Parte baja de PTA a cero.
Salir=0;
while((PTA>>4)!=0x0F && Salir==0){  //mientras haya un cero lógico en la parte alta de PTA.

    for(i=1;i<=4;i++){      //Muestreo de las columnas
        PTA=Muestreo_Columnas[i];  //vector de posiciones
        Delayus(500);             //espera 500 us
       
    if((PTA>>4)!=0x0F){
            Fila_Encontrada=(PTA>>4);
            Columna_Encontrada=Muestreo_Columnas[i];
            Salir=1;
        }
    }
}
Tecla_Presionada=Fila_Encontrada && Muestreo_Columnas;

}


Tecla_Presionada is the final variable, in were the key position data will be store.   
 Please, help me....









Outcomes