* device/lib/gbz80/Makefile.in, device/lib/hc08/Makefile.in,
[fw/sdcc] / device / lib / serial.c
index 4508282e9bba0246eafd0a67642a2391c05c9ccc..58ddba159575d88d311f239dfaccb697eb474483 100644 (file)
@@ -8,17 +8,18 @@
 //Last modified 6 Apr 97
 //----------------------------------------------------------------------------
 
-#include "reg51.h"//This module contains definition of I8051 registers
+//This module contains definition of I8051 registers
+#include "8052.h"
 
 
-static unsigned char xdata stx_index_in, srx_index_in, stx_index_out, srx_index_out;
-static unsigned char xdata stx_buffer[0x100];
-static unsigned char xdata srx_buffer[0x100];
+static unsigned char __xdata stx_index_in, srx_index_in, stx_index_out, srx_index_out;
+static unsigned char __xdata stx_buffer[0x100];
+static unsigned char __xdata srx_buffer[0x100];
 
-static bit work_flag_byte_arrived;
-static bit work_flag_buffer_transfered;
-static bit tx_serial_buffer_empty;
-static bit rx_serial_buffer_empty;
+static __bit work_flag_byte_arrived;
+static __bit work_flag_buffer_transfered;
+static __bit tx_serial_buffer_empty;
+static __bit rx_serial_buffer_empty;
 
 
 void serial_init(void)
@@ -40,9 +41,16 @@ void serial_init(void)
     ES=1;
 }
 
-void serial_interrupt_handler(void) interrupt 4 using 1
+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;
@@ -53,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;
 }