📄 bike.asm
字号:
MOV A,#95H
LCALL SEND_I
mov a,3eh
swap a
anl a,#0fh
add a,#30h
LCALL SEND_D
mov a,3eh
anl a,#0fh
add a,#30h
LCALL SEND_D
MOV A,#96H ;显示空白
LCALL SEND_I
mov a,#0a1h
LCALL SEND_D
mov a,#0a0h
LCALL SEND_D
MOV A,#97H ;Km
LCALL SEND_I
mov a,#4bh
LCALL SEND_D
mov a,#6dh
LCALL SEND_D
out_zong_lucheng_jisuan:
ret
sudu_jisuan: ;最后结果在30H,31H,32H中
clr c
jb flag1,dedao
ljmp out_sudu_jisuan
dedao: mov 50h,68h ;时间最低位预处理,结果指向30h
call yuchuli
mov 30h,52h
mov 31h,53h
mov 32h,54h
mov r0,#30h
lcall btof
mov 50h,69h ;时间第二位预处理,结果指向36h
call yuchuli
mov 36h,52h
mov 37h,53h
mov 38h,54h
mov r0,#36h
lcall btof
mov 33h,#03h ;第二位乘于256,结果指向36h
mov 34h,#25h
mov 35h,#60h
mov r0,#33h
lcall btof
mov r0,#36h
mov r1,#33h
lcall fmul
mov r1,#30h
mov r0,#36h
lcall fadd ;加上最低位的结果,指向36h ,定时范围最高为255X256+255=65535us
; lcall ftob
mov 50h,6ah ;第三位预处理,结果指向3ch
lcall yuchuli
mov 3ch,52h
mov 3dh,53h
mov 3eh,54h
mov r0,#3ch
lcall btof
mov 39h,#05h
mov 3ah,#65h
mov 3bh,#53h
mov r0,#39h
lcall btof
mov r0,#3ch
mov r1,#39h
lcall fmul ;乘于低位的结果,最高定时范围为255X65530=16710150us=16.71s
;此时可测的速度,以每圈2米计算,为2X3.6/16.17=0.44Km/h
;仍不能满足要求,结果指向3ch
; lcall ftob
mov r1,#36h
lcall fadd
mov 39h,#07h
mov 3ah,#10h
mov 3bh,#00h
mov r0,#39h
lcall btof
mov r0,#3ch
mov r1,#39h
lcall fdiv ;除以1000000,换算成秒
; lcall ftob
mov 30h,#01h ;自行车轮子一圈的周长
mov 31h,#20h
mov 32h,#90h
mov r0,#30h
lcall btof
mov r0,#30h
mov r1,#3ch
lcall fdiv
; lcall ftob
mov 36h,#01h
mov 37h,#36h
mov 38h,#00h
mov r0,#36h
lcall btof
mov r0,#30h
mov r1,#36h
lcall fmul
lcall ftob
mov a,30h
cjne a,#02h,xiaoyu_10Kmph
call qing_wei8 ;后四个字位置清除
MOV A,#84H
LCALL SEND_I
mov a,31h
swap a
anl a,#0fh
add a,#30h
LCALL SEND_D
mov a,31h
anl a,#0fh
add a,#30h
LCALL SEND_D
MOV A,#85H ;Km
LCALL SEND_I
mov a,#4bh
LCALL SEND_D
mov a,#6dh
LCALL SEND_D
MOV A,#86H ;/h
LCALL SEND_I
mov a,#2fh
LCALL SEND_D
MOV A,#68H
LCALL SEND_D
ljmp out_sudu_jisuan
xiaoyu_10Kmph: mov a,30h
cjne a,#01h,xiaoyu_1Kmph
call qing_wei8 ;后四个字位置清除
MOV A,#84H
LCALL SEND_I
mov a,31h
swap a
anl a,#0fh
add a,#30h
LCALL SEND_D
mov a,#2eh
LCALL SEND_D
MOV A,#85H
LCALL SEND_I
mov a,31h
anl a,#0fh
add a,#30h
LCALL SEND_D
mov a,32h
swap a
anl a,#0fh
add a,#30h
LCALL SEND_D
MOV A,#86H ;Km
LCALL SEND_I
mov a,#4bh
LCALL SEND_D
mov a,#6dh
LCALL SEND_D
MOV A,#87H ;/h
LCALL SEND_I
mov a,#2fh
LCALL SEND_D
MOV A,#68H
LCALL SEND_D
ljmp out_sudu_jisuan
xiaoyu_1Kmph: call qing_wei8 ;后四个字位置清除
MOV A,#84H
LCALL SEND_I
mov a,#30h
LCALL SEND_D
mov a,#2eh
LCALL SEND_D
MOV A,#85H
LCALL SEND_I
mov a,#30h
LCALL SEND_D
mov a,#30h
LCALL SEND_D
; MOV A,#85H
; LCALL SEND_I
; mov a,31h
; swap a
; anl a,#0fh
; add a,#30h
; LCALL SEND_D
; mov a,31h
; anl a,#0fh
; add a,#30h
; LCALL SEND_D
MOV A,#86H ;Km
LCALL SEND_I
mov a,#4bh
LCALL SEND_D
mov a,#6dh
LCALL SEND_D
MOV A,#87H ;/h
LCALL SEND_I
mov a,#2fh
LCALL SEND_D
MOV A,#68H
LCALL SEND_D
out_sudu_jisuan:
clr qidong
ret
yuchuli: clr c
mov a,50h
subb a,#01
jnc dayu0
mov 52h,#00h
mov 53h,#00h
mov 54h,#00h
ljmp process51h
dayu0: mov a,50h
subb a,#10
jnc dayu10
mov 52h,#01h
mov a,50h
swap a
mov 53h,a
mov 54h,#00h
ljmp process51h
dayu10:
mov a,50h
subb a,#100
jnc dayu100
mov 52h,#02h
mov a,50h
mov b,#10
div ab
rl a
rl a
rl a
rl a
mov 53h,a
mov a,b
orl 53h,a
mov 54h,#00h
ljmp process51h
dayu100:
mov 52h,#03h
mov a,50h
mov b,#100
div ab
rl a
rl a
rl a
rl a
mov 53h,a
mov a,50h
mov b,#100
div ab
mov a,b
mov b,#10
div ab
orl 53h,a
mov a,b
rl a
rl a
rl a
rl a
mov 54h,a
ljmp process51h
process51h:
mov a,51h
subb a,#00
jnc dayu051
mov 58h,#00h
mov 59h,#00h
mov 5ah,#00h
ret
dayu051:
mov a,51h
subb a,#10
jnc dayu1051
mov 58h,#01h
mov a,51h
swap a
mov 59h,a
mov 5ah,#00h
ret
dayu1051:
mov a,51h
subb a,#100
jnc dayu10051
mov 58h,#02h
mov a,51h
mov b,#10
div ab
rl a
rl a
rl a
rl a
mov 59h,a
mov a,b
orl 59h,a
mov 5ah,#00h
ret
dayu10051:
mov 58h,#03h
mov a,51h
mov b,#100
div ab
rl a
rl a
rl a
rl a
mov 59h,a
mov a,51h
mov b,#100
div ab
mov a,b
mov b,#10
div ab
orl 59h,a
mov a,b
rl a
rl a
rl a
rl a
mov 5ah,a
ret
qing_wei: MOV A,#94H
LCALL SEND_I
mov a,#0a1h
LCALL SEND_D
mov a,#0a0h
LCALL SEND_D
MOV A,#95H
LCALL SEND_I
mov a,#0a1h
LCALL SEND_D
mov a,#0a0h
LCALL SEND_D
MOV A,#96H
LCALL SEND_I
mov a,#0a1h
LCALL SEND_D
mov a,#0a0h
LCALL SEND_D
MOV A,#97H
LCALL SEND_I
mov a,#0a1h
LCALL SEND_D
mov a,#0a0h
LCALL SEND_D
ret
qing_wei8: MOV A,#84H
LCALL SEND_I
mov a,#0a1h
LCALL SEND_D
mov a,#0a0h
LCALL SEND_D
MOV A,#85H
LCALL SEND_I
mov a,#0a1h
LCALL SEND_D
mov a,#0a0h
LCALL SEND_D
MOV A,#86H
LCALL SEND_I
mov a,#0a1h
LCALL SEND_D
mov a,#0a0h
LCALL SEND_D
MOV A,#87H
LCALL SEND_I
mov a,#0a1h
LCALL SEND_D
mov a,#0a0h
LCALL SEND_D
ret
juli_genghuan: call du_dangqian_licheng ;读取当前里程数据
mov 7ah,74h
mov 7bh,75h
mov 7ch,76h
mov R1,7ah
MOV SLA,#0A0H
MOV SUBA,#06H
CALL IWRNBYTE
call delay5ms
mov R1,7bh
MOV SLA,#0A0H
MOV SUBA,#07H
CALL IWRNBYTE
call delay5ms
mov R1,7ch
MOV SLA,#0A0H
MOV SUBA,#08H
CALL IWRNBYTE
call delay5ms
call qing_dangqian_licheng ;清除当前里程的存储数据
ret
du_dangqian_licheng:
MOV SLA,#0A0H
MOV SUBA,#00H
CALL IRDNBYTE
call delay5ms
mov 74h,a
MOV SLA,#0A0H
MOV SUBA,#01H
CALL IRDNBYTE
call delay5ms
mov 75h,a
MOV SLA,#0A0H
MOV SUBA,#02H
CALL IRDNBYTE
call delay5ms
mov 76h,a
ret
du_zong_licheng:
MOV SLA,#0A0H
MOV SUBA,#03H
CALL IRDNBYTE
call delay5ms
mov 77h,a
MOV SLA,#0A0H
MOV SUBA,#04H
CALL IRDNBYTE
call delay5ms
mov 78h,a
MOV SLA,#0A0H
MOV SUBA,#05H
CALL IRDNBYTE
call delay5ms
mov 79h,a
ret
du_shangci_licheng:
MOV SLA,#0A0H
MOV SUBA,#06H
CALL IRDNBYTE
call delay5ms
mov 7ah,a
MOV SLA,#0A0H
MOV SUBA,#07H
CALL IRDNBYTE
call delay5ms
mov 7bh,a
MOV SLA,#0A0H
MOV SUBA,#08H
CALL IRDNBYTE
call delay5ms
mov 7ch,a
ret
qing_dangqian_licheng:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -