void setup() {
// put your setup code here, to run once:
volatile char *dir1;
dir1 = 0x30; //directon reg for port f
*dir1 = 0xff; //port f as output
volatile char *dir2;
dir2 = 0x107; //direction reg for port k
*dir2 = 0x00; // port k as input
volatile char *dir3;
dir3 = 0x21; //direction reg for port a
*dir3 = 0xff; //port a as output
}
void loop() {
// put your main code here, to run repeatedly:
volatile long j;
volatile int i,x;
volatile char *row;
row = 0x31;
volatile char *col;
col = 0x106;
volatile char *seg;
seg = 0x22;
while(1)
{
for(i=0;i<4;i++)
{
*row = 1 << i;
if(*row == 1)
{
x = *col;
if(x == 0x01) *seg = 0x06;
for(j=0;j<1000;j++);
if(x == 0x02) *seg = 0x5b;
for(j=0;j<1000;j++);
if(x == 0x04) *seg = 0x4f;
for(j=0;j<1000;j++);
if(x == 0x08) *seg = 0x77;
for(j=0;j<1000;j++);*seg = 0;}
if(*row == 2)
{
x = *col;
if(x == 0x01) *seg = 0x66;
for(j=0;j<1000;j++);
if(x == 0x02) *seg = 0x6d;
for(j=0;j<1000;j++);
if(x == 0x04) *seg = 0x7d;
for(j=0;j<1000;j++);
if(x == 0x08) *seg = 0x7f;
for(j=0;j<1000;j++); *seg = 0;}
if(*row == 4)
{
x = *col;
if(x == 0x01) *seg = 0x07;
for(j=0;j<1000;j++);
if(x == 0x02) *seg = 0x7f;
for(j=0;j<1000;j++);
if(x == 0x04) *seg = 0x6f;
for(j=0;j<1000;j++);
if(x == 0x08) *seg = 0x39;
for(j=0;j<1000;j++); *seg = 0;}
if(*row == 8)
{
x = *col;
if(x == 0x01) *seg = 0x49;
for(j=0;j<1000;j++);
if(x == 0x02) *seg = 0x3f;
for(j=0;j<1000;j++);
if(x == 0x04) *seg = 0x36;
for(j=0;j<1000;j++);
if(x == 0x08) *seg = 0x3f;
for(j=0;j<1000;j++); *seg = 0;}
}
}
}