
DS1990A
CRC汇编语言程序
表1
DO_CRC :
推
推
推
MOV
高铁
RRC
MOV
JNC
高铁
RRC
MOV
POP
RR
推
DJNZ
POP
POP
POP
RET
加
B
加
B,#8
A, CRC
A
A, CRC
零
A,#18H
A
CRC ,A
加
A
加
B, CRC_LOOP
加
B
加
;保存累加器
;保存B寄存器
;节省的比特被移位
集移= 8位
;
;计算CRC
;它移动到进位
;获得最后的CRC值
;跳过如果数据= 0
;更新的CRC值
;
;定位新的CRC
;存储新的CRC
;得到的剩余比特
;位置的下一个位
;保存剩余的位
;重复8位
;清理堆栈
;恢复B寄存器
;恢复累加器
CRC_LOOP :
零:
CRC生成
验证来自DS1990A发送的数据,总线主控器可以产生从一个CRC值
数据在其被接收。这个生成的值与存储在最后一个8位的值
DS1990A 。总线主机计算的CRC超过8位家族码和所有48个ID号位数据位,
但
不
在存储的CRC值本身。如果两个CRC值匹配,传输无差错。
如何用汇编语言编写的软件来生成CRC的例子示于表1。这
汇编语言代码为DS5000的软微控制器,它是与兼容书面
51分之8031微控制器系列。该过程DO_CRC计算的所有字节的CRC累积
传递给它的蓄电池。但是应当注意的是,该变量的CRC需要之前被初始化为0
被执行的程序。该数据的每个字节,然后放置在累加器和DO - CRC被称为
需要更新的CRC变量。当所有的数据已被传递到DO_CRC ,可变的CRC将包含
结果。该软件程序的等效多项式函数为:
CRC = X
8
+ x
5
+ x
4
+ 1
有关详细信息,请参阅DS19xx iButton的标准书。
8 10