芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

51单片机modbus协议程序IC解密

IC解密#include <reg51.h>
#define uint8 unsigned char
#define uint16 unsigned int
#define FOSC 16000000
uint16 BAUD=9600;
uint16 TEMP_Alert=1000;
//字地址 0 - 255 (只取低8位)
//位地址 0 - 255 (只取低8位)

uint16  TempRegister; //用于测试 字址址16

uint8 localAddr = 0x01; //单片机控制板的地址
uint8 sendCount;  //发送字节个数
uint8 receCount;    //接收到的字节个数
//uint8 sendPosi;    //发送位置

uint8 xdata receBuf[1];
uint8 xdata sendBuf[1];

void checkComm0Modbus(void);
uint16 getRegisterVal(uint16 addr,uint16 *tempData);
uint16 setRegisterVal(uint16 addr,uint16 tempData);
void switch_BAUD(uint16 value);


/*****************************波特率调整函数 ********************************/
////函数功能:调整串口通信波特率
////串口工作在工作方式1,即8位波特率可变模式
/****************************************************************************/
void switch_BAUD(uint16 value)
{
 switch(value)
 {
  case 0x0001: { BAUD=9600;break; }
  case 0x0002: { BAUD=14400;break; }
  case 0x0003: { BAUD=19200;break; }
 }
 TR1=0;        //停止定时器1
 ES=0;        //关闭串口中断
 TH1=TL1=-(FOSC/12/32/BAUD);     //设置波特率
 TR1=1;        //开启定时器1
 ES=1;        //使能串口中断
}
/***************************CRC校验码生成函数 ********************************/
////函数功能:生成CRC校验码
////本代码中使用查表法,以提高运算速度
/****************************************************************************/
uint16 crc16(uint8 *puchMsg, uint16 usDataLen)
{
 uint8 uchCRCHi = 0xFF ; /* 高CRC字节初始化 */
 uint8 uchCRCLo = 0xFF ; /* 低CRC 字节初始化 */
 uint16 uIndex ; /* CRC循环中的索引 */
 while (usDataLen--) /* 传输消息缓冲区 */
 {
  uIndex = uchCRCHi ^ *puchMsg++ ; /* 计算CRC */
  uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ;
  uchCRCLo = auchCRCLo[uIndex] ;
 }
 return (uchCRCLo << 8 | uchCRCHi) ;
}//uint16 crc16(uint8 *puchMsg, uint16 usDataLen)
/*******************************串口发送函数 ********************************/
////函数功能:将数据包通过串口发送至主机
////有待修改......
/****************************************************************************/
//开始发送
void Begin_send(void)
{
 uint16 i=0;
 while(sendCount--)
 {
  SBUF = sendBuf[i++];
  while(!TI);
 }
}

/********IC解密从机响应主机问询函数,function code : 03,读取多个寄存器值 ********/
////函数功能:丛机根据串口接收到的数据包receBuf[]里面的内容,根据被读取寄存器
////的起始地址和读取的寄存器个数,去读相应的寄存器的值,并将读取的数据以MODBUS
////响应数据的标准格式打包,经过串口发送到主机。数据包格式同上。



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信