📄 pl80.asm
字号:
nop
clr RST1
mov cshort1,#00H
mov cleft1,#00H
mov right1,#00H
mov right2,#00H
mov right3,#00H
mov right4,#00H
mov right5,#00H
mov right6,#00H
mov Counter_Trust_S1,#00H
clr flag_Trust_S1
ret
;========== Rutin ===========
Copyright1:
;Capture Right Pulses in Tempr1...6
;Uses:Acc,R1,flagIsta
;Inputs:Right1...6
;Output:Tempr1...6
jb ie.0,NotIsta0
clr flagIsta
jmp edame0
NotIsta0:
setb flagIsta
clr ie.0
clr ie.2
edame0:
mov tempr1,right1
mov tempr2,right2
mov tempr3,right3
mov tempr4,right4
mov tempr5,right5
mov tempr6,right6
jnb flagIsta,Exit110
setb ie.0
setb ie.2
Exit110:
ret
;========== Rutin ===========
PLSR13:
;Interrupt Rutin for Pulser 1
push acc
push psw
setb RST1
nop
clr RST1
Setb A1
setb B1
mov BA1,#00H
jnb A1,case1
anl BA1,#10H
jmp case2
case1:orl BA1,#01H
case2:jnb B1,case3
anl BA1,#01H
jmp case4
case3:orl BA1,#10H
case4:;continue...
mov a,lastpls1
cjne a,#00H,case5
;So,lastpls1=#00H
mov a,BA1
cjne a,#00H,cse41
Inc cshort1
Ljmp endrt
cse41:cjne a,#01H,cse42
mov lastpls1,#01H
ljmp Rightpls
cse42:cjne a,#10H,cse43
mov lastpls1,#10H
Inc cleft1
Ljmp endrt
cse43:Ljmp endrt
case5:cjne a,#01H,case6
;So,lastpls1=#01H
mov a,BA1
cjne a,#00H,cse51
mov lastpls1,#00H
Ljmp Rightpls
cse51:cjne a,#01H,cse52
inc cshort1
Ljmp endrt
cse52:cjne a,#10H,cse53
mov lastpls1,#10H
Ljmp endrt
cse53:Ljmp endrt
case6:cjne a,#10H,case7
;So,lastpls1=#10H
mov a,BA1
cjne a,#00H,cse61
mov lastpls1,#00H
inc cleft1
Ljmp endrt
cse61:cjne a,#01H,cse62
mov lastpls1,#01H
Ljmp endrt
cse62:cjne a,#10H,cse63
inc cshort1
Ljmp endrt
cse63:Ljmp endrt
case7:Ljmp endrt
rightpls:
JNB flag_HF_ON_S1,NO_Stage10
mov HF10sec_S1,#200 ;Not Turning_off HF_S1
NO_Stage10:
mov a,LF3min_H_S1
JNZ Stage8_11
mov a,LF3min_L_S1
JNZ Stage8_11
Jmp No_Stage8_11
Stage8_11:
mov LF3min_H_S1,#15
mov LF3min_L_S1,#200
No_Stage8_11:
;Decrement of Left Pulses , Bcos of Right Pulses...
Mov a,Cleft1
JZ No_Left_S1
Dec Cleft1
Jmp endrt
;Continue...
No_Left_S1:
;Trust Pulses...
JNB flag_Trust_S1,After_Trust_S1
Inc Counter_Trust_S1
After_Trust_S1:
;Right Pulses...
inc right1
mov a,right1
cjne a,#10d,endrt
mov right1,#00h
inc right2
mov a,right2
cjne a,#10d,endrt
mov right2,#00h
inc right3
mov a,right3
cjne a,#10d,endrt
mov right3,#00h
inc right4
mov a,right4
cjne a,#10d,endrt
mov right4,#00h
inc right5
mov a,right5
cjne a,#10d,endrt
mov right5,#00h
inc right6
mov a,right6
cjne a,#10d,endrt
mov right6,#00h
endrt:
pop psw
pop acc
reti
;========== Rutin ===========
plsinit1:
;Initialize of lastpls1 Register Before Start of Fueling
setb A1
setb B1
mov lastpls1,#00H
jnb A1,dase1
anl lastpls1,#10H
jmp dase2
dase1:orl lastpls1,#01H
dase2:jnb B1,dase3
anl lastpls1,#01H
jmp dase4
dase3:orl lastpls1,#10H
dase4:
;if lastpls1 (=BA1) <> #01H , Then lastpls1=#00H
mov a,lastpls1
cjne a,#01H,dase5
mov lastpls1,#01H
ret
dase5:
mov lastpls1,#00H
ret
;========== Rutin ===========
LED1on:
clr LED1
ret
;========== Rutin ===========
LED3on:
clr LED3
ret
;========== Rutin ===========
LED1off:
setb LED1
ret
;========== Rutin ===========
LED3off:
setb LED3
ret
;========== Rutin ===========
clockL1:
clr Latch1
nop
setb Latch1
nop
clr Latch1
ret
;========== Rutin ===========
clockL3:
clr Latch3
nop
setb Latch3
nop
clr Latch3
ret
;========== Rutin ===========
delay20:
;20 ms delay
;Uses: R6 , R7
;Formula:0.000013*R6*R7
mov r6,#8
dd2:
mov r7,#200
dd3:
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
djnz r7,dd3
djnz r6,dd2
ret
;========== Rutin ===========
delay50:
;50 ms delay
;Uses: R6 , R7
;Formula:0.000013*R6*R7
mov r6,#20
dd0:
mov r7,#200
dd1:
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
djnz r7,dd1
djnz r6,dd0
ret
;========== Rutin ===========
delay1000:
;1000ms = 1Sec delay
;Uses: R6 , R7
;Formula:0.0000162*R6*R7
mov r6,#247
dd4:
mov r7,#250
dd5:
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
djnz r7,dd5
djnz r6,dd4
ret
;========== Rutin ===========
IO:
;Identify IO .
;Input:flagGD,flagLG,flagNOZ1.
;Output:MapB1(0,0,0,PC1,Noz1,LG,GD,NOB)-ReliableIO(0,0,0,0/1,0/1,0/1,0/1,0/1).
; Means 0:Not Reliable - 1:reliable .
;Uses:Acc,R1,Delay20(Rutin).
;reading Buffer...
clr Buffer1
nop
mov p0,#0FFH
nop
mov a,p0
mov mapB1,a
lcall delay20
mov p0,#0FFH
nop
mov a,p0
setb Buffer1
;Calculating...
xrl a,mapB1
cpl a
;ACC is Reliability of IO-Reading
;Bit=1:means Result is reliable(2 results of reading are the same)
;Bit=0:means Result isn't reliable(2 result of reading arenot the same)
;MapB1 is result of reading.
IO1:
;Definition of PC1
jnb acc.4,IO2
cpl mapB1.4
IO2:
;Definition of NOB
jnb acc.0,IO4
cpl mapB1.0
IO4:
;Definition of LG
jnb acc.2,IO5
jnb flagLG,IO5
cpl mapB1.2
IO5:
;Definition of GD
jnb acc.1,IO6
jnb flagGD,IO6
cpl mapB1.1
IO6:
;Definition of Noz1
jnb acc.3,IO7
jnb flagNOZ1,IO7
cpl mapB1.3
IO7:
clr mapB1.5
clr mapB1.6
clr mapB1.7
;ReliableIO Register...
clr acc.5
clr acc.6
clr acc.7
mov r1,#ReliableIO
mov @r1,a
ret
;========== Rutin ===========
Display:
;Displays Input Data On 3LCD .
;Input Data: EFh....F7h (9 bytes) >> as following:
; EFh: (0,0,0/1,0/1,0/1,0/1,0,0) - Decimal Points Input .
; DP4 DP3 DP2 DP1
; F0h...F7h: Memory for Display .
; *Map of memory Display :F7h: P O
; F6h: N M
; F5h: L K
; F4h: J I
; F3h: H G
; F2h: F E
; F1h: D C
; F0h: B A
; *Map of LCD: ABCDEF (Total Price)
; GHIJKL (Liter)
; MNOP (Unit Price)
;Used: Acc,R1,R2,R3,R4,R5,DPTR,Portdisp(1 port).
;Output: -
;comment: Input Data Keep Safe after running this module.
clr psw.3
clr psw.4
mov dph,#0FH
mov dpl,#0FFH
mov r4,#0EFH
mov r5,#8
ddd0:
mov r3,#3
ddd1: inc dptr
mov a,#00H
movc a,@A+dptr
mov r1,#Setpoint
orl a,@r1
mov Portdisp,a
lcall clockL1
djnz r3,ddd1
mov r3,#3
inc r4
ddd2: inc dptr
mov a,#00H
movc a,@A+dptr
mov r2,a
mov 01H,04H
mov a,@r1
anl a,#0Fh
orl a,r2
mov Portdisp,a
lcall clockL1
djnz r3,ddd2
mov r3,#3
ddd3: inc dptr
mov a,#00H
movc a,@A+dptr
mov r1,#Setpoint
orl a,@r1
mov Portdisp,a
lcall clockL1
djnz r3,ddd3
mov r3,#3
ddd4: inc dptr
mov a,#00H
movc a,@A+dptr
mov r2,a
mov 01H,04H
mov a,@r1
swap a
anl a,#0Fh
orl a,r2
mov Portdisp,a
lcall clockL1
djnz r3,ddd4
djnz r5,ppp1
jmp ppp2
ppp1: ljmp ddd0
ppp2: ret
;========== Rutin ===========
Flash_2_Memory:
;Loads Flash-Memory_Values To Micro_Controller Memory.
;Loading Parameters in Micro-controller Memory...
;Par1...9
mov R0,#0C0H
mov R1,#01H
PL_Memory:
mov EEPROM_ADDRESS_H,#00H
mov EEPROM_ADDRESS_L,R1
Push 0 ;R0
Lcall Read_EEPROM
Pop 0 ;R0
mov a,EEPROM_DATA
mov @R0,a
INC R0
INC R1
Cjne R0,#0C9H,PL_Memory
;Loading Parameters in Micro-controller Memory...
;Unit Price
mov R0,#0E3H ;Memory UC Address
mov R1,#23H ;Flash Address
PL_Memory_2:
mov EEPROM_ADDRESS_H,#00H
mov EEPROM_ADDRESS_L,R1
Push 0 ;R0
Lcall Read_EEPROM
Pop 0 ;R0
mov a,EEPROM_DATA
mov @R0,a
INC R0
INC R1
Cjne R0,#0E5H,PL_Memory_2
;Loading Parameters in Micro-controller Memory...
;Tot Elec S1
;Optional
Ret
;========== Rutin ===========
LastLiter_2_Memory:
mov EEPROM_ADDRESS_H,#00H
mov EEPROM_ADDRESS_L,#00H
Lcall Read_EEPROM
mov a,EEPROM_DATA
CJNE a,#01H,Bad_Saving
;Good Saving...
mov EEPROM_ADDRESS_H,#00H
mov EEPROM_ADDRESS_L,#00H
mov EEPROM_DATA,#00H
Lcall Write_EEPROM
Jmp Load_Lastliter
Bad_Saving:
;Saving Zero on DecTOT & LastLiter.
mov R1,#31H
Loop_Zero:
mov EEPROM_ADDRESS_H,#00H
mov EEPROM_ADDRESS_L,R1
mov EEPROM_DATA,#00H
Push 01 ;R1
Lcall Write_EEPROM
Pop 01 ;R1
Inc R1
CJNE R1,#34H,Loop_Zero
;Optional
;Jmp Load Dectot & LastLiter...
Load_Lastliter:
;Loading LastLiter & Dectot in Micro-controller Memory...
;last Liter
mov R0,#34H ;Memory UC Address
mov R1,#31H ;Flash Address
PL_Memory_44:
mov EEPROM_ADDRESS_H,#00H
mov EEPROM_ADDRESS_L,R1
Push 0 ;R0
Lcall Read_EEPROM
Pop 0 ;R0
mov a,EEPROM_DATA
mov B,A
Anl a,#0FH
mov @R0,a
INC R0
mov A,B
swap a
Anl a,#0FH
mov @R0,a
INC R0
INC R1
Cjne R0,#3AH,PL_Memory_44
;Dec TOT 1,2
;Optional
Ret
;========== Rutin ===========
Flag_Setting:
;initialize of Flags
;1)Setpoint setting...
mov r1,#Par_04
mov a,@r1
Par04_0:
cjne a,#1,par04_1
mov r1,#Setpoint
mov a,#00000100B
mov @r1,a
jmp Par04_exit
Par04_1:
cjne a,#2,par04_2
mov r1,#Setpoint
mov a,#00010100B
mov @r1,a
jmp Par04_exit
Par04_2:
cjne a,#3,par04_exit
mov r1,#Setpoint
mov a,#00001100B
mov @r1,a
Par04_exit:
;Continue...
;2)Nozzle MicroSwitch setting...
mov r1,#Par_05
mov a,@r1
Cjne a,#01H,Par05_2
Clr flagNOZ1
Jmp par05_Exit
Par05_2:
setb flagNOZ1
Par05_Exit:
;Continue...
;3)LG(levelgage) Contact setting...
mov r1,#Par_06
mov a,@r1
Cjne a,#01H,Par06_2
Clr flagLG
Jmp par06_Exit
Par06_2:
Setb flagLG
Par06_Exit:
;Continue...
;4)GD(GasDetect) Contact setting...
mov r1,#Par_07
mov a,@r1
Cjne a,#01H,Par07_2
Clr flagGD
Jmp par07_Exit
Par07_2:
Setb flagGD
Par07_Exit:
;Continue...
;5)serial port and baudrate Setting
mov r1,#Par_09
mov a,@r1
Cjne a,#01H,Par11_2
MOV RCAP2H,#(HIGH (BAUDE_RATE_300))
MOV RCAP2L,#(LOW (BAUDE_RATE_300))
Jmp par11_Exit
Par11_2:
Cjne a,#02H,Par11_3
MOV RCAP2H,#(HIGH (BAUDE_RATE_600))
MOV RCAP2L,#(LOW (BAUDE_RATE_600) )
Jmp par11_Exit
Par11_3:
Cjne a,#03H,Par11_4
MOV RCAP2H,#(HIGH (BAUDE_RATE_1200))
MOV RCAP2L,#(LOW (BAUDE_RATE_1200))
Jmp par11_Exit
Par11_4:
Cjne a,#04H,Par11_5
MOV RCAP2H,#(HIGH (BAUDE_RATE_2400))
MOV RCAP2L,#(LOW (BAUDE_RATE_2400))
Jmp par11_Exit
Par11_5:
Cjne a,#05H,Par11_6
MOV RCAP2H,#(HIGH (BAUDE_RATE_4800))
MOV RCAP2L,#(LOW (BAUDE_RATE_4800))
Jmp par11_Exit
Par11_6:
Cjne a,#06H,Par11_7
MOV RCAP2H,#(HIGH (BAUDE_RATE_9600))
MOV RCAP2L,#(LOW (BAUDE_RATE_9600))
Jmp par11_Exit
Par11_7:
Cjne a,#07H,Par11_8
MOV RCAP2H,#(HIGH (BAUDE_RATE_19200))
MOV RCAP2L,#(LOW (BAUDE_RATE_19200))
Jmp par11_Exit
Par11_8:
Cjne a,#08H,Par11_Exit
MOV RCAP2H,#(HIGH (BAUDE_RATE_57600))
MOV RCAP2L,#(LOW (BAUDE_RATE_57600))
;Jmp par11_Exit
Par11_Exit:
MOV T2CON,#30H
MOV SCON,#50H ;8 Bit-UART / Can Recieve.
SETB TR2
;Continue...
;6)General & Operational Flags...
clr flagreset
clr flag_Blink_UP
setb flag_preset_Enable
clr flag_Preset_Done_S1
clr flag_Full_88_S1
clr flag_Full_FF_S1
clr flag_Nashti_Blink_S1
clr flag_Nashti_Happend_S1
clr flag_Noz1_status
clr flag_HF_ON_S1
clr flag_Preset_Ending_S1
clr flag_Error_Blink_S1
Setb flag_Noz1_Enable
clr flag_1st_Pulses_S1
clr Busyersal
clr ersalL
Clr flag_Trust_S1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -