#include<3694.h> char txData[12],rxData[4]; //送受信データ格納用配列 /* Initial SCI3 */ void initSCI3 () { IO.PMR1.BIT.TXD = 1; //P22端子をTXDに選択 SCI3.SCR3.BIT.TE = 1; //送信許可 SCI3.SCR3.BIT.RE = 1; //受信許可,P21端子をRXDに選択 SCI3.SCR3.BIT.CKE = 0; //クロックソースを内部ボーレートジェネレータへ SCI3.SMR.BYTE = 0x00; //調歩同期、8ビット、パリティなし、ストップ1、クロックn=0 SCI3.BRR = 64; //ボーレートを9600bpsに設定 SCI3.SSR.BIT.TDRE = 0; //送信バッファクリア } /* Send a Data */ void sendSCI3_DATA (char c) { while (SCI3.SSR.BIT.TDRE == 0); //送信バッファが空いてなかったら待つ SCI3.TDR = c; //送信バッファにセット } /*----------------------------------------------------------------------------------------*/ /* 引数x1msウェイト */ /* (CPUクロック20MHz、1/128クロックで1カウントモード、156倍で19968クロック=約1mS) */ /*----------------------------------------------------------------------------------------*/ void wait (int spd) { TV.TCRV0.BYTE = 0x03; //下の行と合わせて1/128クロックで1カウントモード TV.TCRV1.BYTE = 0X01; TV.TCNTV = 0; //カウンタクリア while (spd){ /*1mSウェイト*/ while(TV.TCNTV < 156); TV.TCNTV = 0; //カウンタクリア spd--; } } void main (void) { int i; initSCI3(); txData[0] = 255; //シンクロバイト txData[1] = 20; //ID txData[2] = 2; //バイト長 txData[3] = 1; //命令:1 txData[4] = 0x00; //設定(全停止) while(1){ txData[4] = 0x01; //正転に設定 for (i = 0; i < 5; i++){ //送信 sendSCI3_DATA(txData[i]); } wait(1000); //1秒間そのまま txData[4] = 0x02; //逆転に設定 for (i = 0; i < 56; i++){ //送信 sendSCI3_DATA(txData[i]); } wait(1000); //1秒間そのまま } } // (c)2007.浅草ギ研