#define DELAY 800
#define STEPS 176 // 160 steps forward is 36 degrees. x=10240/(64-y) (y = stepsbackwards)
#define STEPSBACKWARDS 6 // from 32 steps this many steps backwards
bit pulse;
unsigned int i;
void DriveMotor(void) {
int u = 0;
for(i=0 ; i < STEPS ; i++){
if ((i & (1<<5)) && (u < STEPSBACKWARDS)) { // after every 32th step, will have 6 steps backwards
LATB.b1 = 0; // direction backwards
u++;
} else LATB.b1 = 1; // direction forward
if (!(i & (1<<5))) { // next 32 steps normally forward
u = 0;
LATB.b1 = 1;
}
pulse = !pulse;
LATB.B2 = pulse;
delay_us(DELAY);
}
delay_ms(400);
}
void main() {
InitMain();
while(1) {
if (button(&PORTB,3,1,0))
{
LATB.b1 = 1;
DriveMotor() ;
}
}
}