|
てきとう さん
こんにちは。ありがとうございます。 > MT-E503の取説をぱっとみて思ったことです > SWの選択にVP15,VP14を使用するのではないでしょうか?
使用しています。
> SW1の押下を検出したい場合、VP15に0,VP14に0を出力してVP10で検出する > SW2の押下を検出したい場合、VP15に0,VP14に1を出力してVP10で検出する > VP10 SW1,SW2,SW3,SW4の押下検出 > VP11 SW5,SW6,SW7,SW8の押下検出 > VP12 SW9,SW10,SW11,SW12の押下検出 > VP13 SW13,SW14,SW15,SW16の押下検出 > > SWの選択はスキャン信号の値でおこなう
下記のソースでソースラインデバックをすると、SW1とSW2に対応したそれぞれのLED1LED2が点灯するのですが ソースラインデバックではなく、実行するとLED1LED2が同時に点灯してしまいます。 waitが必要なのでしょうか?
ポートはh8/3694のポート5に以下のように接続されているものとします。 今回VP13-VP11は使用していません。
> VP(仮想)ポートのポート > ↓ h8/3694ポート5のビット割当 > ↓ ↓ > VP16 アウトプットイネーブル 6b > VP15 スキャン信号ビット1 5b > VP14 スキャン信号ビット0 4b > VP13 LEDデコーダビット 3 3b > VP12 LEDデコードビット2 2b > VP11 LEDデコーダビット1 1b > VP10 LEDデコーダビット0 0b
void main(void) { while(1) { volatile unsigned int sw = 0; PDR5 = 0x00; // > SW1の押下を検出したい場合、VP15に0,VP14に0を出力して sw = PDR5; // > VP10で検出する (スイッチの値検出) if(sw == 0x01) { PDR8 = 0x02; //LED1点灯 PDR8 = 0x00; //LED1消灯 } PDR5 = 0x10; // > SW2の押下を検出したい場合、VP15に0,VP14に1を出力して sw = PDR5; // > VP10で検出する(スイッチの値検出) if(sw == 0x11) { PDR8 = 0x04; //LED2点灯 PDR8 = 0x00; //LED2消灯 } } }
以上よろしくお願いします。
|