Pi:Co Classic2 製作記(移行中)

2015年新人研修 マイクロマウス編(09)

こんにちは。

本日は配列の基本を勉強しました。
ex)
char D[3];
カッコの中が配列の数(確保する領域)です。
Dが配列の名前で、名前は何をつけてもいいそうです。

D[0]=x;
D[1]=y;
D[2]=z;
↑これら3行は値を初期化する方法です。

char D[3];
D[0]=x;
D[1]=y;
D[2]=z;
この4行を簡単に書くと
char D[ ] = { x , y , z } ;
と1行にまとめることができます。

領域は0から数えるので3つの領域の時は、0と1と2と番号がつきます。

int i ;
for ( i = 0 ; i < 3 ; i++ ;){
PE.DRL.BYTE.L=D[i];
}

とあったとき
i=0; 初期値を0に。
i < 3; ループされる条件。
i++; 次のカッコの処理方法
D[i]のi ループの中では変化します。

i++;の++は、このように後ろにあるときにはあとで足します。
i++;はi=i+1と書くこともできます。
ちなみにi- -;はi=i-1と書くことができます。

ここまで勉強したので教えていただいた通りにプログラムを書き
LEDの光らせ方を変化させようとしました。

がしかし!!!

光りません((+_+))
原因はこれでした↓
startic ROM領域で確保
これが抜けていたためでした。

RAM=Random Access Memory その場しのぎでいいもの(変数)。
ROM=Read Only Memory プログラムで消えてはいけないもの。
書き換えしないもの。

C言語の特徴として起動すると0初期化するというのがあります。
先ほどのstarticを書いていなかったために
定義の初期値が消えてしまい光らなかったのです。

そこを直し、プログラムを少し変えて自分好みに光らせてみます。
今日書いたのは以下のプログラムです。

int i;
char j;
static char D[]={0x07,0x0b,0x0d,0x0e,0x0e,0x0d,0x0b,0x07,0x06,0x09,0x06,0x09};

PFC.PEIORL.WORD = 0x000f; //LEDの繋がっているポートを出力に設定

//LEDを点滅させる

while(1) //無限ループ
{
for(j=0;j<12;j++){
PE.DRL.BYTE.L=D[j];
for(i = 0; i < 0xfffff; i++);
for(i = 0; i < 0xfffff; i++);
}

ウェーブした後に、内側から外側に光るようにしました。
成功してよかったです!

タイトルとURLをコピーしました