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
  • Saw this and thought OMG.

    To the OP:

    If the program does what you want it to do, then it could be considered correct.

    I doubt it does what you want it to do though.

    Here is a readable version:

    #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;
        }
      }
    }
    

Reply
  • Saw this and thought OMG.

    To the OP:

    If the program does what you want it to do, then it could be considered correct.

    I doubt it does what you want it to do though.

    Here is a readable version:

    #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;
        }
      }
    }
    

Children