void setup() {
// put your setup code here, to run once:
volatile char *dir;
dir=0x21;
*dir=0xFF;
}
void one(volatile char *out){
unsigned int bite;
*out=(1<<3)|(1<<7);
delay(1000);
*out=(1<<2)|(1<<6);
delay(1000);
*out=(1<<1)|(1<<5);
delay(1000);
*out=(1<<0)|(1<<4);
delay(1000);
}
void two(volatile char *out){
unsigned int bite;
for(bite=0;bite<=7;bite++){
*out=(1<<bite);
delay(500);
}
*out=0x00;
delay(500);
for(bite=7;bite>=0;bite--){
*out=(1<<bite);
delay(500);
}
delay(1000);
}
void three(volatile char *out){
*out=(1<<0);
delay(500);
*out=(1<<2);
delay(500);
*out=(1<<1);
delay(500);
*out=(1<<3);
delay(500);
*out=(1<<4);
delay(500);
*out=(1<<6);
delay(500);
*out=(1<<5);
delay(500);
*out=(1<<7);
delay(500);
}
void four(volatile char *out){
*out=(1<<0);
delay(1000);
*out=0x00;
delay(1000);
*out=(1<<0)|(1<<1);
delay(1000);
*out=0x00;
delay(1000);
*out=(1<<0)|(1<<1)|(1<<2);
delay(1000);
*out=0x00;
delay(1000);
unsigned int bite;
for(bite=7;bite>=0;bite--){
*out=(1<<bite);
delay(500);
}
}
void loop() {
// put your main code here, to run repeatedly:
volatile char *out;
out=0x22;
unsigned int value=0;
value=4;
switch(value){
case 1:
one(out);
break;
case 2:
two(out);
break;
case 3:
three(out);
break;
case 4:
four(out);
break;
default:
break;
}
}