📄 0607.asm
字号:
;**********摩托车电控喷油系统*****************
;
; 程序设计:游4 1/2001
;=============================================
;
; 一 初始化程序
;---------------------------------------------
;
OILCTRL BIT P1.7 ;喷油器控制位
KINDLE EQU P1.2 ;点火脉冲位
OILPUMP BIT P1.6 ;油泵开关位
TXD_ EQU P1.0 ;RS232发 COMP2 1|P00--P01|20 Cin2B
RXD_ EQU P1.1 ;RS232收 2|P17 2|19 Cin2A
MOTOR EQU P1.3 ;启动马达位 3|P16 3|18 A/D0
SPEED BIT P1.4 ;转速测试位 RST 4|P15 4|17 A/D1
REST_ BIT P1.5 ;外部复位位 VSS 5| P05|16 A/D2
OSC_X1 BIT P2.1 ;外部振荡1 X1 6|P21 VDD|15
OSC_X2 BIT P2.0 ;外部振荡2 X2 7|P20 P06|14 A/D3
COMPOUT EQU P0.0 ;比较器输出 INT1 8|P14 P07|13 T1
COMPINA EQU P0.1 ;比较器输入1 INT0 9|P13 P10|12 TXD
COMPINB EQU P0.2 ;比较器输入2 TO 10|P12--P11|11 RXD
AD_0 EQU P0.3 ;模数转换0
AD_1 EQU P0.4 ;模数转换1
AD_2 EQU P0.5 ;模数转换2
AD_3 EQU P0.6 ;模数转换3
JSQ_1 EQU P0.7 ;计数器1
VSS DATA 'P5' ;接地脚
VDD DATA 'P15' ;正电源+5V
PTOAD DATA 0F6H ;模数转换控制寄存器
POM2 DATA 85H ;
POM1 DATA 84H ;
;
OIL_BUF EQU 30H ;油门开度缓冲寄存器
AIR_BUF EQU 34H ;空气量缓冲寄存器
AIR_T EQU 31H ;进气温度缓冲寄存器
MACH_BF EQU 32H ;机器温度缓冲寄存器
VOL_BUF EQU 33H ;电压补偿缓冲寄存器
ADC_N EQU 3AH ;模数转换器编号
SPEEDwH EQU 3BH ;转速计数器高八位RAM
SPEEDwL EQU 3CH ;转速计数器低八位RAM
m_i EQU 38H ;数据表下标(i)
M_j EQU 39H ;数据表下标(j)
;
pump_T EQU 28H ;油泵定时器循环值
COOL_X EQU 2DH ;冷启动加浓次数寄存器
STA_X EQU 2EH ;启动加浓次数寄存器
ON_OFF EQU 2FH ;开关量输入寄存器
BASICH EQU 36H ;基本喷油量寄存器H
BASICL EQU 37H ;基本喷油量寄存器L
Tv EQU 3DH ;电压补偿喷油量寄存器
TM EQU 3EH ;温度补偿喷油量RAM
COOL_ EQU 3FH ;冷启动喷油量寄存器
SPEEDL EQU 40H ;十六位转速低八位
SPEEDH EQU 41H ;十六位转速高八位
;
TABEL equ 0800H ;表首地址
;
;============================================================
;
org 0000h
REST: aJMP MAIN ;复位转主程序
ORG 0003H ;启动中断入口
AJMP START ;转启动子程序
org 000bh ;喷油定时器0中断000BH
AJMP INTF0 ;溢出转
ORG 0053H ;看门狗
PUSH acc
PUSH PSW
AJMP PUMP ;转油泵子程序
ORG 0080H
MAIN: MOV SP,#60H ;设栈底
mov TMOD,#10010001b ;设定时器1为模式1,GATE=1
; ;设定时器0为模式1,GATE=0
mov 2eh,#01h
mov th0,#0ech
mov tl0,#78h
MOV PTOAD,#7eH ;定义模拟口作输入
ANL POM2,#80H ;关P0口数字输入
ORL POM1,#7eH ;关P0口数字输入
mov adc_n,#80h ;开通道号00
MOV IP0H,#02H ;中断级别,定时器0最高
MOV IP0,#02H ;
MOV WDRST,#1EH ;看门狗初始化
MOV WDRST,#0E1H ;看门狗初始化
SETB EWD ;开看门狗中断
SETB ET0 ;开定时器0中断
SETB EX0 ;开0中断
SETB P1.3 ;中断0可输入
CLR IT0 ;设中断0 位低电平触发
setb EA ;开总体中断
MOV WDCON,#00010111B ;开看门狗,设定时2.1s
LOOP:
ACALL ADREAD ;调模数转换子程序
MOV TH1,#00H ;清测速计数器
MOV TL1,#00H ;......
CLR P1.6 ;开开油泵
WAIT: JB P1.4,WAIT ;等负脉冲
MOV WDRST,#1EH ;
MOV WDRST,#0E1H ;
SETB EWD ;
MOV WDCON,#00010111B ;开看门狗定时器
SETB TR1 ;开测速定时器
LOOP1: JNB P1.4,LOOP1 ;等正脉冲
;===============================================
CLR P1.7 ;开喷油器
ACALL VOL
ACALL OIL_ON
ACALL MACH_
setb p1.7
; SETB TR0 ;开喷油定时器
DJNZ 2EH,AFAN ;启动加浓延时
MOV 2EH,#01H ;初值
; ACALL DIV1 ;调除法子程序
; acall count1 ;调计算子程序
ACALL DIV2
ACALL COUNT2
ACALL cmp2_y
AFAN: JB P1.4,AFAN ;等曲轴正脉冲完
CLR TR1 ;计数器1停测速
MOV 3BH,TH1 ;测速值进RAM
MOV 3CH,TL1 ;...
jnb p0.0,down
;acall sign
down: AJMP LOOP ;返回
;===============================================
START: ;启动子程序
MOV 2EH,#1FH ;设启动加浓次数
mov 36h,#0ech ;设启动加浓宽度
mov 37h,#78h ;(10MS)
RETI ;中断返回
pump: ;油泵开关子程序
SETB P1.6 ;关油泵
POP PSW ;
POP ACC ;弹出
RETI ;中断返回
INTF0: ;喷油结束中断子程序
SETB P1.7 ;关喷油器
CLR TR0 ;清中断;
MOV TL0,37H ;调喷油宽度
MOV TH0,36H ;...
RETI ;返回
OIL_ON:
MOV A,30H
CPL A
MOV 2FH,A
MOV A,30H
MOV B,#10H
DIV AB
MOV 34H,A
RET
MACH_:
DJNZ 31H,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,33h
VOL_I: INC A
cjne A,#0h,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.7
MOV R1,31H
DJNZ R1,$
CPL P1.7
RET
SIGN1:
CPL P1.7
MOV R1,31H
S1: NOP
NOP
DJNZ R1,S1
CPL P1.7
RET
;======================================================
; ...... 计算子程序 ......
;======================================================
;
; (R7R6)/(35H36H)=(R7R6)
; (R3R2)=余数部分
;======================================================
;
DIV2:
MOV 50H,#80H
MOV 51H,#0C3H
MOV 52H,#0C9H
MOV 53H,#01H
DVT2:
MOV R6,#00H
MOV R5,#00H
MOV R4,#00H
MOV R3,3BH
MOV R2,3CH
DVT20: MOV R7,#20H
CLR 54H
ACALL RLN
DVL1: CLR C
MOV A,R4
SUBB A,R2
MOV R4,A
MOV A,R5
SUBB A,R3
MOV R5,A
MOV A,R6
SUBB A,#00H
MOV R6,A
JC DVL2
SETB 54H
DVL3: ACALL RLN
DJNZ R7,DVL1
RET
DVL2: MOV A,R4
ADD A,R2
MOV R4,A
MOV A,R5
ADDC A,R3
MOV R5,A
MOV A,R6
ADDC A,#00H
MOV R6,A
CLR 54H
AJMP DVL3
RLN: MOV C,54H
MOV R0,#04H
MOV R1,#50H
RLNO: MOV A,@R1
RLC A
MOV @R1,A
INC R1
DJNZ R0,RLNO
MOV A,R4
RLC A
MOV R4,A
MOV A,R5
RLC A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -