Frequently Asked Questions

Using Multiple RS-232 Ports on a PIC® MCU or PIC® DSC

In order to use multiple RS-232 connections on a PIC® MCU or PIC® DSC, multiple #USE RS232 pre-processor directives will need to be setup using the STREAM option. A #USE RS232 pre-processor directive will remain in effect for GETC, PUTC, PRINTF and KBHIT functions until another #USE RS232 is encountered.

The following example program shows how to read from one RS-232 port (A) and echo the data to both the first RS-232 port (A) and a second RS-232 port (B) without using the STREAM option for #USE RS232:

    #USE RS232 (BAUD = 9600, XMIT = PIN_B0, RCV = PIN_B1)
    
    void put_to_a(char c) {
       put(c);
    }
    
    char get_from_a(void) {
       return(getc());
    }
    
    #USE RS232 (BAUD = 9600, XMIT = PIN_B2, RCV = PIN_B3)
    
    void put_to_b(char b) {
       putc(c);
    }
    
    void main(void) {
       char c;
       
       put_to_a("Online\n\r");
       put_to_b("Online\n\r");
       
       while(TRUE) {
          c = get_from_a();
          
          put_to_b(c);
          put_to_a(c);
       }
    }
    

The following example program will perform the same operations as the one above. The STREAM option in the #USE RS232 pre-processor directive makes the code more readable and is therefore recommended method:

    #USE RS232 (BAUD = 9600, XMIT = PIN_B0, RCV = PIN_B1, STREAM = COM_A)
    #USE RS232 (BAUD = 9600, XMIT = PIN_B2, RCV = PIN_B3, STREAM = COM_B)
    
    void main(void) {
       char c;
       
       fprintf(COM_A, "Online\n\r");
       fprintf(COM_B, "Online\n\r");
       
       while(TRUE) {
          c = fgetc(COM_A);
          
          fputc(c, COM_A);
          fputc(c, COM_B);
       }
    }
    

For more information or additional help about using multiple RS-232 ports on a PIC® MCU or PIC® DSC, contact CCS Technical Support.