void setup() {
// put your setup code here, to run once:
volatile char *dirf=0x30,*outf=0x31,*inf=0x2f,*dira=0x21,*outa=0x22,*dirc=0x27,*outc=0x28;
*dirf=0x0f;
*dira=0xff;
*dirc=0x0f;
volatile char i,n=1;
volatile long l;
while(1)
{
for(i=0;i<4;i++)
{
*outf=1<<i;
if((*inf&0xf0)!=0)
{ for(l=0;l<1000;l++);
*outc=~n;
n=(n*2)+1;
if(n>15)n=1;
*outa=display((*outf&0x0f),(*inf&0xf0)>>4);
for(l=0;l<100000;l++);
while((*inf&0xf0)!=0);
continue;
}
}
}
}
volatile char display(volatile unsigned char r,volatile unsigned char c)
{
volatile unsigned char key[4][4]={{0x06,0x5b,0x4f,0x77},
{0x66,0x6d,0x7d,0x7c},
{0x07,0x7f,0x6f,0x39},
{0xff,0x3f,0xff,0x5e}};
if(r==4)r=3;
if(c==4)c=3;
if(r==8)r=4;
if(c==8)c=4;
return key[r-1][c-1];
}
void loop() {
}