#include "add.h"
void setup() {
// put your setup code here, to run once:
volatile long i,j,count = -1;
volatile char *dirc,*dirf,*dirk,*dira,X,col,row;
volatile char *outc,*outf,*ink,*outa;
dirc = 0x27; dirf = 0x30; dirk = 0x107; dira = 0x21;
outc = 0x28; outf = 0x31; ink = 0x106; outa = 0x22;
*dirf = 0x0F; *dirk = 0x00; *dira = 0x0F;*dirc =0XF0;
volatile char num[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
volatile char calc[4] = {0x77,0x40,0x76,0x5E};
volatile char load=1,l,input,n1,n2,operation,output,c,in_op,check = 0,digit=0;
while(1){
for(i=0; i<4; i++){
*outf= 1<<i;
col = *ink;
if(*ink != 0){
row = 1<<i;
for(j=0; j<500000; j++);
if (row == 0x01){
if(col == 0x01){
*outa = 0x06;
}
if(col == 0x02){
*outa = 0x5B;
}
if(col == 0x04){
*outa = 0x4F;
}
if(col == 0x08){
*outa = 0x77;
}
}
if (row == 0x02){
if(col == 0x01){
*outa = 0x66;
}
if(col == 0x02){
*outa = 0x6D;
}
if(col == 0x04){
*outa = 0x7D;
}
if(col == 0x08){
*outa = 0x40;
}
}
if(row == 0x04){
if(col == 0x01){
*outa = 0x07;
}
if(col == 0x02){
*outa = 0x7F;
}
if(col == 0x04){
*outa = 0x6F;
}
if(col == 0x08){
*outa = 0x76;
}
}
if(row == 0x08){
if(col == 0x01){
*outa = 0x09;
}
if(col == 0x02){
*outa = 0x3F;
}
if(col == 0x04){
*outa = 0x39;
}
if(col == 0x08){
*outa = 0x5E;
}
}
row=0;
if(count<4){
count++;
if(count==4)
count=0;
}
if(1)
{
int dig[4] = {0x70,0xB0,0xD0,0xE0};
*outc = dig[count];
}
if(1){
for(l=0;l<10;l++){
input = num[l];
if(*outa == input){
output = digi(input);
volatile char count_num =0;
count_num++;
if(count_num==1)(n1 = output);
if(count_num==2)(n2 = output);
}
}
l=0;
}
if(1){
for(c=0;c<4;c++){
in_op = calc[c];
if(in_op == *outa)
operation = hex_to_operation(*outa);
}
c=0;
}
if(*outa == 0x09){
output = calculation(n1,n2,operation);
if(output <= 9){
if(output==1)
*outa = 0x06;
else
{
*outa = deci_to_hex(output);
}
}
else
{
volatile char d1,d2;
d1 = ((output ) / 10);
d2 = (output % 10);
if(d1 == 1){
*outa = 0x06;
for(i=0;i<1000000;i++);
}
if(d1 !=1){
*outa = deci_to_hex(d1);
for(i=0;i<1000000;i++);
}
if(d2 !=1){
*outa = deci_to_hex(d2);
for(i=0;i<1000000;i++);
}
if(d2 == 1){
*outa = 0x06;
for(i=0;i<1000000;i++);
}
}
}
}
}
}
}
void loop(){
}