LEDを制御する

2005/8/23


動作

AKI-H8/3069FフラッシュマイコンLANボードをマザーボードにとりつけます。
マザーボード上の赤LEDと緑LEDを点灯・消灯します。LEDの動作は

  1. 250[mSec]ごとに赤と緑のLEDが同時に10回点滅します。
  2. 250[mSec]ごとに赤と緑のLEDが交互に10回点滅します。
  3. 最後にLEDは消灯します。

です。

注意事項

注意すべきことはつぎのとおりです。

H8/3069 CN2 LCD-LED-DIP LED
D6/P46 11 22 21 LED1(赤)
D7/P47 12 24 23 LED2(緑)

プログラム

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


  2. 新規にMakefileとled.cをつくります。
    Makefileは「Hello World !!」とほぼ同じです。


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

    led.c
    #include <mes2.h>
    #include <h8/reg3067.h>
    
    #define LED1    64
    #define LED2    128
     
    int main(){
        printf("LED test (AKI-H8/3069)\r");
    
            unsigned char bits;
    
            ABWCR=0xff;
            
            bits = LED1 ;
            bits |= LED2 ;
            
            int i;
            for(i=0;i<10;i++){
            P4DR = bits ;
            sleep(250);
            P4DR = 0 ;
            sleep(250);
            }
            
            for(i=0;i<10;i++){
            P4DR = LED1 ;
            sleep(250);
            P4DR = LED2 ;
            sleep(250);
            }
            
            P4DR = 0;
            printf("LED turn on ?\r");
    }

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

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