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

How to let the program normally work(use keil c light LD)

I use keil c to write the program
I have a control signal input 0v,5v,I want to let 2 LD cross light.The action is 0v input->LD1 on(LD2 off)and then 5v input->LD1 off(LD2 off),then 0v input->LD2 ON(LD1 off) and then 5v input->LD2 OFF(LD1 OFF) and continue the action
and a stop signal in the LD1 and LD2 should be all off
0V--> LD1 ON LD2 OFF
5V--> LD1 OFF LD2 OFF
OV--> LD1 OFF LD2 ON
5V--> LD1 OFF LD2 OFF
. .
.

I write a program but it can just light 1 LD and stop signal in the light won't off
my program is as following:

void main(void)
{ SHin=1; //the 0v,5v signal stop=1; //let the stop be input LD1=1; //initial ld1 off LD2=1; // initial ld2 off LDno=0; if (stop==0) { LD1=1; LD2=1; } if(SHin==0) { LDno++; if(LDno>1) LDno=0; } else//(SHin==1) { LD1=1; LD2=1; } if(LDno==0) { LD1=0; LD2=1; } else if(LDno==1) { LD2=0; LD1=1; }
please help me!!
Thank you very much!!

  • Please READ the Tips for Posting Messages, and use the PRE tags for source code.

    Program looks to be an incomplete jumble. Does it loop? Does it crash out of main()?

  • void main(void)
    {
      SHin=1; //the 0v,5v signal
      stop=1; //let the stop be input
      LD1=1; //initial ld1 off
      LD2=1; // initial ld2 off
      LDno=0;
      if (stop==0)
       {
         LD1=1;
         LD2=1;
       }
      if(SHin==0)
       {
         LDno++;
      if(LDno>1)
         LDno=0;
       }
      else
       {
         LD1=1;
         LD2=1;
       }
      if(LDno==0)
       {
         LD1=0;
         LD2=1;
       }
      else if(LDno==1)
       {
         LD2=0;
         LD1=1;
       }
    <\pre>
    it will cross light,but it light as 0v->LD1 on LD2 off,5v->LD2 on LD1 off