#include "ioport.h" #define OFF 0 #define ON 1 #define NEG 2 void putc(char ch) { while ((SSR1 & 0x80)==0); TDR1 = (unsigned char)ch; SSR1 &= 0x7f; } void putc2(char ch) { while ((SSR2 & 0x80)==0); TDR2 = (unsigned char)ch; SSR2 &= 0x7f; } void print(char *str) { while (*str != 0) putc(*str++); } // ================================================================ // IG_BUZZER : ブザーのON/OFF // ------------------------------------------------------------ // 第1引数> 音階(小さいほど高い) // 第2引数> ON/OFFフラグ // ================================================================ void IG_BUZZER(unsigned char snd,unsigned char flag) { if (flag==0) { MSTPCRH |= 0x10; // タイマモジュール電源Cut } else { // Buzzer P44:TMO1 MSTPCRH &= 0xEF; TCORA1 = snd; // タイムコンスタントA TCONRO = 0x00; TCSR1_ = 0x03; // コンペアマッチAで反転 TCR1 = 0x0B; STCR = 0x00; TCNT1 = 0; } } // ================================================================ // IG_KEY : ボタン状態の読み込み // ------------------------------------------------------------ // 返値> 0:押されていない 1:押されている // ================================================================ int IG_KEY() { return ((~P9DR) & 0x01); } // ================================================================ // IG_WAITKEY : ボタンが押されるまで待つ // ================================================================ void IG_WAITKEY() { while (IG_KEY()!=0); while (IG_KEY()==0); } // ================================================================ // IG_LED : LEDの点灯/消灯 // ------------------------------------------------------------ // 第1引数> ON/OFFフラグ (NEG:状態反転) // ================================================================ void IG_LED(unsigned char flag) { if (flag==OFF) { P9DR |= 0x80; } else if (flag==ON) { P9DR &= 0x7F; } else { P9DR ^= 0x80; } } int main() { int i; unsigned char ch; // Initialize SCI1 MSTPCRL &= 0x9F; // モジュールストップレジスタ: SCI1,SCI2動作 SMR1 = 0; BRR1 = 3; // 57600bps SCR1 = 0x30; i = SSR1; // dummy read SSR1 = 0x80; // Initialize SCI2 SMR2 = 0; BRR2 = 3; // 57600bps SCR2 = 0x30; i = SSR2; // dummy read SSR2 = 0x80; KBCOMP = 0x00; while(1) { if ((SSR1 & 0x40)!=0) { ch = RDR1; putc2(ch); SSR1 &= 0xBF; } if ((SSR2 & 0x40)!=0) { ch = RDR2; putc(ch); SSR2 &= 0xBF; } } }