sfr at 0x86 U0CSR;
sfr at 0xF8 U1CSR;
+/*
+ * IRCON2
+ */
+sfr at 0xE8 IRCON2; /* CPU Interrupt Flag 5 */
+
+sbit at 0xE8 USBIF; /* USB interrupt flag (shared with Port2) */
+sbit at 0xE8 P2IF; /* Port2 interrupt flag (shared with USB) */
+sbit at 0xE9 UTX0IF; /* USART0 TX interrupt flag */
+sbit at 0xEA UTX1IF; /* USART1 TX interrupt flag (shared with I2S TX) */
+sbit at 0xEA I2STXIF; /* I2S TX interrupt flag (shared with USART1 TX) */
+sbit at 0xEB P1IF; /* Port1 interrupt flag */
+sbit at 0xEC WDTIF; /* Watchdog timer interrupt flag */
+
# define UxCSR_MODE_UART (1 << 7)
# define UxCSR_MODE_SPI (0 << 7)
# define UxCSR_RE (1 << 6)
# define UxUCR_SPB_1_STOP_BIT (0 << 2)
# define UxUCR_SPB_2_STOP_BITS (1 << 2)
# define UxUCR_STOP_LOW (0 << 1)
-# define UXUCR_STOP_HIGH (1 << 1)
+# define UxUCR_STOP_HIGH (1 << 1)
# define UxUCR_START_LOW (0 << 0)
# define UxUCR_START_HIGH (1 << 0)
unsigned char i = 0;
unsigned char j = 0;
+ n++;
while (--n != 0)
while (--i != 0)
while (--j != 0)
/*
* Reasonable serial parameters
*/
- U1UCR = (UxUCR_FLOW_DISABLE |
- UxUCR_D9_EVEN_PARITY |
+ U1UCR = (UxUCR_FLUSH |
+ UxUCR_FLOW_DISABLE |
+ UxUCR_D9_ODD_PARITY |
UxUCR_BIT9_8_BITS |
UxUCR_PARITY_DISABLE |
- UxUCR_SPB_1_STOP_BIT |
- UxUCR_STOP_LOW |
+ UxUCR_SPB_2_STOP_BITS |
+ UxUCR_STOP_HIGH |
UxUCR_START_LOW);
}
-
-uint8_t
-usart_in_out(uint8_t byte)
+void
+usart_out_byte(uint8_t byte)
{
U1DBUF = byte;
- while ((U1CSR & UxCSR_TX_BYTE) == 0)
+ while (!UTX1IF)
;
- U1CSR &= ~UxCSR_TX_BYTE;
- return U1DBUF;
+ UTX1IF = 0;
}
+
void
-usart_out_byte(uint8_t byte)
+usart_out_string(uint8_t *string)
{
- U1CSR &= ~UxCSR_TX_BYTE;
- U1DBUF = byte;
- while ((U1CSR & UxCSR_TX_BYTE) == 0)
- ;
+ uint8_t b;
+
+ while (b = *string++)
+ usart_out_byte(b);
}
uint8_t
return b;
}
-#define spi_init() usart_init()
-#define spi_out_byte(b) usart_out_byte(b)
-#define spi_in_byte() usart_in_byte()
+void
+debug_byte(uint8_t byte)
+{
+ uint8_t s;
-static char string[] = "hello world\r\n";
+ for (s = 0; s < 8; s++) {
+ DEBUG = byte & 1;
+ delay(5);
+ byte >>= 1;
+ }
+}
main ()
{
- uint8_t i;
-
P1DIR |= 2;
CLKCON = 0;
while (!(SLEEP & SLEEP_XOSC_STB))
;
- spi_init();
+ usart_init();
for (;;) {
- for (i = 0; i < sizeof (string) - 1; i++) {
- usart_out_byte(string[i]);
- }
- P1 ^= 2;
+ usart_out_string("hello world\r\n");
+ debug_byte(usart_in_byte());
}
+
}