#include #include #include #define C1H b00000001 #define C1N b00000000 #define C1L b00000010 #define C2H b00000100 #define C2N b00000000 #define C2L b00001000 static int _table_stop=1, _table_pos=0; void table_start() { _table_stop = 0; } void table_stop() { _table_stop = 1; WRITE_PORTJ(0xf0); } int table_get_pos() { return _table_pos; } int table_goto(int pos,int speed) { int dly,delta; delta = _table_pos - pos; if (speed <1) speed = 1; if (speed >100) speed = 100; dly = 10000.0/speed; } int table_set_pos(int pos) { _table_pos = pos; } table_advance(int dir) { static step[8] = {C1H | C2H, C1H | C2N, C1H | C2L, C1N | C2L, C1L | C2L, C1L | C2N, C1L | C2H, C1N | C2H}; if (!_table_stop) { _table_pos += (dir)?1:-1; WRITE_PORTJ(step[_table_pos & 7]); } } delay(int x) { int i; for(i=0;i