完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
今天的工作毫无进展,并不是说什么也没有做,而是说我几乎做了我想到的一切了,然而对于问题的解决毫无帮助!现在我就像是发明灯泡之前的爱迪生,对他而言是找到下一种材料,对我而言是找到我思维的死角!但是今天并不是一无所获。至少是知道了一点常识! 1、程序下载和串口的配置是没有关系的,也就是说,能够下载程序,并不意味着你的串口配置是正确的(当然也不能说明是错的!)。但是下载程序和晶振是有关系的,但是确切的关系我并不是很清楚! 真的只是一点,再多一点都没有了! 昨天说的会在下面写上CRC的校验代码和将得到的校验HEX码转换成ASCII码的代码: #define POLY 0x8005 //参数 *Pushdata 需要校验的字符串 //参数 length 字符串的长度可用strlen()函数获得 unsigned short CRC16_ModBus(unsigned char *Pushdata, unsigned char length) { unsigned short Reg_CRC = 0xffff; unsigned char Temp_reg = 0x00; unsigned char i, j; for (i = 0; i for (j = 0; j<8; j++) { if (Reg_CRC & 0x0001) { Reg_CRC = Reg_CRC >> 1 ^ 0xA001; } else { Reg_CRC >>= 1; } } } // Temp_reg=Reg_CRC>>8; // return (Reg_CRC<<8|Temp_reg); //ModBusCRC低位在前 return (Reg_CRC); //ModBusCRC高位在前 } //参数HEX是计算出来的HEX码,长度为2个字节 //参数是传入的用来接收校验码的数组,长度为4个字节 void HEX_to_ASCII(unsigned short HEX, unsigned char* ASCII) { unsigned char tempASCII[4] = {' |