ポート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
|