Mikroc, Library example – ABL electronic PIC Microcontrollers PIC16 User Manual

Page 255

Advertising
background image

MikroElektronika: Development tools - Books - Compilers

247

page

mikroC - C Compiler for Microchip PIC microcontrollers

mikroC

making it simple...

Library Example

The example demonstrates working with PIC as Slave nod in RS-485 communication. PIC
receives only packets addressed to it (address 160 in our example), and general messsages with
target address 50. The received data is forwarded to PORTB, and sent back to Master.

unsigned short

dat[8];

// buffer for receiving/sending messages

char

i = 0, j = 0;

void

interrupt() {

/* Every byte is received by RS485Slave_Read(dat);

If message is received without errors,
data[4] is set to 255 */

if

(RCSTA.OERR) PORTD = 0x81;

RS485Slave_Read(dat);

}

//~

void

main() {

TRISB = 0;

TRISD = 0;

Usart_Init(9600);

// Initialize usart module

RS485Slave_Init(160);

// Initialize MCU as Slave with address 160

PIE1.RCIE = 1;

// Enable interrupt

INTCON.PEIE = 1;

// on byte received

PIE2.TXIE = 0;

// via USART (RS485)

INTCON.GIE = 1;

PORTB = 0;

PORTD = 0;

dat[4] = 0;

// Ensure that msg received flag is 0

dat[5] = 0;

// Ensure that error flag is 0

do

{

if

(dat[5]) PORTD = 0xAA;

// If there is error, set PORTD to $AA

if

(dat[4]) {

// If message received:

dat[4] = 0;

// Clear message received flag

j = dat[3];

// Number of data bytes received

for

(i = 1; i < j; i++)

PORTB = dat[--i];

// Output received data bytes

dat[0]++;

// Increment received dat[0]

RS485Slave_Write(dat, 1);

// Send it back to Master

}

} while (1);

}

//~!

Advertising
This manual is related to the following products: