| 番号 | 端子記号 |
内 容 |
|---|---|---|
| 1 | UART TX | UART送信データ |
| 2 | UART RX | UART受信データ |
| 3 | I2C SCL | I2C通信CLOCK |
| 4 | I2C SDA | I2C通信データ |
| 5 | MODE1 | モード設定ピン1 |
| 6 | UART BUSY | UARTビジー |
| 7 | NC | |
| 8 | MODE2 MODE2> | モード設定ピン2 |
| 9 | RESET | ハードウエアリセット |
| 10 | GND | 電源GND |
| 11 | Vcc | 電源+3.3V |
| 12 | WAKE | ウェイクアップピン |
| 13 | Vbat | 内蔵RTC電源 |
| 通信モード | Mode1(5ピン) | Mode2(8ピン) |
|---|---|---|
| UART通信モード | 0 | 0 |
| I2C通信モード | 0 | 1 |
| ブートローダモード | 1 | 0 |
| コマンド | 詳細 | コマンド | 詳細 |
|---|---|---|---|
| V | ファームウエアバージョンの取得 | I | メモリメディアの初期化 |
| Z | 省電力設定 | O | 空きのファイルハンドルにファイルを開く |
| T | RTCの初期化 | W | ファイルにデータを書き込む |
| S | 現在時刻、日にちの設定 | R | ファイルからデータを読み込む |
| G | 現在時刻、日にちの取得 | F | ファイルバンドルデータをフラッシュする |
| B | UART通信速度の変更 | C | ファイルハンドルを閉じる |
| # | エコーの設定 | P | ファイル内のポインタ位置の移動/TD> |
| A | ファイルの名前変更 | Y | ファイル内のポインタ位置を移動/TD> |
| E | メモリメディアのテスト | D | ファイル又はディレクトリの削除/TD> |
| K | メモリメディアの空き領域容量取得 | ? | ファイル内のフォルダーの存在の検索 | @ | ディレクトリリストの初期化 | M | ファイルの内容を別のファイルにコピー | N | 次のディレクトリエントリを取得 | Q | クイックフォーマットの実行 |
| #include<stdio.h> | |
| #include "ctrl.h" | |
| #include "sfr_r8m12a.h" | |
| unsigned char cnt; | |
| void main(void) | |
| { | |
| unsigned char i; | |
| unsigned char r; | |
| asm("FSET I"); | |
| wait_us(500); | |
| init(); | |
| set_UART0(); | |
| I2C_LCD_init(); | // LCD初期化 |
| SDA_OUT; | // SDAピン出力に設定 |
| I2C_LCD_cursor(1,0); | // 1行目左端より表示 |
| I2C_LCD_str("MSC"); | // LCD表示文字列出力 |
| wait_ms(1000); |
| /* MicroSDへ書き込み開始 */ | |
| UART0_tx_str("I M:");LF(); | // マイクロSDカード初期化 |
| while(!UART0_rx()); | // MicroSDからのACK待ち |
| wait_ms(100); | |
| I2C_LCD_cursor(2,0); | |
| I2C_LCD_str("I M:"); | // MicroSDへの送出コマンドをLCD表示 |
| wait_ms(1000); | |
| I2C_LCD_clear(); | |
| UART0_tx_str("O 1W>M:\\TEST.TXT");LF(); | // FH1にファイルTEST.TXTを作成 |
| while(!UART0_rx()); | // MicroSDからのACK待ち |
| wait_ms(100); | |
| I2C_LCD_cursor(2,0); | |
| I2C_LCD_str("O 1W>M:\\TEST.TXT"); | // MicroSDへの送出コマンドをLCD表示 |
| wait_ms(1000); | |
| I2C_LCD_clear(); | |
| UART0_tx_str("W 1>B");LF(); | // FH1に11(B)バイトのデータを書き込む |
| while(!UART0_rx()); | // MicroSDからのACK待ち |
| wait_ms(100); | |
| I2C_LCD_cursor(2,0); | |
| I2C_LCD_str("W 1>B"); | // MicroSDへの送出コマンドをLCD表示 |
| wait_ms(1000); | |
| I2C_LCD_clear(); | |
| UART0_tx_str("HELLOW WORLD");LF(); | // 文字列"HELLO WORLD"を書き込む |
| while(!UART0_rx()); | // MicroSDからのACK待ち |
| wait_ms(100); | |
| I2C_LCD_cursor(2,0); | |
| I2C_LCD_str("HELLOW WORLD"); | // MicroSDへの送出コマンドをLCD表示 |
| wait_ms(1000); | |
| I2C_LCD_clear(); | |
| UART0_tx_str("C 1");LF(); | // FH1をクローズ |
| while(!UART0_rx()); | // MicroSDからのACK待ち |
| wait_ms(100); | |
| I2C_LCD_cursor(2,0); | |
| I2C_LCD_str("C 1"); | // MicroSDへの送出コマンドをLCD表示 |
| I2C_LCD_str(" カキコミ シュウリョウ"); | |
| wait_ms(10000); | |
| I2C_LCD_clear(); | // MicroSDへ書き込み終了 |
| int i; | // マイクロSDカード初期化 |
| prc = 1; | // プロテクトレジスタ解除 |
| hocoe = 1; | // 高速オンチップオシレータ発振開始 |
| for(i=0;i<50;i++); | // 発振安定まで待つ |
| hscksel =1; | // 高速オンチップオシレータ選択ビットを1にする |
| scksel =1; | // システム基準クロックを高速にする |
| prc0 =0; | // プロテクトレジスタ禁止 |
| pd1 =0x03; | // p1_0,p1_1,p1_4出力設定 |
| pur4 = 0b11100100; | // p4プルアップON |
| pd4 =0x04; | // p4_2:TXD0 p4_6:RXD0 |
| #define | I2C_S_SCL | p1_1=1 | // I2Cクロック p1_1を1にする |
| #define | I2C_C_SCL | p1_1=0 | // I2Cクロック p1_1を0にする |
| #define | I2C_C_SDA | p1_0=1 | // I2Cデータ p1_0を1にする |
| #define | I2C_C_SDA | p1_0=0 | // I2Cデータ p1_0を0にする |
| #define | I2C_SDA_IN | pd1_0=0 | // p1_0を入力ポートに設定 |
| #define | I2C_SDA_OUT | pd1_0=1 | // p1_0を出力ポートに設定 |
| #define | I2C_SDA_data | p1_0 | // データポートをp1_0に設定 |
| #define | I2C_LCD_AD | 0x7c | // LCDアドレス 0B 0111 110+0(c/w) |
| #define | MSD_AD | 0xa4 | // MSC-MOD20アドレス |
| #define | UART0_busy | p1_2 | // MSC-MOD20のbusy監視ピン6 L:受信可 |
| #define | CLOCK | 20000 |
| void | init(void); | // I/O初期化関数 |
| void | wait_us(unsigned long usec); | // us単位のタイマ |
| void | wait_ms(unsigned long msec); | // ms単位のタイマ |
| void | delay(void); | // 6usの遅延関数 |
| void | I2C_start(void); | // I2C開始 |
| void | I2C_stop(void); | // I2Cストップ |
| void | ack(void); | // ACKNOWLEDGE信号受信 |
| void | I2C_H_CLK(void); | // クロックHigh |
| void | I2C_L_CLK(void); | // クロックLow |
| void | lcd_init(void); | // lcd初期化関数 |
| int | I2C_write(unsigned char data); | // 書き込みの基本関数 |
| unsigned char | I2C_read(void); | // 読み込みの基本関数 |
| void | I2C_LCD_cmd(unsigned char cmd); | // 液晶へのコマンド出力関数 |
| void | I2C_LCD_data(unsigned char data); | // 液晶への1文字出力関数 |
| void | I2C_LCD_str(unsigned char* ptr); | // 液晶への文字列表示関数 |
| void | I2C_LCD_clear(void); | // 液晶のクリャー関数 |
| void | I2C_LCD_cursor(unsigned char line,unsigned char cursor); | // カーソル位置設定関数 |
| void | UART0_rx(void); | // 1文字受信関数 |
| int | set_UART0(void); | // UART設定関数 |
| int | UART0_tx(unsigned char r); | // 1文字送信関数 |
| int | void UART0_tx_str(char *str); | // 文字列送信関数 |
| void | CR(void); | // Carridge Return 行先頭位置移動関数 |
| void | LF(void); | // Line Feed 1行送り関数 |
| void | CRLF(void); | // CR()+LF()関数 |