User`s manual

program pr485
dim dat as byte[8]
' buffer for receiving/sending messages
dim i as byte
dim j as byte
sub procedure interrupt
if TestBit(RCSTA,OERR) = 1 then
portd = $81
end if
RS485slave_receive(dat)
' every byte is received by
end sub
' RS485slave_read(dat);
' upon receiving a msg with no errors
main:
' data[4] is set to 255
trisb = 0
trisd = 0
USART_init(9600)
' initialize usart module
RS485slave_init(160)
' init. MCU as Slave with address 160
SetBit(PIE1,RCIE)
' enable interrupt
SetBit(INTCON,PEIE)
' on byte received
ClearBit(PIE2,TXIE)
' via USART (RS485)
SetBit(INTCON,GIE)
portb = 0
portd = 0
' ensure that message received flag is 0
dat[4] = 0
' ensure that error flag is 0
dat[5] = 0
while true
if dat[5] then
portd = $aa
' if there is error, set portd to $aa
end if
if dat[4] then
' if message received
dat[4] = 0
' clear message received flag
j = dat[3]
' number of data bytes received
for i = 1 to j
portb = dat[i-1]
' output received data bytes
next i
dat[0] = dat[0] + 1
' increment received dat[0]
RS485slave_send(dat,1)
' send it back to Master
end if
wend
end.
mikroBASIC
- Basic Compiler for Microchip PIC microcontrollers
154
mikroBASIC
MikroElektronika: Development tools - Books - Compilers
making it simple...
page
Example