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

📄 pl80.asm

📁 上载的源程序是一款加油机源程序,它已在产品上使用并已经通过了测试.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	clr flagNoz1Key
	clr flag_Timer0_Lock

	;7)Default Values...
	mov Time88_s1,#00H
	mov TimeFF_s1,#00H
	mov Time_Nashti_Blink_s1,#00H
	mov Time_Nashti_Taqqeh_S1,#00H
	mov Next_HF_ON_S1,#00H
	mov Next_HF_ON2_S1,#00H
	mov Time_Noz_Lock_S1,#00H
	mov HF10sec_S1,#00H
	mov Time_error_Blink_S1,#00H
	mov LF3min_L_S1,#00H
	mov LF3min_H_S1,#00H
	mov Counter_Trust_S1,#00H
	mov stage,#0

	Ret

;========== Rutin ===========
Clr_zero:
	;Clear ZeroS Before Numbers-S1
	;Uses:R0,R1,Acc.

Check_Total:
	;place:0-------
	mov r1,#Datas1_0
	mov a,@r1
	swap a
	mov R0,a

	anl a,#0F0H
	JNZ Check_Liter
	Orl 00H,#0F0H

	mov a,R0
	anl a,#0FH
	JNZ Edit_figure1
	Orl 00H,#0FH

Edit_figure0:
	mov a,R0
	swap a
	mov @r1,a

	;place:1-------
	mov r1,#Datas1_1
	mov a,@r1
	swap a
	mov R0,a

	anl a,#0F0H
	JNZ Check_Liter
	Orl 00H,#0F0H

Edit_figure1:
	mov a,R0
	swap a
	mov @r1,a


Check_Liter:
	;place:3-------
	mov r1,#Datas1_3
	mov a,@r1
	swap a
	mov R0,a

	anl a,#0F0H
	JNZ Check_UP
	Orl 00H,#0F0H

	mov a,R0
	anl a,#0FH
	JNZ Edit_figure4
	Orl 00H,#0FH

Edit_figure3:
	mov a,R0
	swap a
	mov @r1,a

	;place:4-------
	mov r1,#Datas1_4
	mov a,@r1
	swap a
	mov R0,a

	anl a,#0F0H
	JNZ Check_UP
	Orl 00H,#0F0H

Edit_figure4:
	mov a,R0
	swap a
	mov @r1,a


Check_UP:
	;place:6-------
	mov r1,#Datas1_6
	mov a,@r1
	swap a
	mov R0,a

	anl a,#0F0H
	JNZ Check_Accordingto
	Orl 00H,#0F0H

Edit_figure6:
	mov a,R0
	swap a
	mov @r1,a


Check_Accordingto:
	mov r1,#Par_04
	mov a,@r1
	cjne a,#03H,Check_Point01
	Ret


Check_Point01:
	;place:1-------
	;Check Last Stage...
	mov r1,#Datas1_1
	mov a,@r1
	swap a
	anl a,#0F0H
	CJNE a,#0F0H,Check_UP_pass2

	mov r1,#Datas1_1
	mov a,@r1
	swap a
	mov R0,a

	Anl a,#0FH
	JNZ Check_UP_pass2
	Orl 00H,#0FH

	mov a,R0
	swap a
	mov @r1,a

Check_UP_pass2:
	;place:6-------
	;Check Last Stage...
	mov r1,#Datas1_6
	mov a,@r1
	swap a
	anl a,#0F0H
	CJNE a,#0F0H,Check_accordingto_2

	mov r1,#Datas1_6
	mov a,@r1
	swap a
	mov R0,a

	anl a,#0FH
	JNZ Check_accordingto_2
	Orl 00H,#0FH

	mov a,R0
	swap a
	mov @r1,a


Check_accordingto_2:
	mov r1,#Par_04
	mov a,@r1
	cjne a,#02H,Check_Point0
	Ret


Check_point0:
	;place:2-------
	;Check Last Stage...
	mov r1,#Datas1_1
	mov a,@r1
	swap a
	anl a,#0FH
	CJNE a,#0FH,Check_UP_pass3

	mov r1,#Datas1_2
	mov a,@r1
	swap a
	mov R0,a

	anl a,#0F0H
	JNZ Check_UP_pass3
	Orl 00H,#0F0H

	mov a,R0
	swap a
	mov @r1,a

Check_UP_pass3:
	;place:7-------
	;Check Last Stage...
	mov r1,#Datas1_6
	mov a,@r1
	swap a
	anl a,#0FH
	CJNE a,#0FH,Finish

	mov r1,#Datas1_7
	mov a,@r1
	swap a
	mov R0,a

	anl a,#0F0H
	JNZ Finish
	Orl 00H,#0F0H

	mov a,R0
	swap a
	mov @r1,a

Finish:
	Ret

;========== Rutin ===========
Tots_1st_init:
	;optional
	Ret

;========== Rutin ===========
Check_Tot:
	;optional
	Ret

;========== Rutin ===========
TotELC_Add:
	;optional
	Ret

;========== Rutin ===========
LF_Border:
	;This Rutin Operates "Preset_Value - Preset_LF_Value"
	;Input:Liter_HML , Par08.
	;Output:Help_LMH (Border of Turning-off HF & Delivering Just in LF).
	;Uses:A,B,R1,R0,R3,Carry.

	mov R1,#Par_08
	mov a,@R1
	mov R1,#Help_L
	mov @R1,a
	mov R1,#Help_M
	mov @R1,#00H
	mov R1,#Help_H
	mov @R1,#00H

	mov R1,#Liter_L
	mov R0,#Help_L
	Lcall Subbing_Dec_L
	mov R1,#Liter_L
	mov R0,#Help_L
	Lcall Subbing_Dec_H

	mov R1,#Liter_M
	mov R0,#Help_M
	Lcall Subbing_Dec_L
	mov R1,#Liter_M
	mov R0,#Help_M
	Lcall Subbing_Dec_H

	mov R1,#Liter_H
	mov R0,#Help_H
	Lcall Subbing_Dec_L
	mov R1,#Liter_H
	mov R0,#Help_H
	Lcall Subbing_Dec_H

	Mov R1,#Dummy_LF
	mov @R1,#00H
	Ret


Subbing_Dec_L:
	mov A,@R1
	mov B,@R0
	Anl A,#0FH
	Anl B,#0FH
	Clr C
	Subb A,B
	JNB acc.7,Put_answer
	Add a,#10
	Mov R3,A
	;R3 is Answer
	mov A,@R0
	Swap A
	Inc A
	Swap A
	Mov @R0,A
	Mov A,R3
Put_answer:
	;A is Answer
	mov R3,A
	mov A,@R0
	Anl A,#0F0H
	Orl A,R3
	mov @R0,A
	Ret


Subbing_Dec_H:
	mov A,@R1
	mov B,@R0
	Anl A,#0F0H
	Anl B,#0F0H
	Swap A
	Mov R3,A
	Mov A,B
	Swap A
	Mov B,A
	Mov A,R3
	Clr C
	Subb A,B
	JNB acc.7,Put_answer_1
	Add a,#10
	Mov R3,A
	;R3 is Answer
	Inc R0
	Inc @R0
	Dec R0
	Mov A,R3
Put_answer_1:
	;A is Answer
	Swap A
	mov R3,A
	mov A,@R0
	Anl A,#0FH
	Orl A,R3
	mov @R0,A
	Ret

;========== Rutin ===========
Preset_Check_1st:
	;Check Preset-Value in Stage8,9,10 to Turning-off HF.
	Lcall Copyright1
Check1:
	Mov a,Tempr6
	Swap a
	Orl a,Tempr5
	Mov Tempr5,a
	Mov R1,#Help_H
	Mov a,@R1
	CJNE a,Tempr5,Rel1
	Jmp Check2
Rel1:	JC HF_OFF
	Ret

Check2:
	Mov a,Tempr4
	Swap a
	Orl a,Tempr3
	Mov Tempr3,a
	Mov R1,#Help_M
	Mov a,@R1
	CJNE a,Tempr3,Rel2
	Jmp Check3
Rel2:	JC HF_OFF
	Ret

Check3:
	Mov a,Tempr2
	Swap a
	Orl a,Tempr1
	Mov Tempr1,a
	Mov R1,#Help_L
	Mov a,@R1
	CJNE a,Tempr1,Rel3
	Jmp HF_OFF
Rel3:	JC HF_OFF
	Ret

HF_OFF:
	;HF Relay Off.
	;These Are Switch to stage11
	Setb flag_Timer0_lock
	mov  HF10Sec_S1,#00H
	mov  Next_HF_ON_S1,#00H
	mov  Next_HF_ON2_S1,#00H
	clr  flag_HF_ON_S1
	Setb flag_Preset_ending_S1
	clr  flag_1st_Pulses_S1
	Lcall H1G1Off
	Clr flag_Timer0_lock
	Ret

;========== Rutin ===========
Preset_Check_2nd:
	JNB P2.3,Next_S1_1
	ret
Next_S1_1:
	;Check Preset-Value in Stage11 to Turning-Off LF.
	Lcall Copyright1
