volatile int *dirF, *outF,*dirK,*inputK;
volatile char myNum[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7f,0x6f};
volatile char alphabet[8]={0x77,0x7c,0x39,0x5e,0x79,0x71,0x3c,0x76};
volatile char chosNum[10]={0,2,4,6,8,9,7,5,3,1};
volatile long i,j,x,flag=0,count=9;
void myDelay();
void task8(int);
void countNum(char);
void setup() {
// put your setup code here, to run once:
dirF=0X30; dirK=0x107;
*dirF=0xFF; *dirK=0x00;
outF=0x31; inputK=0x106;
Serial.begin(9600);
}
void loop() {
//Press any switch & display that number.
//Ex: 1 - > 1, 2 ->2, ... 8 -> 8.
if(*inputK!=0){
task8(*inputK);
}
}
void task1(volatile int x){
Serial.println(x);
switch(x){
case 0x01:
*outF=myNum[1];
break;
case 0x02:
*outF=myNum[2];
break;
case 0x04:
*outF=myNum[3];
break;
case 0x08:
*outF=myNum[4];
break;
case 0x10:
*outF=myNum[5];
break;
case 0x20:
*outF=myNum[6];
break;
case 0x40:
*outF=myNum[7];
break;
case 0x80:
*outF=myNum[8];
break;
default:
*outF=0x00;
}
}
void task2(int x){
Serial.println(x);
switch(x){
case 0x01:
*outF=myNum[8];
break;
case 0x02:
*outF=myNum[7];
break;
case 0x04:
*outF=myNum[6];
break;
case 0x08:
*outF=myNum[5];
break;
case 0x10:
*outF=myNum[4];
break;
case 0x20:
*outF=myNum[3];
break;
case 0x40:
*outF=myNum[2];
break;
case 0x80:
*outF=myNum[1];
break;
default:
*outF=0x00;
}
}
void task3(volatile int x){
Serial.println(x);
switch(x){
case 0x01:
countNum(1);
break;
case 0x02:
countNum(2);
break;
case 0x04:
countNum(3);
break;
case 0x08:
countNum(4);
break;
case 0x10:
countNum(5);
break;
case 0x20:
countNum(6);
break;
case 0x40:
countNum(7);
break;
case 0x80:
countNum(8);
break;
default:
*outF=0x00;
}
}
void countNum(volatile char y){
while(*inputK==0){
for(j=y;j<10;j++){
*outF=myNum[j];
myDelay();
}
for(j=9;j>(y);j--){
*outF=myNum[j];
myDelay();
}
}
}
void task4(int x){
if(x==0x40){
for (i=0; i<10;i++){
*outF=myNum[i];
myDelay();
}
for (i=9; i>-1;i--){
*outF=myNum[i];
myDelay();
}
*outF=0x00;
}
}
void task5(int x){
for (i=0; i<9;i++){
*outF=alphabet[i];
myDelay();
}
*outF=0x00;
}
void task6(int x){
if(x==0x01){
*outF=myNum[flag];
flag++;
Serial.println(flag);
if(flag==10){flag=0;}
myDelay();
}
}
void task7(int x){
if(x==0x02){
*outF=myNum[count];
count--;
if(count<0){count=9;}
myDelay();
}
}
void task8(int x){
if(x==0x01){
for(i=0;i<10;i++){
*outF=myNum[i];
if(*inputK==0x02){
*outF=0x00;
myDelay();
break;
}
myDelay();
}
}
}
void myDelay(){
for(j=0;j<200000;j++);
}