コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

LEDを点灯させてみる(6)

参考サイト「S08ではじめるマイコン制御プログラミング(4)− LEDの制御に時間の概念を取り入れる」の内容をDEMOJMに移植してきました。ここで、もう一度、プログラムを書いておきます。

#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */

void mcu_init(void);
void putbyte_led(unsigned char);

char  Step;
unsigned char C;

//**********************************************************
// メイン
//**********************************************************
void main(void) {

  //このマクロは、割り込みマスク・ビットをクリアして割り込みが掛かる状態を作るもの
  EnableInterrupts;
  
  /* include your code here */

  mcu_init();
  
  C = 0;
  Step = 0;
  for(;;) {

    //__RESET_WATCHDOG(); /* feeds the dog */
  
  } /* loop forever */
  /* please make sure that you never leave main */
}

//**********************************************************
// RTC割り込み処理
//**********************************************************
interrupt VectorNumber_Vrtc void int_timer( void ){
  
  RTCSC_RTIF = 1; //リアルタイム割り込みリクエストのクリア
  putbyte_led( C );
  C += Step;
  
}

//**********************************************************
// キー割り込み処理
//**********************************************************
interrupt VectorNumber_Vkeyboard void chk_key_stat( void ){
  
  if( KBI1SC_KBF ){
    KBI1SC_KBACK = 1;
    if (!PTGD_PTGD0) {
      Step = 1;
    } else if (!PTGD_PTGD1) {
      Step = -1;
    } else if (!PTGD_PTGD2) {
      Step = 0;
    }
  }
}

//**********************************************************
// レジスタの初期化
//**********************************************************
void mcu_init(void){

  SOPT1_COPT = 0;   //WatchDogTimerの停止
  
  //LED接続ポートのOUTPUT設定
  PTEDD_PTEDD2 = 1;
  PTEDD_PTEDD3 = 1;
  PTFDD_PTFDD0 = 1;
  PTFDD_PTFDD1 = 1;
  PTCDD_PTCDD2 = 1;
  PTCDD_PTCDD4 = 1;
  PTFDD_PTFDD5 = 1;
  PTDDD_PTDDD2 = 1;

  //キーボード割り込みの設定
  KBI1PE_KBIPE0 = 1;  //キーボード割り込みポート0をセット
  PTGPE_PTGPE0 = 1;   //ポートG0をプルアップする
  
  KBI1PE_KBIPE1 = 1;  //キーボード割り込みポート1をセット
  PTGPE_PTGPE1 = 1;   //ポートG0をプルアップする
  
  KBI1PE_KBIPE6 = 1;  //キーボード割り込みポート2をセット(KBIPE6に注意)
  PTGPE_PTGPE2 = 1;   //ポートG0をプルアップする
  
  KBI1SC_KBIE = 1;    //KBI1のキーボード割り込みを許可する
  
  RTCSC_RTCLKS = 0;   //RTCLKSとRTCPSで割り込み時間を決める。
  RTCSC_RTCPS = 14;   //RTCLKS=0とRTCPS=14で500msとなる
  RTCSC_RTIE = 1;     //リアタイムカウンタの割り込みを許可する
  
  return ;
}

//**********************************************************
// LEDの点灯処理
//**********************************************************
void putbyte_led(unsigned char c){
  c = (unsigned char)(~(int)c);
 
  PTDD_PTDD2 = c & 0x01;
  PTFD_PTFD5 = (c >> 1) & 0x01;
  PTCD_PTCD4 = (c >> 2) & 0x01;
  PTCD_PTCD2 = (c >> 3) & 0x01;
  PTFD_PTFD1 = (c >> 4) & 0x01;
  PTFD_PTFD0 = (c >> 5) & 0x01;
  PTED_PTED3 = (c >> 6) & 0x01;
  PTED_PTED2 = (c >> 7) & 0x01;
    
  return ;
}

Make

Makeするには、下図のマル印のボタンをクリックします。エラーが出なければ、Makeは終了です。

Debug

デバックする前に、DEMOJMの電源を入れます。USBケーブルを差し込んでPowerをONします。

次に、Makeボタンの右にある緑三角が付いたボタンを押すと、DEMOJMのJM128にプログラムが転送されて、デバッグ可能状態になります。操作の様子を動画で示します。

そして、下図のマル印のスタートボタンを押すとプログラムがスタートします。実際のLED点灯の様子を動画で示します。

以上で、DEMOJMでLEDを点灯させてみるの説明を終わります。内容が無いのに長すぎましたね。次は、もう少し簡単に書いていこうと思います。

本当にやりたいことリスト

(ブログの終わりにやりたいことを書いておきたいと思います)

  • 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
  • Androidプログラム
  • Web系のプログラム