本文へスキップ

未来の科学技術を子供たちに託す。 ジュニロボ <JRO>

〒619-0237 京都府相楽郡精華町光台8丁目

TEL. 070-5263-2200

jun@kinet-tv.ne.jp

SHマイコンを使った組込ソフトの勉強( 上級者用 )                       RECRUI


  プログラムの作成( I/O ボード制御 )



   ここでの課題は、LED1をコントロールする為のアドレス指定です。
   LED を制御する為のアドレスは、0x03 です。

   この課題に入る前に注意があった様に、上位 3 Bit を、B'101 とする様になっていました。そうすると下記の様に読みかえる必要があります。

        ビット    32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01

        B'101      1 0 1 
        B'1800,000       1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    ―ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
        B'B800,000  1 0 1 1 1 0 0 0 −−−−>                               0

   したがって、LED を制御するレジスタ・アドレスは、「 B'B800,0003 」となります。
   単体 LED1 ~ LED8のビット位置は下記の表を参照して下さい。



/*-------------------------------------------------------------------------------------------------------------------------------------------------------
     LED1 を点灯させる。
     File Name : led_01.c

-------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define  LEDX  ( * ( volatile unsigned char * ) 0xB8000003 )

void main(void)
{
 while(1)
 {
   LEDX = 0x01;
 }
}
//------------------------------------------------------------------------------------------------------------------



 

   上記写真では少し照明ムラが有り解り難いですが、一番右側にある LED1 が消灯(左写真)から、点灯(右写真:赤丸部 )しました。









   LED 制御レジスタ・アドレスは同様なので、個別 LED 指定のみを変更するだけです。

      BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
      点灯  点灯  消灯  消灯  消灯  消灯  点灯  点灯
       1   1   0  0  0   0   1   1  −−−−> 0xc3

/*-------------------------------------------------------------------------------------------------------------------------------------------------------
     LED1、LED2、LED7、LED8 を点灯させる。
     File Name : led_02.c

-------------------------------------------------------------------------------------------------------------------------------------------------------*/
#define  LEDX  ( * ( volatile unsigned char * ) 0xB8000003 )

void main(void)
{
 while(1)
 {
   LEDX = 0xc3;
 }
}
//------------------------------------------------------------------------------------------------------------------



   上記画面にある様に、cprog プロジェクト内で、前回使用した「led_01.c」は、ビルド対象外にしてビルドします。
   led_01.c を選択してから、マウス右クリックすると上記サブメニューが現れます。ここの中の「ビルドから除外」を選択します。




 

    左側の写真は、実行前( LED全消灯 )、右側の写真は、実行後( 赤丸部分のLEDが点灯 )です。