18.5.1.1 Transmission

Address Detect Transmission

#include<xc.h>
#define FUART 4000000
#define BAUDRATE 9600
#define BRGVAL (((FUART/BAUDRATE)/16)-1)
int main(void) {
    // Configure oscillator as needed
    // Configure oscillator as needed
    _RP23R = 9;                 // Assign U1TX to RP23

    U1CONbits.MODE = 4;         // Asynchronous 9-bit UART with address detect
    U1CONbits.BRGS = 0;         // Low-Speed Mode
    U1CONbits.CLKSEL = 0;       // FPB/2 as Baud Clock source
    U1CONbits.STP = 0;          // 1 stop bit
    U1BRG = BRGVAL;             // BRG setting for 9600 baud rate
    U1CONbits.ON = 1;           // Enable UART
    U1CONbits.TXEN = 1;         // Enable UART TX.
    U1PAbits.P1 = 0x45;         // Write the address1 value to Parameter1
    /* Send data bytes for address1 */
    U1TXB = 'a';
    U1TXB = 'b';
    U1TXB = 'c';
    while(U1STATbits.TXMTIF == 0);
    U1PAbits.P1 = 0x55;         // Write the address2 value to Parameter1
    /* Send data bytes for address2 */
    U1TXB = 'd';
    U1TXB = 'e';
    U1TXB = 'f';
    while(U1STATbits.TXMTIF == 0);
    while(1)
    {
    }
    return 0;
}