RTU協(xié)議給的CRC校驗算法

發(fā)布時間:2024-07-25
老帖中發(fā)現(xiàn)的一個crc校驗,帖子說是正確的,可我感覺在第一個for循環(huán),ac1在怎么加一,永遠(yuǎn)都是將&vb0的數(shù)據(jù)送給它啊,是我理解錯誤,還是程序有錯誤?怎么修改才好呢?
network1//網(wǎng)絡(luò)標(biāo)題
//網(wǎng)絡(luò)注釋
ldsm0.1
movb16#1,vb0
movb16#1,vb1
movb16#0,vb2
movb16#20,vb3
movb16#0,vb4
movb16#20,vb5
network2
ldm0.1
forvw10,+1,+6
network3
ldw=vw10,+1
movw16#ffff,ac0
movd&vb0,ac1
network4
ldsm0.0
xorb*ac1,ac0
network5
ldsm0.0
forvw12,+1,+8
srwac0,1
aeno
asm1.1
xorw16#a001,ac0
network6
next
network7
ldsm0.0
incdac1
network8
next
network9
ldm0.1
swapac0
aeno
movwac0,vw6
答:程序沒問題,crc本身的校驗機制要清楚。請參考rtu協(xié)議給的crc校驗算法。
crc開始時先把寄存器的16位全部置成“1”,然后把相鄰2個8位字節(jié)的數(shù)據(jù)放入當(dāng)前寄存器中,只有每個字符的8位數(shù)據(jù)用作產(chǎn)生crc,起始位,停止位和奇偶校驗位不加到crc中。產(chǎn)生crc期間,每8位數(shù)據(jù)與寄存器中值進(jìn)行異或運算,其結(jié)果向右移一位(向lsb方向),并用“0”填入msb,檢測lsb,若lsb為“1”則與預(yù)置的固定值異或,若lsb為“0”則不作異或運算。重復(fù)上述處過程,直至移位8次,完成第8次移位后,下一個8位數(shù)據(jù),與該寄存器的當(dāng)前值異或,在所有信息處理完后,寄存器中的最終值為crc值。
產(chǎn)生crc的過程:
1.把16位crc寄存器置成ffffh.
2.第一個8位數(shù)據(jù)與crc寄存器低8位進(jìn)行異或運算,把結(jié)果放入crc寄存器。
3.crc寄存器向右移一位,msb填零,檢查lsb.
4.(若lsb為0):重復(fù)3,再右移一位。
(若lsb為1):crc寄存器與aoolh進(jìn)行異或運算
5.重復(fù)3和4直至完成8次移位,完成8位字節(jié)的處理。
6.重復(fù)2至5步,處理下一個8位數(shù)據(jù),直至全部字節(jié)處理完畢。
7.crc寄存器的最終值為crc值。
8.把crc值放入信息時,高8位和低8位應(yīng)分開放置。
把crc值放入信息中,發(fā)送信息中的16位crc值時,先送低8位,后送高8位。
上一個:B箱齒輪箱改性塑料TPE水拉條擠出機
下一個:遇到液氮漏時怎么處理

寄存柜哪家好
8.5千瓦三相小型汽油發(fā)電機多少錢
納爾科引領(lǐng)工控自動化行業(yè)(原裝正品及最優(yōu)質(zhì)的價格和服務(wù))
大花惠蘭養(yǎng)護(hù)
實驗室常用的電子分析天平
facebook商城和傳統(tǒng)跨境電商對比有什么不同(全球跨境電商紅利期已過)
國內(nèi)環(huán)氧氯丙烷7月*格有所上漲
諾冠電磁閥的主要特點
可實現(xiàn)真實測試場景的加壓溫度控制
果樹打枝高枝鋸 zui流行的打枝高枝鋸
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos