#include "C:\Archivos de programa\PICC V4\Projects\Modbus.h"
#include <LCD.C>
#ZERO_RAM
#int_RDA
RDA_isr()
{
}
#int_CCP2
CCP2_isr()
{
}
#define MODBUS_BUS SERIAL
#define MODBUS_TYPE SLAVE
#define MODBUS_SERIAL_RX_BUFFER_SIZE 8
#define MODBUS_SERIAL_BAUD 9600
#define MODBUS_OUR_ADDRESS 10
#include "modbus.c"
void main()
{ modbus_init();
while(TRUE)
{
while(!modbus_serial_receive(FALSE));
fprintf(SLAVE_PC
, "\n\rBus Active");
if((respond = (modbus_rx.address == MODBUS_OUR_ADDRESS)) || modbus_rx.address == 0)
{
fprintf(SLAVE_PC
, "\n\rRequest for us"); fprintf(SLAVE_PC
, "\n\rFunction: %X", modbus_rx.
func); switch(modbus_rx.func)
{
case 0x01:
if(respond)
{
//read the coils
}
break;
case 0x02:
if(respond)
{
//read discrete inputs
}
break;
case 0x03:
if(respond)
{
//read holding registers
}
break;
case 0x04:
if(respond)
{
//read input registers
}
break;
case 0x05:
break;
case 0x06:
break;
case 0x07:
break;
case 0x08:
if(respond) {diagnostics_rsp(MODBUS_OUR_ADDRESS,
make16(modbus_rx.data[0],modbus_rx.data[1]),
make16(modbus_rx.data[2], modbus_rx.data[3]));}
fprintf(SLAVE_PC
, "\n\rResetting..."); reset_cpu();
break;
}
}
}
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_ccp2(CCP_COMPARE_INT);
lcd_init();
enable_interrupts(INT_RDA);
enable_interrupts(INT_CCP2);
enable_interrupts(GLOBAL);
setup_oscillator(False);
// TODO: USER CODE!!
}