process RX bytes earlier than TX bytes
authorfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 19 Jul 2003 20:19:02 +0000 (20:19 +0000)
committerfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 19 Jul 2003 20:19:02 +0000 (20:19 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2758 4a8a32a2-be11-0410-ad9d-d568d2c75423

device/lib/_ser.c
device/lib/serial.c

index 064a7d002051f830ce336aedf6b2ef8fb2e7e8d1..b06f69af9298fafc2415938886f586a500a561b8 100644 (file)
@@ -83,6 +83,11 @@ ser_interrupt_handler(void) interrupt 4 using 1
 {
   ES=0;
 
+  if (RI) {
+    RI = 0;
+    ser_rxBuffer[ser_rxIndexIn++] = SBUF;
+  }
+
   if (TI) {
     TI = 0;
     if (ser_txIndexIn == ser_txIndexOut) {
@@ -93,11 +98,6 @@ ser_interrupt_handler(void) interrupt 4 using 1
     }
   }
 
-  if (RI) {
-    RI = 0;
-    ser_rxBuffer[ser_rxIndexIn++] = SBUF;
-  }
-
   ES=1;
 }
 
index 321c46ee774600cafe4bf3e42ef8181838a7271e..bb48557edb74b24a271e9a2d9f1cc3adef14cac8 100644 (file)
@@ -44,6 +44,13 @@ void serial_init(void)
 void serial_interrupt_handler(void) interrupt 4 using 1
 {
     ES=0;
+    if ( RI )
+       {
+           RI = 0;
+           srx_buffer[srx_index_in++]=SBUF;
+           work_flag_byte_arrived = 1;
+           rx_serial_buffer_empty = 0;
+       }
     if ( TI )
        {
            TI = 0;
@@ -54,13 +61,6 @@ void serial_interrupt_handler(void) interrupt 4 using 1
                }
            else SBUF = stx_buffer[stx_index_out++];
        }
-    if ( RI )
-       {
-           RI = 0;
-           srx_buffer[srx_index_in++]=SBUF;
-           work_flag_byte_arrived = 1;
-           rx_serial_buffer_empty = 0;
-       }
     ES=1;
 }