CRC表初始化子程序SBR1
LD sm0.0 //
MOVD &VB3000, AC3 // 装入表指针
MOVD +0, AC2 // 装入索引 index.
FOR VW2000, +1, +256 // 外循环开始
MOVW AC2, AC0 // 值 = index.
FOR VW500, +1, +8 // 内循环开始
SRW AC0, 1 // 移出LS位
LD sm1.1 // 如果移出位是1
XORW 16#A001, AC0 // 则执行异或
next
LD sm0.0 //
INCW AC2 // 索引 (index) +1,
MOVW AC0, *AC3 // 储存表字
+I +2, AC3 // 表指针加2
WDR // 复位看门狗
next
计算CRC/SBR3
LD sm0.0 //
WDR // 复位看门狗
MOVD 16#00000000, AC3 // 清除临时寄存器
MOVD 16#0000FFFF, AC2 // 初始化CRC值为0xFFFF.
FOR VW502, +1, AC0 // 循环开始
MOVB *AC1, AC3 // 取信息字节
XORW AC2, AC3 // 数据与CRC异或,
ANDW 16#00FF, AC3 // 只保留LS字节
SLW AC3, 1 // 把索引置换成字表
+I +3000, AC3 // 加表起始地址
SWAP AC2 // 交换CRC字节,
ANDW 16#00FF, AC2 // 只保留LS字节
XORW *AC3, AC2 // 表值与CRC异或
INCW AC1 // 指向下一段信息字节
next
SWAP AC2 // 返回前交换CRC字节
WDR // 复位看门狗
一调用SBR3就出错啊
信息显示扫苗监视器超时错误~~