ディップスイッチの状態は?

2005/8/23


動作

AKI-H8/3069FフラッシュマイコンLANボードをマザーボードにとりつけます。
マザーボード上のディップスイッチの状態を読み取ります。

SW1 SW2 SW3 SW4 表示
ON ON ON ON 240
OFF ON ON ON 241
ON OFF ON ON 242
OFF OFF ON ON 243
ON ON OFF ON 244
OFF ON OFF ON 245
ON OFF OFF ON 246
OFF OFF OFF ON 247
 
SW1 SW2 SW3 SW4 表示
ON ON ON OFF 248
OFF ON ON OFF 249
ON OFF ON OFF 250
OFF OFF ON OFF 251
ON ON OFF OFF 252
OFF ON OFF OFF 253
ON OFF OFF OFF 254
OFF OFF OFF OFF 255

注意事項

注意すべきことは「LEDを制御する」と同様、つぎのとおりです。

H8/3069 CN2 LCD-LED-DIP DipSW
A16/P50 37 14 13 1
A17/P51 38 16 15 2
A18/P52 39 18 17 3
A19/P53 40 20 19 4

プログラム

  1. Eclipseを起動して、新しいプロジェクトをつくります。
    プロジェクト名はDipSWにします。


  2. 新規にMakefileとdipsw.cをつくります。


    「LEDを制御する」では、Makefileの修正個所が多数あり、大変だったと思います。こんどは、Makefileを大幅に修正しました。他のプロジェクトへ移行しやすくするために、開発対象名TARGETを宣言しています。この部分を直すだけで再利用できるようにしました。

    Makefile
    ## dipsw.c
    MES2 = /home/j00300/H8/MES2.0b3
    TARGET = dipsw
    
    SOURCE = $(TARGET).c
    OBJ = $(TARGET).o
    ELF = $(TARGET).elf
    
    
    clean :
            rm -f $(OBJ) $(ELF)
            
    all : $(ELF)
    
    $(ELF) : $(OBJ)
            h8300-elf-gcc -Wl,--section-start=.stack=0x400 -B $(MES2)/local/h8300-elf -L$(MES2)/app -mint32 -mh -T $(MES2)/app/h8pic.x -nostartfiles $(MES2)/app/h8piccrt0.S -o $(ELF)  $(OBJ) -lmes_h8
            cp $(ELF) /tftpboot/
            
    $(OBJ) : $(SOURCE)
            h8300-elf-gcc -B $(MES2)/local/h8300-elf -I $(MES2)/app -mint32 -mh -fPIC -O2 -c $(SOURCE)


    dipsw.c
    #include <mes2.h>
    #include <h8/reg3067.h>
    
     
    int main(){
            printf("DIP SW test (AKI-H8/3069)\r");
    
            ABWCR=0xff;
            
            P5DDR=0;
            P5PCR=0x0f;
            
            int i;
            for(i=0;i<16;i++){
            printf("%d\r",P5DR);
            sleep(3000);
            }
    }

  3. プロジェクトをビルドします。


  4. H8/3069FフラッシュマイコンLANボードを起動します。
    xterm(kterm)を起動し、minicomを実行します。
    tftpコマンドでdipsw.elfをAKI-H8/3069Fにダウンロードし、dipsw.elfを実行します。