#include<reg51.h>
void T0M1Delay(void);
void T0M2Delay(void);
sbit ir=P1^0;
sbit mybit=B^7;
sbit a=ACC^0;
sbit c=ACC^1;
sbit d=ACC^2;
sbit e=ACC^3;
sbit f=ACC^4;
sbit g=ACC^5;
sbit h=ACC^6;
sbit i=ACC^7;
sbit j=P2^0;
sbit k=P2^1;
sbit l=P2^2;
sbit m=P2^3;
sbit n=P2^4;
sbit o=P2^5;
sbit q0=P2^0;
sbit q1=P2^1;
sbit q2=P2^2;
sbit q3=P2^3;
sbit q4=P2^4;
sbit q5=P2^5;
sbit q6=P2^6;
sbit q7=P2^7;
void main(void)
{
unsigned int y,z;
P0=0x00;
while(1)
{
P1=0xFF;
P2=0x00;
B=0xFF;
while(ir!=0) // wait till input get low
{}
a=1;
T0M1Delay();
if(ir==1)
{
c=1;
mybit=0;
}
else
{
c=0;
mybit=1;
}
while(ir!=mybit) // wait till the bit toggle
{}
T0M1Delay();
if(ir==1)
{
d=1;
mybit=0;
}
else
{
d=0;
mybit=1;
}
while(ir!=mybit) // wait till the bit toggle
{}
T0M1Delay();
if(ir==1)
{
e=1;
mybit=0;
}
else
{
e=0;
mybit=1;
}
while(ir!=mybit) // wait till the bit toggle
{}
T0M1Delay();
if(ir==1)
{
f=1;
mybit=0;
}
else
{
f=0;
mybit=1;
}
while(ir!=mybit) // wait till the bit toggle
{}
T0M1Delay();
if(ir==1)
{
g=1;
mybit=0;
}
else
{
g=0;
mybit=1;
}
while(ir!=mybit) // wait till the bit toggle
{}
T0M1Delay();
if(ir==1)
{
h=1;
mybit=0;
}
else
{
h=0;
mybit=1;
}
while(ir!=mybit) // wait till the bit toggle
{}
T0M1Delay();
if(ir==1)
{
i=1;
mybit=0;
}
else
{
i=0;
mybit=1;
}
while(ir!=mybit) // wait till the bit toggle
{}
T0M1Delay();
if(ir==1)
{
j=1;
mybit=0;
}
else
{
j=0;
mybit=1;
}
while(ir!=mybit) // wait till the bit toggle
{}
T0M1Delay();
if(ir==1)
{
k=1;
mybit=0;
}
else
{
k=0;
mybit=1;
}
while(ir!=mybit) // wait till the bit toggle
{}
T0M1Delay();
if(ir==1)
{
l=1;
mybit=0;
}
else
{
l=0;
mybit=1;
}
while(ir!=mybit) // wait till the bit toggle
{}
T0M1Delay();
if(ir==1)
{
m=1;
mybit=0;
}
else
{
m=0;
mybit=1;
}
while(ir!=mybit) // wait till the bit toggle
{}
T0M1Delay();
if(ir==1)
{
n=1;
mybit=0;
}
else
{
n=0;
mybit=1;
}
while(ir!=mybit) // wait till the bit toggle
{}
T0M1Delay();
if(ir==1)
{
o=1;
mybit=0;
}
else
{
o=0;
mybit=1;
}
switch(P2)
{
case 0x20:
q0=~q0;
break;
case 0x10:
q1=~q1;
break;
case 0x30:
q2=~q2;
break;
case 0x08:
q3=~q3;
break;
case 0x28:
q4=~q4;
break;
case 0x18:
q5=~q5;
break;
case 0x38:
q6=~q6;
break;
case 0x04:
q7=~q7;
break;
default:
P0=0x00;
break;
}
for(y=0;y<200;y++)
{
for(z=0;z<125;z++)
{}
}
}
}
void T0M1Delay(void)
{
TMOD=0x01; //timer 0 , MODE 1(16 BIT)
TL0=0X99; // LOAD TL0
TH0=0XF9; // LOAD TH0
TR0=1; // TURN ON TIMER
while(TF0==0); // WAIT FO TF 0 TO ROLL OVER
TR0=0;
TF0=0;
}