This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

is the program is correct?help me

#include<reg51.h>
sbit op1=P0^0;
sbit op2=P0^1;
sbit op3=P0^2;
sbit op4=P0^3;
int c;
void delay(void)//delay .5 second
{ int d;
for(d=0;d<10;d++)
{ TF1=0;//clear overflow flag
TL1=0xB0;
TH1=0x3C;
TR1=1; //start timer
while(TF1==0)
TR1=0; //stop timer
} }
void intr1(void) interrupt 2 //external interrupt1 function
{ EX1=0; //disable all interrupts
TH0=0x00; //reset counter
TL0=0x00;
TR0=1; //start counter
delay();
TR0=0; //stop counter
c=TL0; //store count
EX1=1; //enable all interrupts
} void main()
{ TMOD=0x25; //initialize T0 as 16bit counter and T1 as 16bit timer
IE=0x84; //enable external interrupt 1
if((c>=0x73)&&(c<=0x7D))
{ if(op1==0)
{ op1=1;
} else
{ op1=0;
} }
else if((c>=0x5F)&&(c<=0x69))
{ if(op2==0)
{ op2=1;
} else
{ op2=0;
} }
else if((c>=0x4B)&&(c<=0x55))
{ if(op3==0)
{ op3=1;
} else
{ op3=0;
} }
else if((c>=0x37)&&(c<=0x41))
{ if(op4==0)
{ op4=1;
} else
{ op4=0;
} }
}

Parents
  • Yes - that's why I said "almost certainly"

    As you say, it is possible (though unlikely) that that this is, indeed, the intended behaviour.

    As you said originally, it is impossible to say whether it's "correct" or not without having a proper definition of "correct" - or, indeed, any indication whatsoever of what the program is actually supposed to do!

Reply
  • Yes - that's why I said "almost certainly"

    As you say, it is possible (though unlikely) that that this is, indeed, the intended behaviour.

    As you said originally, it is impossible to say whether it's "correct" or not without having a proper definition of "correct" - or, indeed, any indication whatsoever of what the program is actually supposed to do!

Children