#include #include volatile int stepperpos = 0; //volatile unsigned char steps[] = {0x01, 0x02, 0x04, 0x08}; volatile unsigned char steps[] = {0x01, 0x03, 0x02, 0x06, 0x04, 0x0c, 0x08, 0x09}; //volatile unsigned char steps[] = {0x03, 0x06, 0x0c, 0x09}; void go(int pos, int delay); void step(int i); void wait(int i); int main() { int i; int loop; int points[] = {10, 21, 19, 3, 21, 16, 10, 31, 10, 27, 0, 12, 22, 5, 15}; DDRC=1; for (loop = 0; loop < 100; loop++) { go(48, 10000); go(0, 10000); // go(12*sizeof(steps) * 0.2, 10000); // go(12*sizeof(steps) * 0, 10000); } go(0, 1000); PORTC=1; wait(10000); PORTC=0; return(0); } void go(int pos, int delay) { int i; if (pos > stepperpos) { for (i = stepperpos; i < pos; i++) { step(i); wait(delay); } } else if (pos < stepperpos) { for (i = stepperpos; i > pos; i--) { step(i); wait(delay); } } stepperpos = pos; } void step(int i) { int nbsteps; nbsteps = sizeof(steps); i = i - ((i / nbsteps) * nbsteps); PORTC=steps[i]; } void wait(int i) { int count; for (count = 1; count <= i; count++) { asm("nop; nop; nop; nop; nop;"); } }