X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=device%2Flib%2Fser_ir_cts_rts.c;h=51069fe67e6fbda31f76430b43d56c4aae12ec91;hb=80972b2e54c9b88f11c27b878874fd2a6a681391;hp=2bf1160f8cbb9ebcbe9e0e620a7d9dd3cf9aa52a;hpb=f983558a0e07566cf65dca67cddd3f4bf81328e0;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 2bf1160f..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;