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

📄 pl80.asm

📁 上载的源程序是一款加油机源程序,它已在产品上使用并已经通过了测试.
💻 ASM
📖 第 1 页 / 共 5 页
字号:
	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 + -