]> cloudbase.mooo.com Git - avrcpm.git/blobdiff - avr/sw-uart.asm
* cpm/BIOS.MAC
[avrcpm.git] / avr / sw-uart.asm
index 7e81d98f9fa4676f58e3467243e7e00ef968ec0b..3216293faf3475b44d435f50d2ae237ed90912cb 100644 (file)
@@ -26,6 +26,7 @@
 #endif
 
 #define SSER_BIT_TC    (F_CPU+BAUD/2) / BAUD 
+#define SSER_CHAR_TC   (10 * 1000 / BAUD) + 2
 
 #define RXBUFMASK      RXBUFSIZE-1
 #define TXBUFMASK      TXBUFSIZE-1
@@ -36,6 +37,8 @@ srx_state:
        .byte   1
 srx_char_to:
        .byte   1
+srx_char_time:
+       .byte   1
 srx_dr:
        .byte   1
 srx_lastedge:
@@ -88,6 +91,9 @@ uart_init:
        ori     temp,(1<<ICIE1)                 ;Enable input capture int.  (UART RX)
        outm8   TIMSK1,temp                     ;
 
+       ldi     temp,SSER_CHAR_TC               ;Character TO
+       sts     srx_char_time,temp
+
        ret
        
 ;------------------------------------------------------------------
@@ -132,7 +138,7 @@ uart_init:
        sts     srx_dr,_0
        ldi     temp,1
        sts     srx_state,temp
-       ldi     temp,2
+       lds     temp,srx_char_time
        sts     srx_char_to,temp
        sbis    P_RXD-2,RXD                     ;RXD still low?
        rjmp    srxi_end
@@ -251,7 +257,7 @@ srxi_2l:
 srxi_complete1:
        ldi     temp2,1                 ;We are in start bit now.
        sts     srx_state,temp2
-       ldi     temp2,2
+       lds     temp2,srx_char_time
        sts     srx_char_to,temp2
        rjmp    srxi_complete