📄 sunliang11.asm
字号:
;40H、41H、42H、43H为总里程计数,44H、45H分别为计百米、米单元。
;50H、51H、52H、53H、54H、55H、56H、57H为总里程显示单元。
;62H、63H均为速度里程计数,64H、65H、66H、67H为辅助计算单元,68H、69H为显示用延时。
;60H、61H为速度显示单元。
;R4、R5、R6、R7为计算用单元。
;每20个脉冲为一米里程。
ORG 0000H
LJMP START
ORG 000BH
LJMP TS
ORG 0013H
LJMP SERVE
ORG 0200H
START: MOV SP,#08H
MOV IE,#86H
MOV IP,#80H
MOV TMOD,#09H
CLR A
MOV 63H,A
MOV R4,#14H
MOV TH0,#03CH
MOV TL0,#0B0H
SETB TR0
XS: LCALL HS
LCALL DISUP
LJMP XS
ORG 0300H
HS: MOV A,40H
LCALL HSS
MOV 50H,R6
MOV 51H,R7
MOV A,41H
LCALL HSS
MOV 52H,R6
MOV 53H,R7
MOV A,42H
LCALL HSS
MOV 54H,R6
MOV 55H,R7
MOV A,43H
LCALL HSS
MOV 56H,R6
MOV 57H,R7
HS1: MOV A,63H
MOV B,#24H
MUL AB
MOV 64H,B
MOV 65H,A
LCALL DV
MOV A,66H
LCALL HSS
MOV 61H,R6
MOV 60H,R7
RET
HSS: MOV B,#0AH
DIV AB
MOV R6,A
MOV R7,B
RET
DV: CLR C
MOV A,64H
SUBB A,#0C8H
JC DV0
SETB OV
MOV 66H,#00H
LJMP DV4
DV0: MOV R5,#8
DV1: MOV A,65H
RLC A
MOV 65H,A
MOV A,64H
RLC A
MOV 64H,A
MOV F0,C
CLR C
SUBB A,#0C8H
ANL C,/F0
JC DV2
MOV 64H,A
DV2: CPL C
MOV A,66H
RLC A
MOV 66H,A
DJNZ R5,DV1
MOV A,64H ;四舍五入
ADD A,64H
JC DV3
SUBB A,#0C8H
JC DV4
DV3: INC 66H
DV4: CLR OV
RET
ORG 0600H
DISUP: MOV DPTR,#TAB ;显示子程序
MOV A,50H
MOVC A,@A+DPTR
MOV P2,A
CLR P0.0
LCALL DELAY
SETB P0.0
MOV DPTR,#TAB
MOV A,51H
MOVC A,@A+DPTR
MOV P2,A
CLR P0.1
LCALL DELAY
SETB P0.1
MOV A,52H
MOVC A,@A+DPTR
MOV P2,A
CLR P0.2
LCALL DELAY
SETB P0.2
MOV A,53H
MOVC A,@A+DPTR
MOV P2,A
CLR P0.3
LCALL DELAY
SETB P0.3
MOV A,54H
MOVC A,@A+DPTR
MOV P2,A
CLR P0.4
LCALL DELAY
SETB P0.4
MOV A,55H
MOVC A,@A+DPTR
MOV P2,A
SETB P2.7
CLR P0.5
LCALL DELAY
SETB P0.5
CLR P2.7
MOV A,56H
MOVC A,@A+DPTR
MOV P2,A
CLR P0.6
LCALL DELAY
SETB P0.6
MOV A,57H
MOVC A,@A+DPTR
MOV P2,A
CLR P0.7
LCALL DELAY
SETB P0.7
MOV A,60H
MOVC A,@A+DPTR
MOV P2,A
CLR P1.0
LCALL DELAY
SETB P1.0
MOV A,61H
MOVC A,@A+DPTR
MOV P2,A
CLR P1.1
LCALL DELAY
SETB P1.1
RET
ORG 0800H
DELE: MOV 68H,#4 ;延时程序
LOOP1: MOV 69H,#100
LOOP2: NOP
NOP
NOP
DJNZ 69H,LOOP2
DJNZ 68H,LOOP1
RET
DELAY: LCALL DELE
RET
ORG 0900H
TS: PUSH PSW
PUSH A
PUSH B
DJNZ R4,TSO
MOV R4,#14H
MOV 63H,62H
MOV 62H,#00H
TSO: MOV TH0,#03CH
MOV TL0,#0B0H
POP B
POP A
POP PSW
RETI
ORG 0A00H
SERVE: PUSH PSW
PUSH A
PUSH B
SERVE1: SETB C
INC 62H
INC 45H
XCH A,45H
CJNE A,#14H,CK0
LJMP CHUL0
CK0: JC QUIT
CHUL0: SETB C
INC 44H
CLR A
XCH A,45H
XCH A,44H
CJNE A,#64H,CK1
LJMP CHUL1
CK1: JC QUIT
CHUL1: SETB C
INC 43H
CLR A
XCH A,44H
XCH A,43H
CJNE A,#64H,CK2
LJMP CHUL2
CK2: JC QUIT
CHUL2: SETB C
INC 42H
CLR A
XCH A,43H
XCH A,42H
CJNE A,#64H,CK3
LJMP CHUL3
CK3: JC QUIT
CHUL3: SETB C
INC 41H
CLR A
XCH A,42H
XCH A,41H
CJNE A,#64H,CK4
LJMP CHUL4
CK4: JC QUIT
CHUL4: SETB C
INC 40H
CLR A
XCH A,41H
QUIT: POP B
POP A
POP PSW
RETI
ORG 1000H
TAB: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -