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 ; }
Debug
デバックする前に、DEMOJMの電源を入れます。USBケーブルを差し込んでPowerをONします。
次に、Makeボタンの右にある緑三角が付いたボタンを押すと、DEMOJMのJM128にプログラムが転送されて、デバッグ可能状態になります。操作の様子を動画で示します。
そして、下図のマル印のスタートボタンを押すとプログラムがスタートします。実際のLED点灯の様子を動画で示します。
以上で、DEMOJMでLEDを点灯させてみるの説明を終わります。内容が無いのに長すぎましたね。次は、もう少し簡単に書いていこうと思います。
本当にやりたいことリスト
(ブログの終わりにやりたいことを書いておきたいと思います)
- 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
- Androidプログラム
- Web系のプログラム