ช่วยแนะนำหน่อยครับทำไงให้โปรแกรมนี้ทำงานได้ต่อเนื่องครับ

#include<16f877.h>
#use delay(clock=20000000)
#fuses HS,NOWDT

#define IN1_B0
#define IN2_B1
#define ENA_C1

#define IN3_D0
#define IN4_D1
#define ENB_C2

#define s1 input(PIN_E0)
#define s2 input(PIN_E1)
#define s3 input(PIN_E2)

void main()
{
   set_tris_B(0x00);
   set_tris_C(0x00);
   set_tris_D(0x00);
   set_tris_E(0x0f);

   while(1)
    {
       output_b(0x00);
       output_c(0x00);
       output_d(0x00);

       if(!s1)
         {
            output_low(IN1);
            output_high(IN2);
            output_high(ENA);

            output_low(IN3);
            output_high(IN4);
            output_high(ENB);

            delay_ms(2000);
          }
       if(!s2)
         {
            output_high(IN1);
            output_low(IN2);
            output_high(ENA);

            output_high(IN3);
            output_low(IN4);
            output_high(ENB);

            delay_ms(2000);
          }
       if(!s3)
         {
            output_low(IN1);
            output_low(IN2);
            output_low(ENA);

            output_low(IN3);
            output_low(IN4);
            output_low(ENB);

            delay_ms(2000);
          }
       }
   }

โปรแกรมประมาณนี้ครับ รันผ่านเเต่พอไปทดลองในprteusจะกดสวิตซ์ได้แค่ครั้งเดียว ต้องหยุดการทำงานของวงจร แล้วกดเริ่มอีกครั้ง จึงจะกดสวิตซ์ได้อีกที ต้องทำแบบนี้ตลอด ผมต้องแก้ไขหรือเพิ่มคำสั่งอะไร ตรงไหนบ้าง ช่วยเเนะนำหน่อยครับ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่