我正在尝试使用PIC16F1938的功能代码1构建modbbus RTU。目前,我在伪造一些价值来显示数据。在下面的代码中,我可以为功能code1请求获取正确的CRC值。但是我无法得到适当的回应。 我在打包数据时遇到问题。让我知道如何获得正确的响应
unsigned char rxbuf[50], ser_data[100], crc_data[100], Max_scroll = 0;
unsigned char buff[10];
volatile uint8_t index = 0, rec_flag = 0, Delay_count = 0, Id[10], Buffer_count = 0, Cal_count = 0, Disp_count = 0, inc = 0, One_sec_update = 0, Auto_scroll_count = 0;
char data1[10];
unsigned char buf[20];
unsigned int count=0;
#define METER_ID 1
unsigned int j=0;
#define READ_REG 1
#define DE RC2
char Serial_Receive_byte() {
while(0==PIR1bits.RCIF);
return RCREG;
}
unsigned int crc_fn(unsigned char *dpacket,unsigned int len) {
unsigned int crc = 0xffff,poly = 0xa001;
unsigned int i=0;
for(i=0; i<len; i++) {
crc^= dpacket[i];
for(j=0; j<8; j++) {
if(crc & 0x01) {
crc >>= 1;
crc ^= poly;
} else
crc >>= 1;
}
}
return (crc);
}