Datasheet
' Pass pointers to UART sub functions of used UART module
UART_Wr_Ptr = @UART1_Write
UART_Rd_Ptr = @UART1_Read
UART_Rdy_Ptr = @UART1_Data_Ready
UART_TX_Idle_Ptr = @UART1_TX_Idle
UART1_Init(9600) ' initialize UART1 module
Delay_ms(100)
RS485Slave_Init(160) ' Intialize MCU as slave, address 160
dat[4] = 0 ' ensure that message received flag is 0
dat[5] = 0 ' ensure that message received flag is 0
dat[6] = 0 ' ensure that error flag is 0
SREG_I_bit = 1 ' enable global interrupt
RXCIE_bit = 1 ' enable interrupt on UARTs receive
while TRUE
if (dat[5] <> 0) then ' if an error detected, signal it by
PORTC = dat[5] ' setting PORTC
dat[5] = 0
end if
if (dat[4] <> 0) then ' upon completed valid message receive
dat[4] = 0 ' data[4] is set to 0xFF
j = dat[3]
for i = 1 to dat[3] ' show data on PORTB
PORTB = dat[i-1]
next i
dat[0] = dat[0]+1 ' increment received dat[0]
Delay_ms(1)
RS485Slave_Send(dat,1) ' and send it back to master
end if
wend
end.
335
MIKROELEKTRONIKA - SOFTWARE AND HARDWARE SOLUTIONS FOR EMBEDDED WORLD
Libraries
mikroBasic PRO for AVR
CHAPTER 6