Check11:
	Mov a,Tempr6
	Swap a
	Orl a,Tempr5
	Mov Tempr5,a
	Mov R1,#Liter_H
	Mov a,@R1
	CJNE a,Tempr5,Rel11
	Jmp Check12
Rel11:JC All_OFF
	Ret

Check12:
	Mov a,Tempr4
	Swap a
	Orl a,Tempr3
	Mov Tempr3,a
	Mov R1,#Liter_M
	Mov a,@R1
	CJNE a,Tempr3,Rel12
	Jmp Check13
Rel12:JC All_OFF
	Ret

Check13:
	Mov a,Tempr2
	Swap a
	Orl a,Tempr1
	Mov Tempr1,a
	Mov R1,#Liter_L
	Mov a,@R1
	CJNE a,Tempr1,Rel13
	Jmp All_OFF
Rel13:JC All_OFF
	Ret

All_OFF:
	;End of Preset Delivering...
	;Relays
	Lcall H1G1OFF
	Lcall L1G1OFF
	Setb	flag_Trust_S1
	Ret

;========== Rutin ===========
Error_Check:
	;Check E-01 / Overflow of Liter
	Lcall CopyRight1
	mov a,Tempr6
	swap a
	orl a,Tempr5
	mov B,a
	mov R1,#Par_02
	mov a,@R1
	Cjne a,B,Next_Check_1
	Jmp Error_1_Occured
Next_Check_1:
	JNC OK_1
Error_1_Occured:
	mov Error_Code_1,#01H
	mov Time_Error_Blink_S1,#20
	Ret

OK_1:
	;Check E-02 / Overflow of Total-Price
	mov R1,#DataS1_0
	mov a,@R1
	swap a
	mov B,a
	Anl a,#0FH
	Cjne a,#0FH,Not_F_1
	Anl B,#0F0H
Not_F_1:
	mov a,B
	Anl a,#0F0H
	Cjne a,#0F0H,Not_F_2
	Anl B,#0FH
Not_F_2:
	;B is Ready for Test
	mov R1,#Par_03
	mov a,@R1
	Cjne a,B,Next_Check_2
	Jmp Error_2_Occured
Next_Check_2:
	JNC OK_2
Error_2_Occured:
	mov Error_Code_1,#02H
	mov Time_Error_Blink_S1,#20
	Ret

OK_2:
	;Check E-05 / Overflow Time of Non-Delivering and Turning-off LF
	mov a,LF3min_H_S1
	JNZ OK_3
	mov a,LF3min_L_S1
	JNZ OK_3
	mov Error_Code_1,#05H
	mov Time_Error_Blink_S1,#20
	Ret

OK_3:
	;Check E-06 / Disconnecting of Totalizers
	;optional

OK_4:
	;Check E-11 / Overflow Short Pulses or Laqqi
	mov a,cshort1
	Cjne a,#40,Next_Check_5
	Jmp Error_11_Occured
Next_Check_5:
	JC OK_5
Error_11_Occured:
	mov Error_Code_1,#11H
	mov Time_Error_Blink_S1,#20
	Ret

OK_5:
	;Check E-13 / Overflow Left Pulses
	mov a,cleft1
	Cjne a,#40,Next_Check_6
	Jmp Error_13_Occured
Next_Check_6:
	JC OK_6
Error_13_Occured:
	mov Error_Code_1,#13H
	mov Time_Error_Blink_S1,#20
	Ret

OK_6:
	;Check E-14,15,21,22 / Critical Because of LG,GD,NOB,PC.
	;MapB1(0,0,0,PC1,NOZ1,LG,GD,NOB).
	;ReliableIO(0,0,0,0/1,0/1,0/1,0/1,0/1).
	lcall IO
	mov R1,#ReliableIO
	mov a,@r1
Check_PC:
	JNB Acc.4,Check_NOB
	JNB MapB1.4,Check_NOB
	mov Error_Code_1,#15H
	mov Time_Error_Blink_S1,#20
	Ret
Check_NOB:
	JNB Acc.0,Check_LG
	JNB MapB1.0,Check_LG
	mov Error_Code_1,#14H
	mov Time_Error_Blink_S1,#20
	Ret
Check_LG:
	JNB Acc.2,Check_GD
	JNB MapB1.2,Check_GD
	mov Error_Code_1,#22H
	mov Time_Error_Blink_S1,#20
	Ret
Check_GD:
	JNB Acc.1,EXIT_Check
	JNB MapB1.1,EXIT_Check
	mov Error_Code_1,#21H
	mov Time_Error_Blink_S1,#20
	;Ret

