void init_port(void);
void outport(char );
unsigned char button(void);
void glow(void);
void dely(int );
void setup()
{
init_port();
glow();
}
void glow()
{
unsigned char btn;
while(1)
{
btn=button();
//outport(btn);
for(char i=0;i<8;i++)
{
if(btn==(1<<i))
{
outport(1<<i);
break;
}
}
delay(30);
}
}
unsigned char button()
{
volatile char *inport_c=(char *)0x26;
volatile char *inport_b=(char *)0x23;
unsigned char b,c;
while((*inport_c==0)&&(*inport_b==0));
c=*inport_c;b=*inport_b;
if(c!=0x00)
{
return c & 0x3F;
}
else
{
return ((b>>3) & 0x03)<<6;
}
}
void init_port()
{
char *dir_port_d=(char *)0x2A;
char *dir_port_b=(char *)0x24;
char *dir_port_c=(char *)0x27;
*dir_port_d=0xFC;
*dir_port_b=0x03;
*dir_port_c=0x00;
}
void outport(char outdata)
{
char *outport_d=(char *)0x2B;
char *outport_b=(char *)0x25;
*outport_d= outdata << 2;
*outport_b= outdata >> 6;
}
void dely(int num)
{
volatile int i;
while(num)
{
for(i=0;i<100;i++);
num-=1;
}
}
void loop() {
// put your main code here, to run repeatedly:
}