X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=target%2Fserial%2Fserial.c;h=1c352831dfa1d6f9e4b6c1cfe173f75cbf959e7a;hp=d2be47fdeb1ed7cd9f53dce9b3e8d9ae258691fa;hb=019456a17d36f8f9f9b72cfbc980492175086d32;hpb=50bdc2407c674a4770912d3a626f36820a7f1527 diff --git a/target/serial/serial.c b/target/serial/serial.c index d2be47fd..1c352831 100644 --- a/target/serial/serial.c +++ b/target/serial/serial.c @@ -79,6 +79,19 @@ sbit at 0x97 P1_7; 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) @@ -143,6 +156,7 @@ delay (unsigned char n) unsigned char i = 0; unsigned char j = 0; + n++; while (--n != 0) while (--i != 0) while (--j != 0) @@ -188,8 +202,9 @@ usart_init(void) /* * 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 | @@ -201,9 +216,10 @@ void usart_out_byte(uint8_t byte) { U1DBUF = byte; - while ((U1CSR & UxCSR_TX_BYTE) == 0) + while (!UTX1IF) ; - U1CSR &= ~UxCSR_TX_BYTE; + UTX1IF = 0; + delay(1); } uint8_t @@ -217,10 +233,6 @@ usart_in_byte(void) return b; } -#define spi_init() usart_init() -#define spi_out_byte(b) usart_out_byte(b) -#define spi_in_byte() usart_in_byte() - static char string[] = "hello world\r\n"; main () @@ -232,10 +244,11 @@ main () while (!(SLEEP & SLEEP_XOSC_STB)) ; - spi_init(); + usart_init(); for (;;) { - usart_out_byte('A'); + for (i = 0; i < sizeof(string) - 1; i++) + usart_out_byte(string[i]); delay(5); P1 ^= 2; }