X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=target%2Fserial%2Fserial.c;h=1c352831dfa1d6f9e4b6c1cfe173f75cbf959e7a;hb=019456a17d36f8f9f9b72cfbc980492175086d32;hp=589452c0dbb730ba90eed438f52bf5ad60c76b5f;hpb=5049acd3d1ae42304513f667f55a2ddffa4c685a;p=fw%2Faltos diff --git a/target/serial/serial.c b/target/serial/serial.c index 589452c0..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) @@ -193,7 +207,7 @@ usart_init(void) UxUCR_D9_ODD_PARITY | UxUCR_BIT9_8_BITS | UxUCR_PARITY_DISABLE | - UxUCR_SPB_2_STOP_BITS | + UxUCR_SPB_1_STOP_BIT | UxUCR_STOP_HIGH | UxUCR_START_LOW); } @@ -202,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 @@ -218,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 () @@ -233,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; }