#include "ECEN.h"
#define k_rows 4
void setup() {
// put your setup code here, to run once:
initializePort();
}
void loop() {
// put your main code here, to run repeatedly:
volatile char *outf,*ink,*outa,*outd,readInput,firstNumber,secondNumber,firstflag=0,secondflag=0,flag=0,sumflag=0;
volatile char flag2=0;
outf=0x31;
ink=0x106;
outa=0x22;
outd=0x2b;
volatile int pos1=1,pos2=2,pos3=3;
volatile int no1=0,no2=0;
volatile int number1=0;
volatile int number2=0;
volatile int sum,first,second,third;
while(1){
for(volatile long i=0;i<k_rows;i++){
*outf=1<<i;
readInput=*ink;
if(readInput){
if(firstflag==0){
delaytime();
*outd=0x0f;
firstNumber=displayDigits(*outf,readInput);
no1=convertChar(firstNumber);
number1=(number1*10)+no1;
*outa=firstNumber;
*outd=0x07;
if(*outf==0x01 && readInput==0x08){
interval();
flag=1;
firstflag=1;
number1/=10;
}
}
else if(flag && secondflag==0){
delaytime();
*outd=0x0f;
secondNumber=displayDigits(*outf,readInput);
no2=convertChar(secondNumber);
number2=(number2*10)+no2;
*outa=secondNumber;
*outd=0x07;
if(*outf==0x08 && readInput==0x04){
interval();
secondflag=1;
flag2=1;
number2/=10;
}
}
if(flag2 && secondflag){
sum=number1+number2;
while(sum){
*outd=0x0f;
first=sum/100;
*outa=resultDisp(first,pos1);
*outd=0x0d;
interval();
*outd=0x0f;
second=(sum%100)/10;
*outa=resultDisp(second,pos2);
*outd=0x0b;
interval();
*outd=0x0f;
third=sum%10;
*outa=resultDisp(third,pos3);
*outd=0x07;
sumflag=1;
}
}
}
}
}
}