回覆列表
  • 1 # 使用者774056550451

    我剛剛寫好.跟PLC連線測試過,可以的./***************************************************************CRC計算方法1.預置1個16位的暫存器為十六進位制FFFF(即全為1);稱此暫存器為CRC暫存器;2.把第一個8位二進位制資料(既通訊資訊幀的第一個位元組)與16位的CRC暫存器的低 8位相異或,把結果放於CRC暫存器;3.把CRC暫存器的內容右移一位(朝低位)用0填補最高位,並檢查右移後的移出位;4.如果移出位為0:重複第3步(再次右移一位);如果移出位為1:CRC暫存器與多項式A001(1010 0000 0000 0001)進行異或;5.重複步驟3和4,直到右移8次,這樣整個8位資料全部進行了處理;6.重複步驟2到步驟5,進行通訊資訊幀下一個位元組的處理;7.將該通訊資訊幀所有位元組按上述步驟計算完成後,得到的16位CRC;*****************************************************************//****************************************************************************名稱: UART_CRC16_Work()說明: CRC16校驗程式引數: *CRC_Buf:資料地址 CRC_Leni:資料長度返回: CRC_Sumx:校驗值*****************************************************************************/unsigned int UART_CRC16_Work(unsigned char *CRC_Buf,unsigned char CRC_Leni){ unsigned char i,j; unsigned int CRC_Sumx; CRC_Sumx=0xFFFF; for(i=0;i

  • 中秋節和大豐收的關聯?
  • 尾盤集合競價的拉昇什麼意思?