📄 czc.asm
字号:
WAIT19: JNB S3, WAIT19
MOV A, HOUR
ADD A, #1
DA A
MOV HOUR,A
CJNE A, #24H, KEY41
MOV HOUR, #0
KEY41: JB S4, KEY42
LCALL T10MSD
JB S4, KEY42
WAIT20: JNB S4, WAIT20
MOV A, HOUR
ADD A, #99H
DA A
MOV HOUR,A
CJNE A, #99H, KEY42
MOV HOUR, #23H
KEY42: JB S1, KEY43
ACALL T10MSD
JB S1, KEY43
WAIT21: JNB S1, WAIT21
INC S11
MOV A, S11
CJNE A, #1,NEXT61
LJMP HOU_T
NEXT61: CJNE A, #2,NEXT62
LJMP MIN_T
NEXT62: CJNE A, #3, KEY43
MOV S11, #0
LJMP KEY_SJ
KEY43: JB S2, KEY44
LCALL T10MSD
JB S2, KEY44
WAIT32: JNB S2, WAIT32
LJMP KEY_MAIN
KEY44: AJMP HOU_T
;--------------------------------------------
MIN_T: SETB F0 ;调用定时延时标志位
LCALL T100MSD
LCALL T100MSD
MOV LEDML, #0AH
MOV LEDMH, #0AH
LCALL HMS_DIS1;直接调用显示,不经过拆分程序
LCALL T100MSD
LCALL T100MSD
MOV SEC, #0
LCALL HMS_DIS
JB S3, KEY51
LCALL T10MSD
JB S3, KEY41
WAIT22:JNB S3, WAIT22
MOV A, MIN
ADD A, #1
DA A
MOV MIN, A
CJNE A, #60H, KEY51
MOV MIN, #0
KEY51: JB S4, KEY52
LCALL T10MSD
JB S4, KEY52
WAIT23: JNB S4, WAIT23
MOV A, MIN
ADD A, #99H
DA A
MOV MIN, A
CJNE A, #99H, KEY52
MOV MIN, #59H
KEY52: JB S1, KEY53
ACALL T10MSD
JB S1, KEY53
WAIT24: JNB S1, WAIT24
INC S11
MOV A, S11
CJNE A, #1,NEXT71
LCALL HOU_T
NEXT71: CJNE A, #2,NEXT72
LCALL MIN_T
NEXT72: CJNE A, #3,KEY53
SETB TR0
MOV S11, #0
LJMP KEY_SJ
KEY53: JB S2, KEY54
LCALL T10MSD
JB S2, KEY54
WAIT33: JNB S2, WAIT33
LJMP KEY_MAIN
KEY54: AJMP MIN_T
;;;;;;;;;;;;;;;;时钟中断
TOTIME: PUSH PSW
PUSH ACC
MOV TH0, #3CH
MOV TL0, #0B0H
INC MS100
MOV A, MS100
CJNE A, #10,RETURN
MOV MS100,#0
MOV A, SEC
ADD A, #1
DA A
MOV SEC,A
CJNE A,#60H,RETURN
MOV SEC,#0
MOV A, #1H
ADD A, MIN
DA A
MOV MIN,A
CJNE A,#60H, RETURN
MOV MIN,#0
MOV A, #1H
ADD A, HOUR
DA A
MOV HOUR,A
CJNE A, #24H,RETURN
MOV HOUR,#0
RETURN: POP ACC
POP PSW
RETI
;;;;;;;;;;;;;;;;外部霍儿中断
TO: PUSH PSW
PUSH ACC
MOV A, @R0
MOV B, #10
DIV AB
MOV 20H,A ;算出当前价格转100次的钱数,并给20H单元
MOV A,#1
ADD A,M100
MOV M100,A
MOV A, M100
CJNE A, #100,RETURN1
MOV M100,#0
INC 21H
MOV A,21H
CJNE A, #0AH, RETURN1 ;已经到了1公里
MOV 21H,#0
MOV A, #1
ADD A, DISTANCE
DA A
MOV DISTANCE,A
ACALL DP_DIS
MOV A, PRICE
ADD A, COUNTL
DA A
MOV COUNTL,A
CJNE A, #10H,RETURN1
MOV COUNTL,#0
MOV A, #1
ADD A, COUNTH
DA A
MOV COUNTH,A
CJNE A, #99H, RETURN1
MOV COUNTH,#0
ACALL CP_DIS
RETURN1:POP ACC
POP PSW
RETI
TOSTART:PUSH PSW
PUSH ACC
MOV TH1, #3CH
MOV TL1, #0B0H
DJNZ 22H, RETURN2 ;1S未到返回
MOV 22H, #0AH
MOV A, #1
ADD A, 23H; 23H,存放秒,24H存放分
DA A
MOV 23H, A
CJNE A, #60H, RETURN2
MOV 23H, #0
MOV A, #1
ADD A, 24H
DA A
MOV 24H,A
CJNE A, #10H, RETURN2
MOV 24H, #0
MOV A, START_PRICE
ADD A, COUNTL
DA A
MOV COUNTL,A
CJNE A, #10H, RETURN2
MOV COUNTL, #0
MOV A, #1
ADD A, COUNTH
DA A
MOV COUNTH,A
CJNE A, #99H,RETURN2
MOV COUNTH,#0
RETURN2:POP ACC
POP PSW
RETI
;***** 显示子程序********
;;;;;;;;功能:分四屏幕显示数据,时分秒
;;;;;;;(HMS_DIS)总额+单价(CP_DIS)路程+单价
;;;;;;;(DP_DIS)单价调整(PA_DIS)
;;;;;;;使用资源:使用第三组寄存器R7,R6,R1,R0
;;;;;;;时钟显示(包括时分秒调整)
HMS_DIS:PUSH ACC ;(hour minutes second display)
PUSH PSW
SETB RS1
MOV R0,#SEC ;时分秒的拆分(三个字节)
MOV R1,#LEDSL
MOV R6,#03H
LOOP1: MOV A, @R0
MOV B, A
ANL A, #0FH
MOV @R1,A
DEC R1
MOV A, B
SWAP A
ANL A, #0FH
MOV @R1,A
DEC R1
DEC R0
DJNZ R6,LOOP1
POP PSW
POP ACC
HMS_DIS1: PUSH ACC
PUSH PSW
MOV R7,#06H
MOV R0,#LEDSL
LOOP: MOV A, @R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
BK: JBC TI,NEXT
SJMP BK
NEXT: DEC R0
DJNZ R7,LOOP
CLR RS1
POP PSW
POP ACC
RET
;;;;;;;;;;;;;;;;总金额和单价显示
CP_DIS: PUSH ACC ;(count price display)
PUSH PSW
SETB RS1
MOV R0,#COUNTH ;
MOV R1,#LEDCOUNT2
MOV A, @R0
MOV B, A
ANL A, #0FH
MOV @R1,A
DEC R1
MOV A, B
SWAP A
ANL A, #0FH
MOV @R1,A
MOV LEDCOUNT1,COUNTL
MOV A,LEDCOUNT1 ;送总金额低位
MOV DPTR,#TAB
MOVC A, @A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,LEDCOUNT2 ;送总金额中位
MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL ACC.4
MOV SBUF,A
JNB TI, $
CLR TI
MOV A,LEDCOUNT3 ;送总金额高位
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
CLR RS1
MOV SBUF,#0FEH ;送短线(短线的字型码是0FEH)
JNB TI, $
CLR TI
MOV R0,#PRICE;(@@@) ;单价拆分(两个字节)
MOV R1,#LEDDANJIAL
MOV R6,#03H
MOV A, @R0
MOV B, A
ANL A, #0FH
MOV @R1,A
DEC R1
MOV A, B
SWAP A
ANL A, #0FH
MOV @R1,A
DEC R1
MOV A,LEDDANJIAL ;送单价低位
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI, $
CLR TI
MOV A, LEDDANJIAH ;送单价高位
MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL ACC.4
MOV SBUF,A
JNB TI,$
CLR TI
POP PSW
POP ACC
RET
;;;;;;;;;;;;;;;;路程和单价显示
DP_DIS: PUSH ACC ;(distance price display)
PUSH PSW
SETB RS1
MOV R0,#PRICE ;单价的拆分(一个字节)
MOV R1,#LEDDANJIAL
MOV A, @R0
MOV B, A
ANL A, #0FH
MOV @R1,A
DEC R1
MOV A, B
SWAP A
ANL A, #0FH
MOV @R1,A
DEC R1
MOV A,LEDDANJIAL ;送单价低位
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI, $
CLR TI
MOV A,LEDDANJIAH ;送单价高位
MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL ACC.4
MOV SBUF,A
JNB TI,$
CLR TI
MOV SBUF,#0FEH ;送短线
JNB TI, $
CLR TI
MOV SBUF,#0FEH ;送短线
JNB TI,$
CLR TI
MOV R0,#DISTANCE;路程的拆分(一个字节)
MOV R1,#LEDDISTANCEL
MOV A, @R0
MOV B, A
ANL A, #0FH
MOV @R1,A
DEC R1
MOV A, B
SWAP A
ANL A, #0FH
MOV @R1,A
DEC R1
MOV A,LEDDISTANCEL ;送路程低位
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI, $
CLR TI
MOV A,LEDDISTANCEH ;送路程高位
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
CLR RS1
POP PSW
POP ACC
RET
;;;;;;;;;;;;;;;;;;白天晚上中途等待单价调整
PA_DIS: PUSH ACC ;(Price adjust display)
PUSH PSW
SETB RS1
MOV R0,#DAY_PRICE ;价格调整拆分(三个字节)
MOV R1,#LEDDAY_PL
MOV R6,#03H
LOOP2: MOV A, @R0
MOV B, A
ANL A, #0FH
MOV @R1,A
DEC R1
MOV A, B
SWAP A
ANL A, #0FH
MOV @R1,A
DEC R1
DEC R0
DJNZ R6,LOOP2
POP PSW
POP ACC
PA_DIS1:PUSH ACC
PUSH PSW
MOV A,LEDDAY_PL ;白天单价
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI, $
CLR TI
MOV A, LEDDAY_PH
MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL ACC.4
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,LEDNIG_PL ;晚上单价
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI, $
CLR TI
MOV A,LEDNIG_PH
MOV DPTR,#TAB
MOVC A, @A+DPTR
CPL ACC.4
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,LEDW_PL ;中途等待单价
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI, $
CLR TI
MOV A,LEDW_PH
MOV DPTR,#TAB
MOVC A,@A+DPTR
CPL ACC.4
MOV SBUF,A
JNB TI,$
CLR TI
CLR RS1
POP PSW
POP ACC
RET
TAB: DB 11H,0D7H,32H,92H,0D4H,98H,18H,0D1H,10H,90H,0FFH
;;;;;;;10毫秒延时程序;;;;;;;;;;;;;;;;;;;
T10MSD: SETB RS0
MOV R4,#12
TM: MOV R3,#128
TM6: DJNZ R3,TM6
DJNZ R4,TM
CLR RS0
RET
T100MSD: MOV R3, #200
D11: MOV R4, #125
D12: DJNZ R4, D12
DJNZ R3, D11
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -