Datasheet

program RS485_Master_Example
dim dat as byte[10] ' buffer for receving/sending messages
i, j as byte
cnt as longint
dim rs485_rxtx_pin as sbit at PORTD.2 ' set transcieve pin
rs485_rxtx_pin_direction as sbit at DDRD.2 ' set transcieve
pin direction
' Interrupt routine
sub procedure interrupt() org 0x16
RS485Master_Receive(dat)
end sub
main:
cnt = 0
PORTA = 0 ' clear PORTA
PORTB = 0 ' clear PORTB
PORTC = 0 ' clear PORTC
DDRA = 0xFF ' set PORTA as output
DDRB = 0xFF ' set PORTB as output
DDRC = 0xFF ' set PORTB as output
' 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)
RS485Master_Init() ' initialize MCU as Master
dat[0] = 0xAA
dat[1] = 0xF0
dat[2] = 0x0F
dat[4] = 0 ' ensure that message received flag is 0
dat[5] = 0 ' ensure that error flag is 0
dat[6] = 0
RS485Master_Send(dat,1,160)
SREG_I_bit = 1 ' enable global interrupt
RXCIE_bit = 1 ' enable interrupt on UART receive
while TRUE
Inc(cnt)
if (dat[5] <> 0) then ' if an error detected, signal it
PORTC = dat[5] ' by setting PORTC
end if
333
MIKROELEKTRONIKA - SOFTWARE AND HARDWARE SOLUTIONS FOR EMBEDDED WORLD
Libraries
mikroBasic PRO for AVR
CHAPTER 6