四国ポリテクカレッジの中尾と申します。 H8/3048FのプログラムをCygwin+gccで行っているのですが、次のような掛け算 を行うとうまく行きません。A/D、D/Aはきちんと動作しているのを確認しました。 入力には方形波を入力しています。 //A/D変換終了割り込み unsigned long temp1 = 0; unsigned short input_data = 0; void ad_end() { outb(H8ADC+H8ADC_ADCSR, inb(H8ADC+H8ADC_ADCSR) & ~H8ADCSR_ADF); /* A/D変換終了フラグをクリア */ input_data = inb(H8ADC + H8ADC_ADDRAH); /* A/D変換値上位8bit取得 */ input_data = input_data << 8; input_data = input_data | inb(H8ADC + H8ADC_ADDRAL); /* A/D変換値下位8bit取得 */ input_data = input_data >> 1; /* Q.15フォーマットに変換する */ temp1 = input_data * 0x745d; /* temp1にはQ.30フォーマットで保存される */ outb(H8DAC + H8DAC_DADR0, (unsigned char)(input_data >> 21)); asm("bnot #0, @0xffffca:8"); /* デバッグ用LED出力 */ } 掛け算を行わなければうまく行くのですが、掛け算を行うとうまく行きません。 掛け算を行うと出力が0になってしまいます。アセンブラに変換して確認したので すがきちんとできているようでした。 何かヒントなどを教えていただければ幸いです。 ----------------- 四国職業能力開発大学校 中尾 亀三継 nakao@xxxxxxxxxxxxxxx