Điều khiển động cơ bước chế độ half-step
chào cả nhà!Khi mà biến ttre tăng hoặc giảm đến ngưỡng thì ta giữ giá trị ở ngưỡng đó,lúc đó ta dùng lệnh j vậy?tại e chạy trên mô phỏng thì khi xung tăng/giảm đến ngưỡng rồi lại bị reset về mức đầu.
Code:
#include <REGX51.H>
unsigned char steps[] = {0x01,0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x09};
char step=0;
unsigned char ttre;
#define thuan P2_0
#define nguoc P2_1
#define nhanh P2_2
#define cham P2_3
#define dung P2_4
void tre(unsigned char i)
{
unsigned char j =0;
for(j=0;j<i;j++)
{
TMOD = 0x01 ; // che do 16 bit;
TH0 = 0xFF;
TL0 = 0x9B ;
TR0 =1 ; // khoi dong
while(!TF0);
TF0 =0; // xóa tràn
TR0 =0 ; // stop bo dinh thoi
}
}
void dieukhien()
{
P3=steps[step];
if(thuan==0)
{
step++;
if(step>=8)
step=0;
}
else if(nguoc==0)
{
step--;
if(step<0)
step=7;
}
}
void main()
{
while(1)
{
dieukhien();
if(nhanh==0)
{
ttre--;
if(ttre<=1)
{
ttre=1;
//tre(ttre);
}
}
else if(cham==0)
{
ttre++;
if(ttre>400)
{
ttre=400;
// tre(ttre);
}
}
tre(ttre);
}
}
