NTC温度计算代码疑问
以下代码是在STC的参考例程里面的,ADC查表计算,有没有老师能详细解释下这段代码?我自己的理解以下几个点,不知道对不对?1,这段代码是R4.R5,R6,R7的4个字节高低位置顺序排列的数据除以R2,R3两个字节的除法运算,结果保存在R4,R5,R6,R7由高到底的4个字节中对吧?
2,余数(R2,R3)在后面的计算中视乎没什么作用了,是不是可以忽略掉了?忽略掉有什么影响?
3,另外备注写的(use R0~R7,B,DPL)是什么意思?那位老师方便解释下吗?
F_ULDIV:
F_DIV32: ; (R4,R5,R6,R7)/(R2,R3)=(R4,R5,R6,R7),余数在(R2,R3),use R0~R7,B,DPL
CJNE R2,#0,F_DIV32_16 ; L_0075
F_DIV32_8: ;R3非0,(R4,R5,R6,R7)/R3=(R4,R5,R6,R7),余数在 R3,use R0~R7,B
MOV A,R4
MOV B,R3
DIV AB
XCH A,R7
XCH A,R6
XCH A,R5
MOV R4,A
MOV A,B
XCH A,R3
MOV R1,A
MOV R0,#24
L_0056:
MOV A,R7
ADD A,R7
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
JBC CY,L_006B
SUBB A,R1
JC L_006F
L_006B:
MOV A,R3
SUBB A,R1
MOV R3,A
INC R7
L_006F:
DJNZ R0,L_0056
CLR A
MOV R1,A
MOV R2,A
RET
;***************************************************************************
F_DIV32_16: ;R2非0,(R4,R5,R6,R7)/(R2,R3)=(R5,R6,R7),余数在 (R2,R3),use R0~R7
L_0075:
MOV R0,#24 ;开始R1=0
L_0077:
MOV A,R7 ;左移一位
ADD A,R7
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
RLC A
MOV R5,A
MOV A,R4
RLC A
MOV R4,A
XCH A,R1
RLC A
XCH A,R1
JBC CY,L_008E ;如果C=1,肯定够减
SUBB A,R3
MOV A,R1 ;测试是否够减
SUBB A,R2
JC L_0095
L_008E:
MOV A,R4
SUBB A,R3
MOV R4,A
MOV A,R1
SUBB A,R2
MOV R1,A
INC R7
L_0095:
DJNZ R0,L_0077
CLR A
XCH A,R1
MOV R2,A
CLR A
XCH A,R4
MOV R3,A
RET
没有那我老师帮忙吗?
看来这贴要沉了
页:
[1]