int BAUD = 0x102b; int SCCR1 = 0x102c; int SCCR2 = 0x102d; int SCSR = 0x102e; int SCDR = 0x102f; int mon_proc; int i; void main2() { disable_pcode_serial(); set_baud(600); poke(SCCR2, 44); start_process(monitor_sci()); } void init_mobile_serial() { disable_pcode_serial(); set_baud(600); poke(SCCR2, 44); } int data; int ack; void monitor_sci() { while (1) { data = get_sci(); if (data > 0) { printf("\nsci: %d", data); } } } int get_sci() { if (sci_new_data > 0) { sci_new_data--; return sci_data; } else return -1; } void go() { while (1) { start_press(); disable_pcode_serial(); bit_set(0x102d, 0b00100000); mon_proc = start_process(monitor_sci()); } } void stop() { while (1) { stop_press(); enable_pcode_serial(); bit_clear(0x102d, 0b00100000); kill_process(mon_proc); } } void serial_putchar(int c) { while (!(peek(0x102e) & 0x80)); /* wait until serial transmit empty */ poke(0x102f, c); /* send character */ } int serial_getchar(int c) { while (!(peek(0x102e) & 0x20)); /* wait for received character */ return peek(0x102f); } void disable_pcode_serial() { poke(0x3c, 1); } void enable_pcode_serial() { poke(0x3c, 0); } void set_baud(int baudrate) { if (baudrate == 300) poke(BAUD, 53); else if (baudrate == 600) poke(BAUD, 52); else if (baudrate == 1200) poke(BAUD, 51); else if (baudrate == 2400) poke(BAUD, 50); else if (baudrate == 9600) poke(BAUD, 48); }