📄 memcmp.a51
字号:
NAME MEMCMP
public _mymemcmpa
public sendprev
EXTRN idata (prevCmd)
$include (fx2regs.inc)
MEMCMPSEG SEGMENT CODE
RSEG MEMCMPSEG
USING 0
; unsigned char mymemcmpa(unsigned char idata * s1, unsigned char xdata * s2, unsigned char len)
; s1 in R7
; s2 in R4,R5
; len in R3
_mymemcmpa:
MOV DPL,R5
MOV DPH,R4
MOV R1,AR7
loop:
MOVX A,@DPTR
MOV B,A
MOV A,@R1
CJNE A,B,fail
INC DPTR
INC R1
DJNZ R3,loop
MOV R7,#00H
RET
fail:
MOV R7,#01H
RET
; Send prevCmd out using GPIF.
; R0 = ptr
; R7 = loop ctr
; R6 = cmd_lsb
sendprev:
MOV R7, #06H
MOV R0, #prevCmd
cmd_loop:
MOV A,@R0
MOV R6, A ; cmd_lsb = *ptr++
INC R0
; // make sure GPIF is not busy
gpif_loop:
MOV A,GPIFTRIG
JNB ACC.7,gpif_loop
; trigger the GPIF XGPIFSGLDATH = *ptr++;
MOV A,@R0
INC R0
MOV DPTR,#XGPIFSGLDATH ;#0E6F0H
MOVX @dptr, a
MOV a, R6
INC dptr
MOVX @dptr, a ;XGPIFSGLDATLX = cmd_lsb
djnz R7, cmd_loop
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -