📄 0520.asm
字号:
;**********摩托车电控喷油系统*****************
;
; 程序设计:游4 1/2001
;---------------------------------------------
;
; 一 初始化程序
;---------------------------------------------
;
OILCTRL EQU P1.0 ;喷油器控制位
KINDLE EQU P1.1 ;点火脉冲位
OILPUMP EQU P1.6 ;油泵开关位
MOTOR EQU P1.7 ;启动马达位
;
OIL_BUF EQU 30H ;油门开度缓冲寄存器
AIR_BUF EQU 31H ;空气量缓冲寄存器
AIR_T EQU 32H ;进气温度缓冲寄存器
MACH_BF EQU 33H ;机器温度缓冲寄存器
VOL_BUF EQU 34H ;电压补偿缓冲寄存器
;
SPEEDH EQU 3BH ;转速计数器高八位RAM
SPEEDL EQU 3CH ;转速计数器低八位RAM
m_i EQU 38H ;数据表下标(i)
M_j EQU 39H ;数据表下标(j)
;
OIL_T EQU 28H ;油泵定时器循环值
COOL_X EQU 2DH ;冷启动加浓次数寄存器
STA_X EQU 2EH ;启动加浓次数寄存器
ON_OFF EQU 2FH ;开关量输入寄存器
BASIC EQU 36H ;基本喷油量寄存器
Tm EQU 37H ;补偿喷油量寄存器
Tv EQU 3DH ;电压补偿喷油量寄存器
TABVOL EQU 3EH ;根据转速查表值
COOL EQU 3FH ;冷启动喷油量寄存器
;
TABEL equ 0480H ;表首地址
;
;
;
;---------------------------------------------
;
org 0000h
RESET: aJMP MAIN ;复位转主程序
; org 0003h
org 000bh ;定时器0中断000BH
AJMP INT_2 ;溢出转
ORG 0013H ;启动中断
AJMP START
;=============================================
ORG 80H
;_____________________________________________
MAIN: MOV SP,#60H ;设栈底
mov TMOD,#00000001b ;设定时器1为模式1,GATE=1
; ACALL COUNT ;调计算子程序
loop: MOV TL0,#78H ;曲轴一周入口,转速计数器清零
MOV TH0,#0ecH ;转速计数器清零
setb ea
setb et0
WAIT1: jb p1.3,wait1
;-------------------------------------------
nop
nop
nop
acall SIGN
loop1: jnb p1.3,loop1 ;P1.3高,开始计数
SETB tr0 ;转速计数器开
clr p1.0 ;开喷嘴
loop2: jb p1.3,loop2
ljmp loop
START: MOV 2EH,#1FH
MOV 36H,#0ECH
MOV 37H,#78H
RETI
int_2: clr tr0 ;喷油定时器溢出
setb p1.0 ;关喷油器
reti
intf0: setb tr0 ;自动重装并启动定时器0
djnz 28h,X_0F ;油泵定时器延时循环
clr tr0 ;关油泵定时器0
clr p1.6 ;关油泵
X_0F: reti
;..............................................
; 计算子程序 .
;..............................................
count: ACALL adc
ACALL AIR_L
ACALL OIL_J
ACALL VOL_M
ACALL AIR_M
MOV A,3BH ;计数器高八位
SWAP A
ANL A,#0FH
MOV 38H,A ;计数器高八位除16后,结果进38H,作下标(i)
MOV A,3CH ;计数器低八位
ANL A,#0F0H
SWAP A
MOV 39H,A ;计数器低八位除16后,结果进39H,作下标(j)
MOV A,3BH ;计数器高八位进ACC
SWAP A ;高低四位互换
ANL A,#0F0H ;屏蔽低四位
ORL 39H,A ;与直接地址39H相或进39H
ACALL READ_T
ACALL MACH_M
RET
;
OIL_J: MOV DPH,#08H
MOV DPL,#00H
MOV A,OIL_BUF
MOVC A,@A+DPTR
MOV 30H,A
RET
;
AIR_L: MOV DPH,#09H
MOV DPL,#00H
MOV A,AIR_BUF
MOVC A,@A+DPTR
MOV 31H,A
RET
;
AIR_M: MOV DPH,#0AH
MOV DPL,#00H
MOV A,AIR_T
MOVC A,@A+DPTR
MOV 32H,A
RET
;
MACH_M: NOP
MOV DPH,#0BH
MOV DPL,#00H
MOV A,MACH_BF
MOVC A,@A+DPTR
DJNZ 35H,M_M
MOV 35H,#0FH
M_M: XCH A,37H
SUBB A,37H
MOV 37H,A
RET
;
VOL_M: MOV DPH,#0CH
MOV DPL,#00H
MOV A,VOL_BUF
MOVC A,@A+DPTR
MOV 34H,A
RET
;
mov 30h,#128
mov 31h,#128
mov 32h,#128
mov 33h,#128
adc: ret
;
;=============================================
READ_T: mov a,38h
jz done
done1: cjne a,#01h,done2
ajmp done
done2: cjne a,#02h,done3
ajmp done
done3: cjne a,#03h,done4
ajmp done
done4: dec a
ajmp done3
done: add a,#04h
mov dph,#00
MOV DPL,39h
MOVc A,@a+DPTR
MOV 36H,A
mov a,38h
add a,#08h
mov dph,#00
MOV DPL,39h
MOVc A,@a+DPTR
MOV 37H,A
RET
SIGN: CPL P1.0
NOP
NOP
NOP
NOP
NOP
NOP
CPL P1.0
RET
;============================================
;
;************ 数模查询模块 ****************
;
;============================================
A_Dc: MOV R1,#30H ;油门开度,进气量,温度....
MOV DPTR,#0feF8H
MOV R7,#05H
LOOPP: MOVX @DPTR,A
MOV R5,#0fH
DLAY1: NOP
NOP
nop
nop
nop
DJNZ R5,DLAY1
MOVX A,@DPTR
MOV @R1,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -