X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=device%2Flib%2Fser_ir_cts_rts.c;h=51069fe67e6fbda31f76430b43d56c4aae12ec91;hb=761c150addc2009740fe9aaf85bd5d15e2f054c8;hp=5b127c586d1b895493eb82ff1784cf92c22e631c;hpb=99fcafaaddfe9eb3de89d61bf643cecacbb8a9d4;p=fw%2Fsdcc diff --git a/device/lib/ser_ir_cts_rts.c b/device/lib/ser_ir_cts_rts.c old mode 100755 new mode 100644 index 5b127c58..51069fe6 --- a/device/lib/ser_ir_cts_rts.c +++ b/device/lib/ser_ir_cts_rts.c @@ -34,8 +34,6 @@ * so it can run on devices with _little_ memory like at89cx051. * - It won't overwrite characters which already are stored in the * receive-/transmit-buffer. -* - It checks receiver first to minimize probability for overruns -* in the serial receiver. */ /* BUG: those definitions (and the #include) should be set dynamically @@ -88,9 +86,10 @@ #define CTS P3_6 // CTS & RTS can be assigned to any free pins #define RTS P3_7 +// You might want to specify idata, pdata or xdata for the buffers static unsigned char rxbuf[RXBUFLEN], txbuf[TXBUFLEN]; static unsigned char rxcnt, txcnt, rxpos, txpos; -static unsigned char busy; +static bit busy; void ser_init() { @@ -117,7 +116,7 @@ void ser_handler(void) interrupt 4 if (RI) { RI = 0; /* don't overwrite chars already in buffer */ - if(rxcnt < RXBUFLEN) rxbuf [(rxpos + rxcnt++) % RXBUFLEN] = SBUF; + if(rxcnt < RXBUFLEN) rxbuf [(unsigned char)(rxpos + rxcnt++) % RXBUFLEN] = SBUF; if(rxcnt >= (RXBUFLEN - THRESHOLD)) CTS = DISABLE; } @@ -139,7 +138,7 @@ void ser_putc(unsigned char c) ES = 0; if (busy) { - txbuf[(txpos + txcnt++) % TXBUFLEN] = c; + txbuf[(unsigned char)(txpos + txcnt++) % TXBUFLEN] = c; } else { SBUF = c; busy = 1; @@ -163,8 +162,8 @@ unsigned char ser_getc(void) return (c); } -#pragma SAVE -#pragma NOINDUCTION +#pragma save +#pragma noinduction void ser_puts(unsigned char *s) { unsigned char c; @@ -173,7 +172,7 @@ void ser_puts(unsigned char *s) ser_putc (c); } } -#pragma RESTORE +#pragma restore void ser_gets(unsigned char *s, unsigned char len) {