📄 0801.asm
字号:
RET
IGNIS:
MOV A,20H
ADD A,20H
ADD A,20H
ADD A,20H
CPL A
MOV R1,A
DJNZ R1,$
MOV R1,31H
DJNZ R1,$
IGN: CLR P1.1
MOV R1,#08H
DJNZ R1,$
SETB P1.1
RET
;===============================================
START: ;启动子程序
SETB SLOW ;置低速启动标志
MOV 2EH,#04H ;设启动加浓次数
mov 4Ch,#0eFh ;设启动加浓宽度
mov 4Dh,#78h ;(8MS)
RETI ;中断返回
START0: ;启动子程序
SETB SLOW ;置低速启动标志
MOV 2EH,#04H ;设启动加浓次数
mov 4Ch,#0eFh ;设启动加浓宽度
mov 4Dh,#78h ;(8MS)
RETI ;中断返回
START1:
SETB SLOW
MOV 2EH,03H
MOV 4CH,#0EFH
MOV 4DH,#0FFH
RET
START2:
SETB SLOW
MOV 2EH,02H
MOV 4CH,#0F8H
MOV 4DH,#07FH
RET
pump: ;油泵开关子程序
SETB P1.7 ;关油泵
POP PSW ;
POP ACC ;弹出
RETI ;中断返回
INTF0: ;喷油结束中断子程序
acall vol
SETB P1.6 ;关喷油器
CLR TR0 ;清中断;
MOV TH0,4CH ;调喷油宽度
MOV TL0,4DH ;...
POP PSW
pop acc
RETI ;返回
;
;================节气门开度计算===========================
;
OIL_ON: ;
MOV 24H,31H
JNB 27H,OIL_O ;位测试,为0转
JNB 26H,OIL_O ;保证节气门开度不大于0F
JNB 25H,OIL_O ;查表Y值不出界
JNB 24H,OIL_O ;A/D转换值超0EFH
MOV 24H,#0EFH ;减为EFH(4.65V)
OIL_O:
MOV A,24H ;A/D转换值进A
CLR C ;清进位标志
SUBB A,#23H ;减怠速量
MOV 120,C ;置怠速标志
JnB 120,norm ;无标志转,低于23(最小开度)下滑
MOV 26H,#06H ;有则填表基地址07
MOV 27H,#00H
MOV A,24H
CLR C
SUBB A,#14H ;0.57V
JC OIL_00
MOV A,24H
CLR C
SUBB A,#19H ;0.47V
JC OIL_01
MOV A,24H
CLR C
SUBB A,#1dH
jc OIL_02
GO_OFF: MOV A,20H
CLR C
SUBB A,#1AH ;低于2600rpm
JC GOTO ;转
SETB 127 ;高于2600RPM关喷油嘴
SETB 124
RET
GOTO:
CLR 127
CLR 124
RET
OIL_02: MOV 22H,#2H
AJMP GO_OFF
OIL_01: MOV 22H,#1H
AJMP GO_OFF
OIL_00: MOV 22H,#0H
AJMP GO_OFF
norm:
mov 26h,#07h ;表基地址高八位
MOV 27H,#40H ;表基地址低八位
CLR 127
MOV 21H,A ;减怠速量进21H
MOV B,#0FH ;除数(分点)
DIV AB ;除
mov 23h,a
MOV 22H,A ;商进22H(0,1,2,..,14,15)
cjne a,#00h,down2 ;商不为0 转
mov a,22h ;
clr c ;
subb a,#07h ;是否0 节气门开度?
jc down0 ;是转,0点确认
down1: inc 22h ;不是则开度加1(插入2点)
ret
down2: cjne a,#01h,down4 ;商不为1 转
mov a,21h ;节气门开度进A
clr c ;
subb a,#17h ;是否开度3?
jc down3 ;是转
down4: inc 22h ;不是0,1插入(2,4)点
down3: inc 22h
down0: RET
;==================================================================
MACH_:
DJNZ 33H,MACH_
RET
MOV B,#14h
DIV AB
MOV TM,A
MOV B,#64H
MOV A,36H
CPL A
DIV AB
MOV B,TM
MUL AB
MOV 3DH,A
MOV A,36H
SUBB A,3DH
MOV 3EH,A
RET
vol:
MOV A,30h
VOL_I: INC A
cjne A,#0ffh,vol_I
RET
CMP2_y:
MOV CMP2,#2cH
NOP
NOP
NOP
NOP
NOP
ANL CMP2,#0FEH
RET
;======================================================
; 模数转换子程序
;======================================================
ADRead:
PUSH ACC
MOV ADC_N,#80H
MOV R1,#30H
ADNEXT: mov adcon,adc_n
MOV R0,#5
DJNZ R0,$
setb adcs
ADChk:
jnb adci,adchk
mov a,dac0
MOV @R1,A
INC R1
INC ADC_N
clr adci
CJNE R1,#34H,ADNEXT
POP ACC
ret
SIGN:
CPL P1.1
MOV R1,#0FH
DJNZ R1,$
SETB P1.1
RET
SIGN1:
MOV R1,#0AFH
S1: NOP
NOP
DJNZ R1,S1
RET
;======================================================
; ...... 计算子程序 ......
;======================================================
COUNT:
MOV A,20H ;FX进A
SUBB A,#45H
JC UP6
MOV 20H,#45H
UP6: MOV A,20H
JB 120,UP5
MOV 4EH,A ;FX进SPEEDH
ADD A,4EH ;A*2
MOV 4EH,a ;查表高八位
MOV 4FH,22h ;查表低八位
ACALL READ ;查表
RET
UP5:
MOV B,#2
DIV AB
MOV 4EH,A
MOV A,#08H
MUL AB
ADD A,27H
MOV 27H,A
MOV 4FH,22H
ACALL READ
RET
READ: ;
MOV A,4EH ;转速点
SWAP A ;高低四位互换
ANL A,#0FH ;屏蔽高四位
ADD A,26H ;加表首基地址
MOV 4AH,A
MOV DPH,4AH
MOV A,4EH
SWAP A
ANL A,#0F0H ;屏蔽低四位
ADD A,4FH ;查表低字节
ADD A,4fH ;乘2
JNC GOO
ACALL IC
GOO: ADD A,27H ;加基地址
JNC GO1
ACALL IC
GO1: MOV 4BH,A
MOV DPL,A ;低八位进DPL
CLR A ;
MOVC A,@A+DPTR ;查表
MOV 4CH,A ;查表值进缓冲RAM
MOV A,#01H ;DPTR+1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -