/******************************************************** PCD4511ステッピングコントローラテスト RIKIYA 2003.11.23 PIC16F873 npm103.c Port C Port B PortA 0:CS OUT 0:DATA0 OUT 0:--- OUT 1:RD OUT 1:DATA1 OUT 1:--- OUT 2:WR OUT 2:DATA2 OUT 2:--- OUT 3:A0 OUT 3:DATA3 OUT 3:--- OUT 4:A1 OUT 4:DATA4 OUT 4:--- OUT 5:RST OUT 5:DATA5 OUT 5:BUSY IN 6:TxD OUT 6:DATA6 OUT 7:RxD IN 7:DATA7 OUT シリアル通信でコマンドを受け取り、ステッピングモータの 制御を行う。 **********************************************************/ #include <16f873.h> #include #include #fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP #use delay(clock = 10000000) // clock 10MHz #use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7) /* メイン関数 **********************************************/ void main(){ int i; long p_data; char rxdata[10],para[9]; pcd_init(); //PCD4511の初期化 pcd_ots(0); //OTS出力なし pcd_cw(0); //正転 pcd_speed(200); //200ppsを回転速度に設定 while(1){ printf("Input Command and Enter \r\n"); gets(rxdata); puts(rxdata); //パラメータ部分の抽出 for(i=0;i<9;i++){ para[i] = rxdata[i+1]; if(rxdata[i+1] == '\0') i = 9; } //パラメータの数値化 p_data = atol(para); switch(rxdata[0]){ case 's': //回転開始 pcd_start(); break; case 'e': //回転停止 pcd_stop(); break; case 'c': //回転方向 pcd_cw(p_data); break; case 'p': //回転速度 pcd_speed(p_data/2); break; case 'r': //回転角度 pcd_precnt(p_data); break; case 'o': //OTS出力 pcd_ots(p_data); break; default: } } }