void setup()
{
volatile char *dirf,*outf;
volatile char *dirk,*ink;
dirf=0x30; outf=0x31;
dirk=0x107; ink=0x106;
*dirf=0xFF; *ink=0x00;
volatile char switches;
volatile long arr[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
volatile long arr1[]={0,1,2,4,8,16,32,64,128};
unsigned long sum=0,count=0;
volatile long i,j,k,l,n,m,p,q;
while(1)
{
if(count==4)
{
sum=(sum/10)+(sum%10);// making sum as single digit
*outf=arr[sum];//output
sum=0;// again put sum=0 to again add new digits
count=0;//again put count=0 to again count switches
}
else
{
switches=*ink;
for(i=1;i<=8;i++)
{
if((switches & arr1[i]) == arr1[i])
{
sum=sum+i;//sum of digits
count++;// count for switch press
for(j=0;j<=50000;j++);// delay for debouncing
}
}
}
}
}
void loop()
{
}