diff options
-rw-r--r-- | firmware/drivers/serial.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/firmware/drivers/serial.c b/firmware/drivers/serial.c index d101ab8095..ca69147cd3 100644 --- a/firmware/drivers/serial.c +++ b/firmware/drivers/serial.c | |||
@@ -19,19 +19,13 @@ | |||
19 | 19 | ||
20 | #include "serial.h" | 20 | #include "serial.h" |
21 | 21 | ||
22 | #define TDRE 7 /* transmit data register empty */ | ||
23 | #define RDRF 6 /* receive data register full */ | ||
24 | #define ORER 5 /* overrun error */ | ||
25 | #define FER 4 /* frame error */ | ||
26 | #define PER 3 /* parity error */ | ||
27 | |||
28 | static int serial_byte,serial_flag; | 22 | static int serial_byte,serial_flag; |
29 | 23 | ||
30 | void serial_putc (char byte) | 24 | void serial_putc (char byte) |
31 | { | 25 | { |
32 | while (!(SSR1 & (1<<TDRE))); | 26 | while (!(SSR1 & 0x80)); /* Wait for TDRE */ |
33 | TDR1 = byte; | 27 | TDR1 = byte; |
34 | clear_bit(TDRE,SSR1_ADDR); | 28 | SSR1 &= 0x80; /* Clear TDRE */ |
35 | } | 29 | } |
36 | 30 | ||
37 | void serial_puts (char const *string) | 31 | void serial_puts (char const *string) |
@@ -63,7 +57,7 @@ void serial_setup (int baudrate) | |||
63 | #pragma interrupt | 57 | #pragma interrupt |
64 | void REI1 (void) | 58 | void REI1 (void) |
65 | { | 59 | { |
66 | clear_bit (FER,SSR1_ADDR); | 60 | SSR1 &= 0x10; /* Clear FER */ |
67 | } | 61 | } |
68 | 62 | ||
69 | #pragma interrupt | 63 | #pragma interrupt |
@@ -71,5 +65,5 @@ void RXI1 (void) | |||
71 | { | 65 | { |
72 | serial_byte = RDR1; | 66 | serial_byte = RDR1; |
73 | serial_flag = 1; | 67 | serial_flag = 1; |
74 | clear_bit(RDRF,SSR1_ADDR); | 68 | SSR1 &= 0x40; /* Clear RDRF */ |
75 | } | 69 | } |