ロボットを創ろう
ロボットを創ろうの掲示板 二足歩行ロボット掲示板 新型ロボットプランニング研究サークル

ポートEに接続したLEDを点灯させます。

■ポートEを使う準備をする。
 ポートEは入力と出力の両方が可能です。使うときは、入力なのか、出力なのかを指定しなければなりません。ハードウェアマニュアルの18章ピンファンクションコントローラ(PFC)を参照してください。ポートEの入出力設定はPEIORポートE・IOレジスタのビットを1にすると、対応する端子は出力になり、0にすると入力になります。電源投入時の初期値は全てのビットが入力になっています。

    PFC.PEIOR.WORD = 0x00ff;
 PFC(ピンファンクションコントローラ)のポートE・IOレジスタの全てのビットに1を入れます。WORDは全てのビットを意味しています。0x00ffにより下位8ビットに1が入ったので、下位8ビットは出力に設定されました。上位8ビットは入力になっています。

■ポートEにデータを出力する。
 LEDを点灯させるためには対応するビットに0を入れます。これは回路の組み方によって変わります。私は+5V→抵抗→LED→マイコンという順番で接続しています。

    PE.DR.BYTE.L = 0x0000;
 ポートE・データレジスタの下位に0を出力します。全てのLEDが点灯します。


ビット: 7 6 5 4 3 2 1 0
LED:
2進数 0 0 0 0 0 0 0 0
16進数 0 0








■一番右のLEDだけを光らせる

ビット: 7 6 5 4 3 2 1 0
LED:
2進数 1 1 1 1 1 1 1 0
16進数 f e


    PE.DR.BYTE.L = 0x0000;
       ↓ ↓ ↓ ↓ ↓
    PE.DR.BYTE.L = 0x00fe;
 このように変更することで、一番右だけが光るようになります。



■LEDの光を右から光に流れるようにする
while(1)
{
  PE.DR.BYTE.L = 0x00ff - data;
  data <<= 1;
  if ( data >= 0x0100 ) data = 0x0001;
  for(i = 0 ; i < 30000 ; i++) ;
}


while(1)は { と } の中身を無限に繰り返します。

dataには最初に0x001を入れました。この値をそのままポートEに出力すると、一番右だけが消灯します。そこで、0x00ff - dataとすることで、それぞれのビットの値が反転します。

data <<= 1; これはdataの値を1ビットだけ左にずらします。

一番左が点灯したならば、dataの値を元に戻して、一番左のLEDが点灯するようにします。

無駄時間を作って、LEDの流れるスピードを決めます。

 
 動画 : 800kByte         動画 : 40kByte       静止画16枚 75kByte

このページで紹介している写真は無断で転載することを禁止します。ただし、記事を模倣してロボットを創ることは大歓迎です。