📄 pl80.asm
字号:
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 + -