/****************************************/ /* PWMテスト1 RIKIYA 2001/05/02 */ /* pwmtest1.c */ /* H8-3048F */ /* ITU0を使ったPWM基本動作テスト */ /****************************************/ #include <3048f.h> /* メイン関数 ********************************************/ void main(void){ ITU.TMDR.BIT.PWM0 = 1; /* ITU0 PWMモード */ ITU0.TCR.BYTE = 0x43; /* GRBコンペアマッチ clock 1/8 */ ITU0.GRA = 0xFFFE; /* GRAを65534に設定 */ ITU0.GRB = 0xFFFD; /* GRBを65533に設定 */ ITU.TSTR.BIT.STR0 = 0; /* カウント停止状態 */ PA.DDR = 0xff; /* portA出力に設定*/ P4.DDR = 0x00; /* port4入力に設定 操作用sw1〜4*/ P4.PCR.BYTE = 0xff; /* port4プルアップon */ PA.DR.BIT.B3 = 0; /* portA bit3を0固定とする*/ ITU.TSTR.BIT.STR0 = 1; /* カウント開始 */ while(1){ if(P4.DR.BIT.B4 == 0){ /*sw1の入力検出 */ ITU0.GRA = 0xE665; /* GRAを58981に設定 */ } /* デューティー比0.1*/ else if(P4.DR.BIT.B5 == 0){ /*sw2の入力検出 */ ITU0.GRA = 0x7FFF; /* GRAを32767に設定 */ } /* デューティー比0.5*/ else if(P4.DR.BIT.B6 == 0){ /*sw3の入力検出 */ ITU0.GRA = 0x4CCC; /* GRAを19660に設定 */ } /* デューティー比0.7*/ else if(P4.DR.BIT.B7 == 0){ /*sw4の入力検出 */ ITU0.GRA = 0x1999; /* GRAを6553に設定 */ } /* デューティー比0.9*/ else{ /*入力が無い時の処理 */ ITU0.GRA = 0xFFFE; /* GRAを65534に設定 */ } /* デューティー比0 */ } }