#define DELAY 10000
volatile long i;
volatile char *outf, *outk, *outa, *outc,*outl, *inb;
unsigned int digit[10] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; // Patterns for 0-9
unsigned int Digit[10] = { 0xbf, 0x86, 0xdb, 0xcf, 0xe6, 0xed, 0xfd, 0x87, 0xff, 0xef};
unsigned int rdigit[10]= {0x6f,0x7f,0x07,0x7d,0x6d,0x66,0x4f,0x5b,0x06,0x3f};
void setup() {
volatile char *dirf, *dirk, *dira, *dirc,*dirl,*dirb;
dirf = 0x030;
dirk = 0x107;
dira = 0x021;
dirc = 0x027;
dirl = 0x10A;
dirb = 0x024;
*dirf = 0xff;
*dirk = 0xff;
*dira = 0xff;
*dirc = 0xff;
*dirl = 0x0f;
*dirb = 0x00;
outf = 0x031;
outk = 0x108;
outa = 0x022;
outc = 0x028;
outl = 0x10B;
inb = 0x023;
}
void loop() {
int number;
for (number = 0; number < 10; number++)
{
keypad(number);
delay1();
}
}
void delay1(void) {
volatile long j;
for (j = 0; j < DELAY; j++);
}
void keypad(int number) {
volatile char *dira,*dirc,*dirb;
int i,units;
units = number % 10;
*dirb=0x00;
*dirc=0x0f;
for(i=0;i<4;i++){
*outl=1<<i;
*dirc=0x0f;
//*outc=*inb;
//*outc=digit[units];
if(*inb!=0)
{
*dira=0xff;
*outa=digit[units];
}
}
}