#include "header.h"
void setup() {
init();
volatile char *outf, *ink, *outa, *outc, x,y,row,num, num1,num2,num3,num4,num5,num6;
outf = 0x31; ink = 0x106; outa = 0x22; outc = 0x28;
unsigned char digit[] = {0x3F,0x06,0x5B,0x4f,0x66,0x6d,0x7d,0x07,0x7F,0x6F,0x00};
char count = 0;
while(1){
for(row=0;row<4;row++){
*outf = (1<<row);
x = *ink;
if(x!=0){
delay1(5);
while(*ink !=0){}
if(row==3){
if(x == (1<<1)) num = 0;
else{
num = 10;
}
}
else{
for(char col=0;col<3;col++){
if(x == (1<<col)) num = col + 1 + 3*row;
if(x == (1<<3)) num = 10;
}
}
if(count==0){
num1 = num;
digit2(digit[num1]);
}
else if(count==1){
num2 = num;
display2(num1, num2, outf, ink, digit);
}
else if(count==2){
num3 = num;
display3(num1, num2, num3, outf, ink, digit);
}
else if(count==3){
if(row==0){
if(x==(1<<3)){
digit4(0x70);
}
}
}
else if(count==4){
num4 = num;
digit2(digit[num4]);
}else if(count==5){
num5 = num;
display2(num4, num5, outf, ink, digit);
}
else if(count==6){
num6 = num;
display3(num4, num5, num6, outf, ink, digit);
}
count++;
if(count>6){
int sum = (num1*100 + num2*10 + num3) + (num4*100 + num5*10 + num6);
if(sum>=100 && sum<1000){
char dig1 = (char)(sum/100);
char dig2 = (char)((sum/10)%10);
char dig3 = (char)(sum%10);
for(volatile long i=0;i<50000;i++){
digit2(digit[dig1]);
delay1(0.5);
digit3(digit[dig2]);
delay1(0.5);
digit4(digit[dig3]);
delay1(0.5);
}
}
else{
char dig1 = (char)(sum/1000);
char dig2 = (char)((sum/100)%10);
char dig3 = (char)((sum/10)%10);
char dig4 = (char)(sum%10);
for(volatile long i=0;i<50000;i++){
digit1(digit[dig1]);
delay1(0.5);
digit2(digit[dig2]);
delay1(0.5);
digit3(digit[dig3]);
delay1(0.5);
digit4(digit[dig4]);
delay1(0.5);
}
}
*outc = 0xFF;
count = 0;
}else{
}
}
}
}
}
void loop() {
// put your main code here, to run repeatedly:
}