#include sbit TxData=P0^6; sbit RxData=P0^7; sbit Run=P1^5; #define PAUSE while(1)if(Run==0)break; char n=0; /*-------------------------------步伐数据---------------------------------------------*/ unsigned char code StepData0[]={ 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x00,0x02,0xFA,0x00,0x01,0x00,0x02,0xFA,0x00,0x02,0x00,0x02,0xFA,0x00,0x03,0x00,0x02,0xFA,0x00,0x04,0x00,0x02,0xFA,0x00,0x05,0x00,0x02,0xFA,0x00,0x43, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xD6,0x01,0xFA,0x00,0x01,0xDD,0x01,0xFA,0x00,0x02,0xF6,0x01,0xFA,0x00,0x03,0x96,0x02,0xFA,0x00,0x04,0xC1,0x02,0xF4,0x01,0x05,0x3A,0x02,0x2C,0x01,0xDE, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x09,0x02,0xFA,0x00,0x01,0x79,0x01,0xFA,0x00,0x02,0x6B,0x01,0xFA,0x00,0x03,0x6D,0x02,0xFA,0x00,0x04,0x8F,0x02,0x96,0x00,0x05,0x18,0x02,0x96,0x00,0x0C, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xC7,0x01,0x96,0x00,0x01,0xEB,0x00,0x2C,0x01,0x02,0x36,0x01,0x2C,0x01,0x03,0x03,0x02,0x96,0x00,0x04,0x2B,0x02,0x64,0x00,0x05,0x17,0x02,0x96,0x00,0x76, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xD4,0x01,0xFA,0x00,0x01,0x6E,0x01,0xC8,0x00,0x02,0x9A,0x01,0xC8,0x00,0x03,0xDF,0x01,0xFA,0x00,0x04,0x64,0x02,0x64,0x00,0x05,0x76,0x02,0x64,0x00,0x42, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xFE,0x01,0x96,0x00,0x01,0xD1,0x01,0x96,0x00,0x02,0xD6,0x01,0x96,0x00,0x03,0x49,0x02,0x96,0x00,0x04,0x02,0x03,0xC8,0x00,0x05,0xB2,0x02,0xC8,0x00,0x97, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xFE,0x01,0x96,0x00,0x01,0x63,0x01,0x96,0x00,0x02,0x45,0x01,0x96,0x00,0x03,0x8F,0x02,0x96,0x00,0x04,0xE9,0x02,0x96,0x00,0x05,0x7B,0x02,0x96,0x00,0x05, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x9A,0x01,0x96,0x00,0x01,0x04,0x01,0x2C,0x01,0x02,0x4A,0x01,0x2C,0x01,0x03,0x1C,0x02,0x96,0x00,0x04,0x08,0x02,0xFA,0x00,0x05,0x08,0x02,0x96,0x00,0xF8, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x00,0x02,0xFA,0x00,0x01,0x00,0x02,0xFF,0x03,0x02,0x00,0x02,0xF4,0x01,0x03,0x00,0x02,0xF4,0x01,0x04,0x00,0x02,0xF4,0x01,0x05,0x00,0x02,0xF4,0x01,0x4F,}; unsigned int code StepDataDelay0[]={300-250,300,270,300,270,300,270,300,300}; unsigned char code StepData1[]={ 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x00,0x02,0xFA,0x00,0x01,0x00,0x02,0xFA,0x00,0x02,0x00,0x02,0xFA,0x00,0x03,0x00,0x02,0xFA,0x00,0x04,0x00,0x02,0xFA,0x00,0x05,0x00,0x02,0xFA,0x00,0x43, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xB4,0x00,0x90,0x01,0x01,0x11,0x03,0xE6,0x00,0x02,0x00,0x02,0x96,0x00,0x03,0x43,0x03,0x90,0x01,0x04,0xCD,0x00,0xE6,0x00,0x05,0x00,0x02,0x96,0x00,0x32, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xB4,0x00,0xFA,0x00,0x01,0x18,0x03,0xC8,0x00,0x02,0xF9,0x01,0xC8,0x00,0x03,0xE4,0x02,0xE8,0x03,0x04,0xCF,0x00,0xC8,0x00,0x05,0xFB,0x01,0xC8,0x00,0xAC, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xBF,0x00,0xFA,0x00,0x01,0x12,0x03,0xC8,0x00,0x02,0xF3,0x01,0xC8,0x00,0x03,0xB1,0x00,0x5E,0x01,0x04,0xFF,0x02,0xFF,0x03,0x05,0xDB,0x01,0xF4,0x01,0xF5, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x26,0x01,0xE8,0x03,0x01,0x19,0x03,0xC8,0x00,0x02,0xF6,0x01,0xC8,0x00,0x03,0xB1,0x00,0x2C,0x01,0x04,0xFF,0x02,0x5E,0x01,0x05,0xDB,0x01,0xC8,0x00,0x94, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x49,0x03,0x90,0x01,0x01,0x07,0x01,0xBC,0x02,0x02,0x2A,0x02,0xF4,0x01,0x03,0xB1,0x00,0x2C,0x01,0x04,0xFF,0x02,0x5E,0x01,0x05,0xDB,0x01,0xC8,0x00,0x85, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x00,0x02,0x2C,0x01,0x01,0x00,0x02,0x2C,0x01,0x02,0x00,0x02,0x90,0x01,0x03,0x00,0x02,0x2C,0x01,0x04,0x00,0x02,0x2C,0x01,0x05,0x00,0x02,0x90,0x01,0x49,}; unsigned int code StepDataDelay1[]={50,800-50,100,600-100-200,400-300,500+250-50,400,}; unsignedintcodeStepDataDelay6[]={50,800-50,100,600-100-200,400-300,500+250-50,400,}; unsigned char code StepData2[]={ 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x00,0x02,0xFA,0x00,0x01,0x00,0x02,0xFA,0x00,0x02,0x00,0x02,0xFA,0x00,0x03,0x00,0x02,0xFA,0x00,0x04,0x00,0x02,0xFA,0x00,0x05,0x00,0x02,0xFA,0x00,0x43, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x98,0x02,0x96,0x00,0x01,0x15,0x01,0x2C,0x01,0x02,0xCC,0x01,0x96,0x00,0x03,0x65,0x01,0x96,0x00,0x04,0xED,0x02,0x2C,0x01,0x05,0x35,0x02,0x96,0x00,0x70, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x49,0x03,0x30,0x02,0x01,0xEB,0x00,0x64,0x00,0x02,0x01,0x02,0x64,0x00,0x03,0xB7,0x00,0x30,0x02,0x04,0x17,0x03,0x64,0x00,0x05,0xE9,0x01,0x64,0x00,0x42, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xE2,0x02,0xE8,0x03,0x01,0xEB,0x00,0x96,0x00,0x02,0x01,0x02,0xBE,0x00,0x03,0xB7,0x00,0x4A,0x01,0x04,0x17,0x03,0x96,0x00,0x05,0xE9,0x01,0xBE,0x00,0xC0, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xB0,0x00,0x90,0x01,0x01,0x17,0x03,0xF4,0x01,0x02,0x00,0x02,0xF4,0x01,0x03,0xB7,0x00,0x5E,0x01,0x04,0x21,0x03,0x5E,0x01,0x05,0xE9,0x01,0xBE,0x00,0xA3, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xB0,0x00,0x5E,0x01,0x01,0x17,0x03,0x5E,0x01,0x02,0x00,0x02,0xBE,0x00,0x03,0x22,0x01,0xE8,0x03,0x04,0x21,0x03,0x5E,0x01,0x05,0xE9,0x01,0xBE,0x00,0xAA, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xB0,0x00,0x5E,0x01,0x01,0x17,0x03,0x5E,0x01,0x02,0x00,0x02,0xBE,0x00,0x03,0x4A,0x03,0xFF,0x03,0x04,0xD6,0x00,0xFF,0x03,0x05,0x00,0x02,0x84,0x03,0x33, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x00,0x02,0x2C,0x01,0x01,0x00,0x02,0x5E,0x01,0x02,0x00,0x02,0x5E,0x01,0x03,0x00,0x02,0x2C,0x01,0x04,0x00,0x02,0x5E,0x01,0x05,0x00,0x02,0x5E,0x01,0x49, }; unsigned int code StepDataDelay2[]={400-250,450-50,300-100,60,700-400,120-20,600+100,400-50,}; //unsigned int code StepDataDelay3[]={400-250,450-50+100,300-100+100,60,700-400,120-20,600+100,500+100,}; unsigned char code StepData4[]={ 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x00,0x02,0xFA,0x00,0x01,0x00,0x02,0xFA,0x00,0x02,0x00,0x02,0xFA,0x00,0x03,0x00,0x02,0xFA,0x00,0x04,0x00,0x02,0xFA,0x00,0x05,0x00,0x02,0xFA,0x00,0x43, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x06,0x02,0x2C,0x01,0x01,0x14,0x02,0x82,0x00,0x02,0x1C,0x02,0xC8,0x00,0x03,0x6E,0x02,0x16,0x03,0x04,0xF3,0x02,0x68,0x01,0x05,0x7A,0x02,0xE6,0x00,0x2F, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xAE,0x02,0xEB,0x00,0x01,0x07,0x02,0x96,0x00,0x02,0x5C,0x01,0x96,0x00,0x03,0xBC,0x02,0x5A,0x00,0x04,0x55,0x02,0x54,0x01,0x05,0x88,0x01,0xFF,0x03,0xAF, }; unsigned int code StepDataDelay4[]={1000-900,300,550,}; unsigned char code StepData5[]={ 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x01,0x02,0xFF,0x03,0x01,0x11,0x01,0x96,0x00,0x02,0x0F,0x01,0xFF,0x03,0x03,0xE6,0x01,0xE6,0x00,0x04,0xEA,0x01,0x46,0x00,0x05,0x0B,0x02,0x64,0x00,0xFD, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x5C,0x01,0xFF,0x03,0x01,0x2E,0x01,0x1C,0x02,0x02,0xBA,0x01,0xB2,0x02,0x03,0xFB,0x01,0x49,0x00,0x04,0xEF,0x01,0x64,0x00,0x05,0xEE,0x01,0x50,0x00,0x38, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x25,0x01,0x5A,0x00,0x01,0x7E,0x01,0x54,0x01,0x02,0x56,0x02,0xFF,0x03,0x03,0x62,0x01,0xEB,0x00,0x04,0x0F,0x02,0x96,0x00,0x05,0xB1,0x02,0x96,0x00,0x3F, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x00,0x02,0xFF,0x03,0x01,0xE8,0x01,0x50,0x00,0x02,0xF1,0x01,0x64,0x00,0x03,0xE2,0x01,0xE8,0x03,0x04,0xD8,0x02,0x82,0x00,0x05,0xFF,0x02,0xE8,0x03,0x82, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xFF,0x01,0x64,0x00,0x01,0x14,0x02,0x64,0x00,0x02,0x1D,0x02,0x6E,0x00,0x03,0xBE,0x02,0xE8,0x03,0x04,0xF8,0x02,0x82,0x00,0x05,0x57,0x02,0xFE,0x01,0x41, 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0xAE,0x02,0x04,0x01,0x01,0x07,0x02,0x96,0x00,0x02,0x5C,0x01,0xA0,0x00,0x03,0xBC,0x02,0xC8,0x00,0x04,0x55,0x02,0x54,0x01,0x05,0x88,0x01,0x7C,0x01,0xA2, }; unsigned int code StepDataDelay5[]={700,150,700,680,150,450,}; unsigned char code StepData7[]={ 0xFF,0xFF,0xFE,0x22,0x83,0x1E,0x04,0x00,0x00,0x02,0xFA,0x00,0x01,0x00,0x02,0xFA,0x00,0x02,0x00,0x02,0xFA,0x00,0x03,0x00,0x02,0xFA,0x00,0x04,0x00,0x02,0xFA,0x00,0x05,0x00,0x02,0xFA,0x00,0x43, }; unsigned int code StepDataDelay7[]={10}; void pio_init(void); void sys_init(void); void UART_init(void); void T1_init(void); void T0_init(void); void interrupt_init(void); void delay_1ms(unsigned int); void send(unsigned char *StepData,unsigned int StepDataSize ,unsigned int *StepDataDelay); void main(void) { PCA0MD &= ~0x40; pio_init(); sys_init(); T1_init(); T0_init(); interrupt_init(); UART_init(); TxData=1; RxData=0; delay_1ms(500); SBUF0=0; //置位TI0 send(StepData7,sizeof(StepData7),StepDataDelay7); //立正 PAUSE; //默认为立正 send(StepData0,sizeof(StepData0),StepDataDelay0); //向前走三步 send(StepData1,sizeof(StepData1),StepDataDelay1); //向前翻三次 send(StepData1,sizeof(StepData1),StepDataDelay1); send(StepData1,sizeof(StepData1),StepDataDelay6); send(StepData0,sizeof(StepData0),StepDataDelay0); //立正后向前进 send(StepData2,sizeof(StepData2),StepDataDelay2); //向后翻三次 send(StepData2,sizeof(StepData2),StepDataDelay2); send(StepData2,sizeof(StepData2),StepDataDelay2); send(StepData4,sizeof(StepData4),StepDataDelay4); //前进 while(1) { send(StepData5,sizeof(StepData5),StepDataDelay5); } while(1){;;} } void send(unsigned char *StepData,unsigned int StepDataSize,unsigned int *StepDataDelay) { unsigned int num=0; //寄存器当前数据 char count=38; //38个一组发数据用 unsigned int k=0; //发延时数据用 while(1) { if(TI0==1) { TI0=0; SBUF0=StepData[num]; //修改点2 StepData0[num]-->StepDatax[num] count--; if(count==0) { count=38; delay_1ms(StepDataDelay[k]); //修改点3 StepDataDelay0[k]-->StepDataDelayx[k] k++; } num++; if(num>=StepDataSize)break; } } } void delay_1ms(unsigned int time) //定时时间为time*1 (ms) { unsigned int i; for(i=0;i