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();
}
}
}
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();
}
}
}