⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 czc.asm

📁 (1) 不同情况具有不同的收费标准。 l 白天 l 晚上 l 途中等待(>10min 开始收费) (2) 能进行手动修改单价 (3) 具有数据的复位功能 (4) IO 口分配的简易要
💻 ASM
📖 第 1 页 / 共 2 页
字号:
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 + -