|   | 
前回作成したウォッチドッグのプロジェクトに、デジタル入出力の処理を追加します。 
 
・ボタンが押されている間は、LED1が点灯 
・ボタンが押されている間は、LED2の点滅が止まる 
 
という処理にします。 
ソースコードは以下のようになります。
  
 
 
  
@ 入力の設定 
 
マイコンのP402端子を入力として使用するために以下の設定をします。
ハードウェアマニュアル(R01UH0883JJ0100)の 「20. I/O ポート」が対象の仕様です。 
 
「20.2.1 ポートコントロールレジスタ1(PCNTR1/PODR/PDR)」の PDR レジスタにてデジタル端子を「入力として使用するのか、出力として使用するのか」を指定します。マイコンの初期設定では「0:入力ポート」となっているため、この設定は省略可能です。
 
  
 
  
ソースコードでは以下のように記載します。 
 
  R_PORT4->PDR_b.PDR2 = 0;   // 入力として使用 P402 SW1 
 
R_PORT4 は、P4xxを指します。PDR2は、今回のポート番号(P402)に対応するレジスタを指します。PDR_bは、レジスタをビット指定で設定するときに使用します。 
RAマイコンでは日常的に使う表現ですので、覚えておくと便利です。 
 
以下のようにレジスタ単位で設定することもできます。 
 
  R_PORT4->PDR &= 0xFFFB;   // 入力として使用 P402 SW1 
  
 
A 出力の設定 
 
出力は、P106(LED0)、P404(LED1)を使用します。 
入力の設定と同じように「20.2.1 ポートコントロールレジスタ1(PCNTR1/PODR/PDR)の PDR レジスタを使用します。
  
該当するビットを1にすると出力、0にすると入力です。 
ソースコードでは以下のように記載します。 
 
  R_PORT1->PDR_b.PDR6 = 1;   // P106 出力として使用 P402 SW1 
  R_PORT4->PDR_b.PDR4 = 1;   // P404 出力として使用 P402 SW1 
 
以下のようにレジスタ単位で設定することもできます。 
 
  R_PORT1->PDR |= 0x0040;   // P106 出力として使用 P402 SW1 
  R_PORT4->PDR |= 0x0010;   // P404 出力として使用 P402 SW1 
 
  
B 入力の読み込み 
 
35行目、44行目で、入力状態の判定を行っています。 
デジタル入力の Hi:1、Lo:0 を確認するために使うのが「20.2.2 ポートコントロールレジスタ2(PCNTR2/EIDR/PIDR)」の PIDR レジスタです。
 
  
 
  
ターゲットボードのSW1は、ボタンが押されたときにLo:0 、ボタンが離されているときにHi:1となるため、
Lo:0 でボタンが押されていると判断できます。 
ソースコードでは以下のように記載します。設定と同じように、レジスタ単位で一度に読み込むことも可能です。 
 
  if (R_PORT4->PIDR_b.PIDR2 == 0){   // SW1:ON 
  
 
C 出力のON/OFF 
 
36行目、38行目、46行目で、ポート出力の ON/OFF を行っています。 
「20.2.1 ポートコントロールレジスタ1(PCNTR1/PODR/PDR)の PODR レジスタを使用します。 
このボードのLEDは、 ON:0、OFF:1 となります。 
  
 
  
ソースコードでは以下のように記載します。設定と同じように、レジスタ単位で一度に書き込むことも可能です。 
 
  R_PORT1->PODR_b.PODR6 = 0;   //  LED0: ON 
 
  R_PORT4->PODR_b.PODR4 = 1;   //   LED1: OFF 
 
 
  
 |