ハードウェア情報

MEMEsのハードウェア情報についてのまとめである。

・LED出力

 

I/Oポートの状態 LEDの状態
0 点灯
1 消灯

 

手順

  1. PFC.PEIORLレジスタを操作し、汎用入出力端子(PE9, PE11)を、出力モードに設定する
  2. PE.DRレジスタの対応するビットを0にすると点灯、1にすると消灯する

 

#include "iodefine.h"
#define LED5 (PE.DR.BIT.B9)
#define LED6 (PE.DR.BIT.B11)
#define LED_ON (0)
#define LED_OFF (1)

void main(void) {
  PFC.PEIORL.BIT.B9 = 1;
  PFC.PEIORL.BIT.B11 = 1;

  LED5 = LED_ON;         // 点灯
  LED6 = LED_OFF;        // 消灯
  LED5 ^= 1;             // 反転
}

 

・スイッチ入力

I/Oポートの状態 スイッチの状態
0 OFF(離している)
1 ON(押している)

 

手順

  1. PFC.PDIORHレジスタを操作し、汎用入出力端子(PD16, PD17, PD18)を、入力モードに設定する(電源投入後の初期状態は入力である)
  2. PD.DRレジスタを読み込み、対応するビットが0であれば押されていない、1であれば押されている

 

#include "iodefine.h"
#define  SW4   (PD.DR.BIT.B16)
#define  SW5   (PD.DR.BIT.B17)
#define  SW6   (PD.DR.BIT.B18)

void main(void) {
  PFC.PDIORH.BIT.B16 = 0;
  PFC.PDIORH.BIT.B17 = 0;
  PFC.PDIORH.BIT.B18 = 0;

  if (SW6 == 1) {
      // スイッチONの時
      :
  } else {
      // スイッチOFFの時
      :
  }
}

 

・スピーカ出力

手順

  1. PFC.PEIORLレジスタを操作し、汎用入出力PE0端子を出力モードに設定する
  2. PE.DRレジスタを操作し、PE0端子の状態を周期的にH→L→H…と変化させる

 

#include "iodefine.h"
#define  SPK     (PE.DR.BIT.B0)

main()
{
  :
  while (1) {
    if (CMT0.CMCSR.BIT.CMF) {
      CMT0.CMCSR.BIT.CMF = 0;
      SPK ^= 1;    // SPK端子を反転
    }
  }
}

 

 ・7セグメントLED

 

手順

  1. PFC.PAIORHレジスタを操作し、表示する数字設定端子(PA19~PA16)を出力モードに設定する。
  2. PFC.PEIORLレジスタを操作し、表示する桁設定端子(PE1~PE3)を出力モードに設定する。
  3. PA.DRレジスタを操作し、PA19~PA16に表示する数値を出力する。
  4. PE.DRレジスタを操作し、表示する桁を選択する。

 

例:PA19~PA16に5(二進数では0101)を出力し、PE1=1, PE2=PE3=0とすると、最上位桁(U16)に”5″が表示される。

 

【ダイナミック点灯の例】

#include "iodefine.h"

#define DIG1    (PE.DR.BIT.B3)
#define DIG2    (PE.DR.BIT.B2)
#define DIG3    (PE.DR.BIT.B1)
main()
{
  PFC.PAIORH.BYTE.L |= 0x0f;        // PA19-PA16出力モード
  PFC.PEIORL.BYTE.L |= 0x0e;        // PE3-PE1出力モード

  while (1) {
    DIG1 = DIG2 = DIG3 = 0;
    PA.DR.BYTE.HL &= 0xf0;
    PA.DR.BYTE.HL |= 3;
    DIG1 = 1;

    wait_ms();

    DIG1 = DIG2 = DIG3 = 0;
    PA.DR.BYTE.HL &= 0xf0;
    PA.DR.BYTE.HL |= 2;
    DIG2 = 1;

    wait_ms();

    DIG1 = DIG2 = DIG3 = 0;
    PA.DR.BYTE.HL &= 0xf0;
    PA.DR.BYTE.HL |= 1;
    DIG3 = 1;

    wait_ms();
}

 

 

Copyright © 2012-2024 ミームス(MEMEs)のサポートページ All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.5, from BuyNowShop.com.