#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จะกดสวิตซ์ได้แค่ครั้งเดียว ต้องหยุดการทำงานของวงจร แล้วกดเริ่มอีกครั้ง จึงจะกดสวิตซ์ได้อีกที ต้องทำแบบนี้ตลอด ผมต้องแก้ไขหรือเพิ่มคำสั่งอะไร ตรงไหนบ้าง ช่วยเเนะนำหน่อยครับ
ช่วยแนะนำหน่อยครับทำไงให้โปรแกรมนี้ทำงานได้ต่อเนื่องครับ
#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จะกดสวิตซ์ได้แค่ครั้งเดียว ต้องหยุดการทำงานของวงจร แล้วกดเริ่มอีกครั้ง จึงจะกดสวิตซ์ได้อีกที ต้องทำแบบนี้ตลอด ผมต้องแก้ไขหรือเพิ่มคำสั่งอะไร ตรงไหนบ้าง ช่วยเเนะนำหน่อยครับ