- 打卡等级:初来乍到
- 打卡总天数:2
- 最近打卡:2025-07-30 10:41:47
新手上路
- 积分
- 29
|
请教大神:我使用的是Ai8H2K32U-45I-LQFP32芯片,使用其CRC硬件效验时,CRC16_DOH、CRC16_DOL输入是什么值,输出就是什么值,感觉没有给我计算,不知道我哪里漏了啥?
下面是相关的程序内容,望指教:
定义:
CRC16_CR EQU 0FB30H ;;CRC控制寄存器
CRC16_DIN EQU 0FB31H ;;CRC输入寄存器
CRC16_DOH EQU 0FB32H ;;CRC结果寄存器高位
CRC16_DOL EQU 0FB33H ;;CRC结果寄存器低位
rt2SendCountCyc equ 4ah ;;RT2发送的字节数计数器
运行以下测试程序:
SendNumbToRt2_operate: ;;;20250209
push acc
push psw
; mov a,#05h ;;;起始字节
; lcall SENDs2BUF_hex
mov dptr,#0200h ;设备识别码IDH+IDL 11-55
MOV A,#11H
movx @dptr,A
Inc DPTR
MOV A,#55H
movx @dptr,A
;;;TEST ONLY START
Inc DPTR ;;;0202 11 55 4C 00 40 02 A4 5B 3B 4D
MOV A,#57H ;11 55 57 01 E3 01 00 D7 14
movx @dptr,A
Inc DPTR ;;;0203
MOV A,#01H
movx @dptr,A
Inc DPTR ;;;0204
MOV A,#0E3H
movx @dptr,A
Inc DPTR ;;;0205
MOV A,#01H
movx @dptr,A
Inc DPTR ;;;0206
MOV A,#00H
movx @dptr,A
; LJMP TESTB_END
Inc DPTR ;;;0207
MOV A,#0D7H
movx @dptr,A
;LJMP TESTB_END
Inc DPTR ;;;0208
MOV A,#35H
movx @dptr,A
Inc DPTR ;;;0209
MOV A,#5aH
movx @dptr,A
Inc DPTR ;;;020A
MOV A,#5dH
movx @dptr,A
TESTB_END:
mov dptr,#0205h
movx a,@dptr
MOV rt2SendCountCyc,A
;;;TEST ONLY END
Lcall CRC16_Oprs
;;;
MOV A,rt2SendCountCyc ;;RT2发送的字节数计数器 LENGTH+5
add a,#08h ;;加上数据头 +CRC效验
;设备识别码IDH+IDL 11-55
;指令,命令 CMD
;操作页+地址 PAGE +ADDRESS
;数据长度 Length
;CRC效验 CRCH +CRCL
lcall SEND1BUF
mov dptr,#0200h ;发送给rt2数据起始地址
rt2send_cyc0100:
PUSH Acc
movx a,@dptr
; lcall SENDs2BUF_hex
lcall SEND1BUF
inc DPTR
POP Acc
DEC Acc
cjne a,#00h,rt2send_cyc0100 ;;;这里直接控制是发到哪个单元
;;已发送最后这个单元数据完成
; mov a,#06h ;;;结束字节
; lcall SENDs2BUF_hex
POP PSW
pop acc
RET
CRC16_Oprs:
PUSH PSW
push acc
MOV A,#0FFH
MOV CRC16_DOH,A
mov CRC16_DOL,A
MOV A,#00H
mov CRC16_DIN,A
nop
nop
MOV CRC16_CR,#83H ;;复位CRC16模块 ,输入输出数据均反转
MOV A,rt2SendCountCyc ;;RT2发送的字节数计数器 LENGTH+5
add a,#06h ;;加上数据头 不含CRC效验字节
;设备识别码IDH+IDL 11-55
;指令,命令 CMD
;操作页+地址 PAGE +ADDRESS
;数据长度 Length
;CRC效验 CRCH +CRCL
mov dptr,#0200h ;计算数据起始地址
CRC16_cyS:
PUSH Acc
movx a,@dptr
mov CRC16_DIN,A
; LCALL CRC16_COMP8Left
inc DPTR
POP Acc
DEC Acc
cjne a,#00h,CRC16_cyS ;;;这里直接控制是计算到哪个单元
;;已计算完成
;;;再定位存储单元处 S
mov dptr,#0200h
MOV A,rt2SendCountCyc ;;RT2发送的字节数计数器 LENGTH+5
add a,#06h
MOV DPL,A
;;;再定位存储单元处 S
; inc DPTR
MOV A,CRC16_DOH
; XRL A,#3BH
movx @dptr,A
inc DPTR
MOV A,CRC16_DOL
; XRL A,#4DH
movx @dptr,A
pop acc
POP PSW
ret
|
|