額。。。要考試了,就知道這是一段測速的程序,激光傳感器照在每段長度為3cm的黑白相間的條紋上,白色有反射,黑色無反射,產生的信號
送到單片機的T1端。要看懂這個程序的速度算法額。。高手幫幫我啊。。。。
MEAS2: CLR REN
CLR ES
CLR 20H.2
MOV TMOD, #01010001B
MOV TCON, #01010000B
MOV TH1, #0
MOV TL1, #0
LCALL D200M
MOV 35H, TH1
MOV 34H, TL1
MOV R2, #0
MOV R1, #108
LCALL MULL
MOV 33H, #0
MOV R2, #0
MOV R1, #100
LCALL DIVV
MOV 4DH, 33H ;速度整數位
MOV 4CH, 30H ;速度小數位
========================================================================================
MULL: MOV A, 34H ;34H,35H:multiplicant 低位在前
MOV B, R1 ;R1,R2:multiplier
MUL AB ;30H,31H,32H;33H;product
MOV 30H, A
MOV R3, B
MOV A, 35H
MOV B, R1
MUL AB
ADD A, R3
MOV 31H, A
MOV A, B
ADDC A, #0
MOV 32H, A
MOV A, 34H
MOV B, R2
MUL AB
MOV R4, A
MOV R3, B
MOV A, 35H
MOV B, R2
MUL AB
ADD A, R3
MOV R5, A
MOV A, B
ADDC A, #0
MOV 33H, A
MOV A, 31H
ADD A, R4
MOV 31H, A
MOV A, 32H
ADDC A, R5
MOV 32H, A
MOV A, 33H
ADDC A, #0
MOV 33H, A
RET
=========================================================================================
DIVV: CJNE R1, #0, DIV1 ;30H,31H,32H,dividend & remainder低位在前
CJNE R2, #0, DIV1 ;R1,R2 divider
MOV 35H, #0FFH ;33H,34H,35Hquotient
MOV 34H, #0FFH
MOV 33H, #0FFH
RET
DIV1: MOV R3, #0
MOV R4, #0
MOV R5, #24
MOV 35H, #0
MOV 34H, #0
MOV 33H, #0
DIV2: MOV A, 30H
RLC A
MOV 30H, A
MOV A, 31H
RLC A
MOV 31H, A
MOV A, 32H
RLC A
MOV 32H, A
MOV A, R3
RLC A
MOV R3, A
MOV A, R4
RLC A
MOV R4, A
JC DIV5
SUBB A, R2
JNZ DIV2A
MOV A, R3
SUBB A, R1
DIV2A: JC DIV3
DIV5: CLR C
MOV A, R3
SUBB A, R1
MOV R3, A
MOV A, R4
SUBB A, R2
MOV R4, A
SETB C
LJMP DIV4
DIV3: CLR C
DIV4: MOV A, 33H
RLC A
MOV 33H, A
MOV A, 34H
RLC A
MOV 34H, A
MOV A, 35H
RLC A
MOV 35H, A
DJNZ R5, DIV2
MOV 30H, R3
MOV 31H, R4
RET
============================================
D200M: MOV 0AH, #3
D200M1: LCALL D60M
D60M: MOV 08H, #120
LJMP DM1
DM1: MOV 09H, #250
DM2: DJNZ 09H, DM2
DJNZ 08H, DM1
RET
|