#define DISNUM0 0x00
#define DISNUM1 0x01
#define DISNUM2 0x02
#define DISNUM3 0x03
#define DISNUM4 0x04
#define DISNUM5 0x05
#define DISNUM6 0x06
#define DISNUM7 0x07
#define DISNUM8 0x08
#define DISNUM9 0x09
#define DISNUM10 0x0a
#define DISNUM11 0x0b
#define DISNUM12 0x0c
#define DISNUM13 0x0d
#define DISNUM14 0x0e
#define DISNUM15 0x0f
#define DELAY 1000000
volatile char assume_keypad_array[4]= {0x01, 0x02, 0x04,0x08};
volatile char assume_keypad_array_col[8]= {0x01, 0x02,0x00, 0x04,0x00,0x00,0x00,0x08};
void setup() {
volatile char *dirf, *dirk, *dirl, *dirc;
dirf = (volatile char *)0x30; *dirf = 0xFf;
dirl = (volatile char *)0x10a; *dirl = 0xFf;
dirk = (volatile char *)0x107; *dirk = 0xF0;
dirc = (volatile char *)0x27; *dirc = 0xFf;
}
void loop() {
keypad_input();
}
void keypad_input(){
volatile unsigned char *outf, *ink, *outl,*outc;
ink = (volatile unsigned char *)0x106;
outf = (volatile unsigned char *)0x31;
outc= (volatile unsigned char *)0x28;
while (1) {
for (volatile long i = 0; i < 4; i++) { // red - row, green - column
*outf = 1 << i;
// volatile int x =*outf;
volatile int y = *ink;
if(y!=0){
// *outc = keypad_array[i][y-1];
*outc = assume_keypad_array[i];
// *outc = assume_keypad_array_col[y-1];
// delay();
// *outl = 0x00;
}
}
}
}