EXIT_Check:
	Ret

;========== Rutin ===========
L1G1ON:
	clr LF2	;L
	clr M2	;M
	clr VR2	;VR
	ret

;========== Rutin ===========
H1G1ON:
	clr HF2
	ret

;========== Rutin ===========
L1G1OFF:
	Setb LF2	;L
	setb M2	;M
	setb VR2	;VR
	ret

;========== Rutin ===========
H1G1OFF:
	Setb HF2
	ret

;========== Rutin ===========
Relay_refresh:
	;Relays and LEDs Refreshing...
	mov p2,MapP2
	Ret

;========== Rutin ===========
Adjust_Leds:
	;Adjusting LEDs / Side1
	JB  flag_Nashti_Happend_S1,Red_Led
	Mov A,Error_Code_1
	JZ  Green_Led


Red_Led:
	Lcall Led1Off
	JB Led3,LED3_is_Off
LED3_is_ON:
	mov R1,#Led3Led
	mov a,@R1
	dec a
	JNZ Exit_Leds
	Lcall Led3OFF
	mov @R1,#Speed_Blink_Leds
	Ret
LED3_is_Off:
	mov R1,#Led3Led
	mov a,@R1
	Dec a
	JNZ Exit_Leds
	Lcall Led3ON
	mov @R1,#Speed_Blink_Leds
	Ret


Green_Led:
	Lcall Led3Off
	JB Led1,LED1_is_Off
LED1_is_ON:
	mov R1,#Led1Led
	mov a,@R1
	dec a
	JNZ Exit_Leds
	Lcall Led1OFF
	mov @R1,#Speed_Blink_Leds
	Ret
LED1_is_Off:
	mov R1,#Led1Led
	mov a,@R1
	Dec a
	JNZ Exit_Leds
	Lcall Led1ON
	mov @R1,#Speed_Blink_Leds
	Ret
Exit_Leds:
	mov @R1,a
	Ret

;========== Data ===========
;========== Data ===========
;========== Data ===========
;========== Data ===========
;========== Data ===========

org 1000H
	;36 bytes for Total-price LCD
	DB 10000000B,11000000B,10000000B,10000000B,00000000B,10000000B
	DB 10000000B,11000000B,10000000B,10010000B,00010000B,10010000B
	DB 10000000B,11000000B,10000000B,10100000B,00100000B,10100000B
	DB 10000000B,11000000B,10000000B,10110000B,00110000B,10110000B
	DB 10000010B,11000010B,10000010B,10000000B,00000000B,10000000B
	DB 10000010B,11000010B,10000010B,10010000B,00010000B,10010000B

	;36 bytes for Liter LCD
	DB 10000010B,11000010B,10000010B,10100000B,00100000B,10100000B
	DB 10000010B,11000010B,10000010B,10110000B,00110000B,10110000B
	DB 10000001B,11000001B,10000001B,10000000B,00000000B,10000000B
	DB 10000001B,11000001B,10000001B,10010000B,00010000B,10010000B
	DB 10000001B,11000001B,10000001B,10100000B,00100000B,10100000B
	DB 10000001B,11000001B,10000001B,10110000B,00110000B,10110000B

	;24 bytes for Unit-Price LCD
	DB 10000011B,11000011B,10000011B,10000000B,00000000B,10000000B
	DB 10000011B,11000011B,10000011B,10010000B,00010000B,10010000B
	DB 10000011B,11000011B,10000011B,10100000B,00100000B,10100000B
	DB 10000011B,11000011B,10000011B,10110000B,00110000B,10110000B

org 1060H
	;Address in Flash-Mem + Data (Default) When P-L is Running...
	;Good Saving
	DB 00H,00H
	;Parameters 1-9
	DB 01H,01H,02H,99H,03H,99H,04H,01H,05H,01H,06H,02H
	DB 07H,02H,08H,75H,09H,06H
	;Decimal Totalizers
	DB 1FH,00H,20H,00H
	;Unit Price
	DB 23H,00H,24H,00H
	;last Liter
	DB 31H,00H,32H,00H,33H,00H,34H,00H,35H,00H,36H,00H

org 108CH
	;Address in Flash-Mem + Data (Maximum) When CHECK_MAX is Running...
	;Parameters 1-9
	DB 01H,31H,02H,99H,03H,99H,04H,03H,05H,02H,06H,02H
	DB 07H,02H,08H,99H,09H,08H
	;Unit Price
	DB 23H,99H,24H,99H

;========== SUB-RUTINs ===========
;========== SUB-RUTINs ===========
;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -