<用語説明>
PFC:ピンファンクションコントローラ
ピンをどの様に使用するか設定する際に使用します。
PECRL1~PECRL4
ポート(
P)
Eコントロール(
C)レジスタ(
R)の
L1~
L4 (ポートEにHはありません)
ピンをON/OFF入出力以外の特殊機能を設定する際に使用します。
PEIORL
ポート(
P)
E IO レジスタ(
R)の
L
各ピンを入力系機能として使用するか出力系機能として使用するか設定します。
WORD
16bit分まとめて設定する場合に使用します。
設定する変数によって16bitだったりそうじゃなかったりします。
<4~16行目の詳細>
PECRL1~PECRL4:
全部0に設定してあります。
特殊機能は使用しません。
特殊機能を使用する会にて別途説明します。
PEIORL:
幾つかを入力に設定して、幾つかを出力に設定します。
今回はポートEの16ピン分をまとめて設定しています。
Bit15~Bit0の順に並んでいます。
0が入力、1が出力に相当します。
16進数FF33を2進数に直してみます。16進数1文字で4ビット分の情報が入っています。
1111 1111 0011 0
011
出出出出 出出出出 入入出出 入
入出出
Bit7,6,3,2を入力に設定し、それ以外が全部出力に設定されています。
Bit0 LED赤→出力
Bit1 LED緑→出力
Bit2 SW1→入力
となっていることが分かります。
Bit2は絶対に出力に設定しないでください。
Bit2を出力した状態でSW1を操作すると
マイコンボードが壊れます。
17,18行目
PE.DRL.BIT.B0 = 0; // LED Clear
PE.DRL.BIT.B1 = 0; // LED Clear
ピンの出力をリセット
<用語説明>
PE:ポートE
DRL:データレジスタのL
BIT:1ビットづつ設定ます。
B0,B1:ビット0、ビット1
PE B0(LED赤)、PE B1(LED緑)の出力を0にします。
0で0V、1で5Vになります。
23行目
while(1){
無限ループ開始。
34行目までをループする。
24行目
if(PE.DRL.BIT.B2 == 1)
PE B2(SW1)の状態を確認して条件分岐
0Vが接続されている:0
5Vが接続されている:1(3V以上)
分岐
5Vが接続されているとき
26行目、27行目を実行
それ以外(
0Vが接続されている)
31行目、32行目を実行
26行目~32行目は 17,18行目の処理を参照
tera3.c
メイン関数起動直後に変数「i」を宣言
メインループまではsw1.cと一緒
37行目~41行目
for文のループで1400000回分LED赤を点灯、緑は消灯
42行目~46行目
for文のループで1400000回分LED緑を点灯、赤は消灯
このプログラムでは他のスイッチ入力の処理を追記するのが難しい(めんどくさい)
マイコンプログラムではfor文などで待機させるのはあまり良い書き方ではありません。
動作確認用としては良いのですが、実用プログラムでは別の書き方をします。