Interfacing the Serial/RS-232 Port
Interfacing the Serial/RS-232 Port
Interfacing the Serial/RS-232 Port
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Interfacing</strong> <strong>the</strong> <strong>Serial</strong> / <strong>RS</strong><strong>232</strong> <strong>Port</strong> V5.0<br />
Part 3 : Programming (PC's)<br />
Polling or Interrupt Driven<br />
When writing a communications program you have two methods available to you. You can poll<br />
<strong>the</strong> UART, to see if any new data is available or you can set up an interrupt handler to remove <strong>the</strong> data<br />
from <strong>the</strong> UART when it generates a interrupt. Polling <strong>the</strong> UART is a lot slower method, which is very<br />
CPU intensive thus can only have a maximum speed of around 34.8 KBPS before you start losing data.<br />
Some newer Pentium Pro's may be able to achieve better rates that this. The o<strong>the</strong>r option is using a<br />
Interrupt handler, and that's what we have used here. It will very easily support 115.2K BPS, even on<br />
low end computers.<br />
Termpoll.c - A sample Comms Program using Polling<br />
Para que comprendais el codigo fuente que se muestra a continuacion<br />
es recomendable que se revisen conceptos vistos en practicas anteriores.<br />
#include <br />
#include <br />
#include <br />
#define PORT1 0x3F8<br />
/* Defines <strong>Serial</strong> <strong>Port</strong>s Base Address */<br />
/* COM1 0x3F8 */<br />
/* COM2 0x2F8 */<br />
/* COM3 0x3E8 */<br />
/* COM4 0x2E8 */<br />
void main(void)<br />
{<br />
int c;<br />
int ch;<br />
outportb(PORT1 + 1 , 0); /* Turn off interrupts - <strong>Port</strong>1 */<br />
<strong>Interfacing</strong> <strong>the</strong> <strong>Serial</strong> / <strong>RS</strong><strong>232</strong> <strong>Port</strong> V5.0 Page 22