#include <12F675.h> #fuses INTRC_IO,NOWDT,NOPROTECT,NOMCLR,BROWNOUT #use delay(clock=4000000) #use rs232(baud=9600,xmit=PIN_A0,rcv=PIN_A3,parity=N,bits=8) unsigned char txData[12]; unsigned char rxData[4]; /*com95*/ void com95(int ch, long startSpd, long accStep, long maxSpd) { int i; txData[0] = 255; //シンクロバイト txData[1] = 20; //ID txData[2] = 8; //バイト長 txData[3] = 95; //命令 txData[4] = ch; //ch 0:Ach 1:Bch txData[5] = (unsigned char)(startSpd>>8); //開始速度上位 txData[6] = (unsigned char)(startSpd & 0x00FF); //開始速度下位 txData[7] = (unsigned char)(accStep>>8); //加速ステップ数上位 txData[8] = (unsigned char)(accStep & 0x00FF); //加速ステップ数下位 txData[9] = (unsigned char)(maxSpd>>8); //上限速度上位 txData[10] = (unsigned char)(maxSpd & 0x00FF); //上限速度下位 for(i=0; i<11; i++){ //送信 putc(txData[i]); } } /*com105*/ void com105(int ch, int mode, int dir, long step) { int i; txData[0] = 255; //シンクロバイト txData[1] = 20; //ID txData[2] = 6; //バイト長 txData[3] = 105; //命令 txData[4] = ch; //ch 0:Ach 1:Bch txData[5] = mode; //モード 1:ハーフステップ 2:2相励起 3:マイクロステップ txData[6] = dir; //方向 0:停止 1:CW 2:CCW txData[7] = (unsigned char)(step>>8); //ステップ数上位 txData[8] = (unsigned char)(step & 0x00FF); //ステップ数下位 for(i=0; i<9; i++){ //送信 putc(txData[i]); } } /*----------------------------------------------*/ /* main */ /*----------------------------------------------*/ void main(void) { delay_ms(2000); /* wait for SAC start up */ com95(0,100,20,500); //AchのSTM加速設定 while(1){ /* main loop */ com105(0,2,1,1000); //Achを2相励起でCW方向に1000ステップ実行 delay_ms(5000); } }