Ðăng Nhập

View Full Version : giúp em làm đề tài dộng cơ bước


magic_boy_1989
23-11-2010, 01:11 AM
Em dang làm đề tài về động cơ bước và có ngâm cứu vài code viết sẵn ,e đã sửa lại nhưng sau nó không chạy dúng , mong mấy huynh giúp đở , phím stop(B0),forward (B2),Reverse(B4)
nhưng mạch khi mô phổng lại không đúng ,
Code đây :
#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use fast_io(B)
#use fast_io(D)
#define stop input(pin_B0)
#define forward input(pin_B2)
#define reverse input(pin_B4)

int8 bienxoay=0x99,sovong,sobuoc,dem=0;
////////////////Chuong Trinh Con////////////////////////////////////


/*================================================= =================*/
void dung()
{
delay_us(100);
while(stop==0) {};
sobuoc=0;
sovong=0;
output_D(0);
output_A(0);
output_C(0xFF);
}

/*================================================= =================*/
void quaythuan()
{
while(true)
{
output_D(bienxoay);
sobuoc++;
if(sobuoc==97)
{
sobuoc=0;
sovong++;
if (sovong==100)
{
sobuoc=0;
sovong=0;
}
}


rotate_right(&bienxoay,1);

if(stop==0)
{
dung();
break;
}
delay_ms(10);

}
}
/*================================================= =================*/
void quaynghich()
{

while(true)
{
output_D(bienxoay);
sobuoc++;
if(sobuoc==97)
{
sobuoc=0;
sovong++;
if (sovong==100)
{
sobuoc=0;
sovong=0;
}
}

rotate_left( &bienxoay,1);


if(stop==0)
{
dung();
break;
}
delay_ms(10);
}
}

/*======================Chuong Trinh Chinh================================*/
void main()
{

set_tris_B(0xFF);
set_tris_D(0);

while(true)
{
if (forward==0)
{
delay_us(100);
while(forward==0)
{
sobuoc=0;
sovong=0;
};
quaythuan();
}
else if (reverse==0)
{
delay_us(100);
while(reverse==0)
{
sobuoc=0;
sovong=0;
};
quaynghich();
}
}
}