package test.CR16C; import vm.InterruptDispatcher; import vm.InterruptHandler; import devices.CR16C.KT4585.CR16CInterruptDispatcher; import devices.CR16C.KT4585.DeviceRegShort; import devices.CR16C.KT4585.LED; import devices.CR16C.KT4585.WatchdogFreeze; public class TestUART { static DeviceRegShort uart_clear_tx_int_reg; static DeviceRegShort uart_ctrl_reg; static DeviceRegByte uart_rx_tx_reg; public static class UARTTXHandler implements InterruptHandler { @Override public void handle() { uart_rx_tx_reg.reg = 'x'; uart_ctrl_reg.reg |= 0x2; uart_clear_tx_int_reg.reg = 0; } @Override public void register() { CR16CInterruptDispatcher.init(); InterruptDispatcher.registerHandler(this, (byte) 21); } @Override public void enable() { } @Override public void disable() { } } /** * @param args */ public static void main(String[] args) { WatchdogFreeze wdog = new WatchdogFreeze(0xFF5000); wdog.set |= WatchdogFreeze.FRZ_WDOG; LED led = new LED(); uart_clear_tx_int_reg = new DeviceRegShort(0xFF4904); uart_ctrl_reg = new DeviceRegShort(0xFF4900); uart_rx_tx_reg = new DeviceRegByte(0xFF4902); UARTTXHandler handler = new UARTTXHandler(); handler.register(); uart_rx_tx_reg.reg = 'x'; uart_ctrl_reg.reg |= 0x2; uart_clear_tx_int_reg.reg = 0; while (true) { led.on(); devices.System.delay(10000); led.off(); devices.System.delay(10000); } } }