前两天有人帮忙编了个程序,大家帮忙看下合理么。谢谢了
;实习程序
org 0000h
AJMP IBAB
org 0003h
ajmp i_int0 测速信号1中断
ORG 0013H
LJMP i_int1 测速信号2中断
;主程序入口
ORG 0030H
IBAB: CLR A 工作单元清零
MOV R0,
#20H
MOV R1,
#60H
A1c: MOV @R0,A
INC R0
DJNZ R1,A1c
MOV TH0,a
mov TL0,a
mov sp,
#60h
;中断初始化
MOV IE,
#83H ;enable int0,int1
setb it0
setb it1
MOV TMOD,
#11H ;ctc0工作在16位计时状态
setb ex0
setb ex1
loop: mov r0,
#25h
mov r1,
#41h 41-44h为显示缓冲区
lcall bi_b 速度 二进制转十进制
lcall xs 显示速度
jnb 20h.0,loop
mov r4,
#01h 100000=0186a0(二进制)
mov r3,
#86h
mov r2,
#0a0h
mov r6,22h ts->r6,r5
mov r5,23h
acall div3_2 计算速度=100000/ts
mov 25h,r3
mov 26h,r2
ajmp loop
;显示子程序
XS: MOV R0,
#44H 指示灯状态地址
MOV R1,
#05H
MOV R2,
#08H 指示灯位控
MOV DPTR,#dbs1
XS1: MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
anl P2,
#07H
MOV A,R2
ORL P2,A
ACALL XSYS
DEC R0
mov a,r2
clr c
rlc a
mov r2,a
DJNZ R1,XS1
mov a,
#07h
orl p2,a
RET
;共阴极数码表格
dbs1: DB 3FH 0 0
DB 06H 1 1
DB 5BH 2 2
DB 4FH 3 3
DB 66H 4 4
DB 6DH 5 5
DB 7DH 6 6
DB 07H 7 7
DB 7FH 8 8
DB 6FH 9 9
;动态显示延时 1ms
XSYS: MOV R7,
#0fFH 07fh
XSYS1: NOP
nop
DJNZ R7,XSYS1
RET
;双字节二进制r0转4位十进制程序r1
bi_b: mov a,@r0
mov r7,a
inc r0
mov a,@r0
mov r6,a
mov r1,
#5ch
mov r3,
#03h
mov r2,
#0e8h
b1: clr c
mov a,r6
subb a,r2
xch a,r7
subb a,r3
xch a,r7
mov r6,a
jc b2
inc @r1
ajmp b1
b2: clr c
mov a,r6
add a,r2
xch a,r7
addc a,r3
xch a,r7
mov r6,a
inc r1
b3: clr c
mov r3,
#00h
mov r2,
#64h
mov a,r6
subb a,r2
xch a,r7
subb a,r3
xch a,r7
mov r6,a
jc b4
inc @r1
ajmp b3
b4: clr c
mov a,r6
add a,r2
xch a,r7
addc a,r3
xch a,r7
mov r6,a
inc r1
b5: clr c
mov a,r6
subb a,
#0ah
mov r6,a
jc b6
inc @r1
ajmp b5
b6: add a,
#0ah
inc r1
mov @r1,a
ret
; 测速信号0中断
I_int0: PUSH ACC
PUSH PSW
set tr0
SET ET0
clr a
mov th0,a
mov tl0,a
clr 20h.0
POP PSW
POP ACC
RETI
; 测速信号1中断
I_int0: PUSH ACC
PUSH PSW
clr tr0
CLR ET0
setb 20h.0 采样标准有效
mov 22h,th0
mov 23h,tl0 采样时间保存(单位微秒)
POP PSW
POP ACC
RETI
;多字节除法子程序
div3_2: clr a ;R4R3R2/R6R5->R4R3R2 /R7R1
mov r1,a
mov r7,a
mov r0,
#18h
dv0: setb c
mov a,r2
rlc a
mov r2,a
mov a,r3
rlc a
mov r3,a
mov a,r4
rlc a
mov r4,a
acall su16
jnc dv1
jb f0,dv1
acall ad16
dv1: djnz r0,dv0
ret
su16: mov a,r1
rlc a
mov r1,a
mov a,r7
rlc a
mov r7,a
mov f0,c
clr c
mov a,r1
subb a,r5
mov r1,a
mov a,r7
subb a,r6
mov r7,a
ret
ad16: dec r2
mov a,r1
add a,r5
xch a,r7
addc a,r6
xch a,r7
mov r1,a
ret
end
200字以内,仅用于支线交流,主线讨论请采用回复功能。