#include "keypad1.h"
void delay1() {
unsigned long i;
for (i = 0; i < 100000; i++);
}
void output(char data)
{
volatile char *portf_d;
portf_d=0x31;
*portf_d=data;
}
char input()
{
volatile char *portk_d;
portk_d=0x106;
char input_d = ~(*portk_d); // Active-low
return input_d;
}
char get_Key()
{
Serial.begin(9600);
int row,col;
int coloumn;
char key_pressed;
for(row=0;row<4;row++)
{
output(~(1<<row));
delay1();
coloumn=input();
if(coloumn!=0x00)
{
for(col=0;col<4;col++)
{
if(coloumn==(0x01<<col))
{
key_pressed=row*4+col+1;
delay1();
Serial.println(key_pressed);
return (key_pressed);
}
}
}
}
return 0;
}
void setup() {
init_port();
Serial.begin(9600);
}
char keymap[16] = {
'1','2','3','A',
'4','5','6','B',
'7','8','9','C',
'*','0','#','D'
};
void loop() {
char key = get_Key();
if (key != 0 && key <= 16) {
Serial.print("Key Pressed: ");
Serial.println(keymap[key - 1]); // Adjust for 0-index
}
}