📄 bataint.asm
字号:
;
;*****************摩托车电控喷油系统*******************
;
; 程序设计:游仕俊 1/2001
;
; 电话:023-72233384 13609464958
;======================================================
;
; COMP2 1|P0.0--P0.1|20 Cin2B
; 2|P1.7 2|19 Cin2A
; 3|P1.6 3|18 A/D0
; RST 4|P1.5 4|17 A/D1
; VSS 5| P0.5|16 A/D2
; X1 6|P2.1 VDD|15
; X2 7|P2.0 P0.6|14 A/D3
; INT1 8|P1.4 P0.7|13 T1
; INT0 9|P1.3 P1.0|12 TXD
; TO 10|P1.2--P1.1|11 RXD
;
;------------------------------------------------------
; 一 常量、变量、RAM AND BIT位定义表 ;
;------------------------------------------------------
;
OILCTRL BIT P1.7 ;喷油器控制位
KINDLE BIT P1.1 ;点火脉冲位
OILPUMP BIT P1.6 ;油泵开关位
TXD_ EQU P1.0 ;ERR发送
MOTOR EQU P1.3 ;启动马达位
SPEED BIT P1.4 ;转速测试位
REST_ BIT P1.5 ;外部复位位
OSC_X1 BIT P2.1 ;外部振荡1
OSC_X2 BIT P2.0 ;外部振荡2
COMPOUT EQU P0.0 ;比较器输出
COMPINA EQU P0.1 ;比较器输入1
COMPINB EQU P0.2 ;比较器输入2
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 31H ;节气门开度缓冲寄存器
AIR_T EQU 32H ;进气温度缓冲寄存器
MACH_BF EQU 33H ;机器温度缓冲寄存器
VOL_BUF EQU 30H ;电压补偿缓冲寄存器
AIR_BUF EQU 34H ;空气量缓冲寄存器
FIRST_ EQU 35H ;转数寄存器
BASICH EQU 36H ;基本喷油量寄存器H
BASICL EQU 37H ;基本喷油量寄存器L
m_i EQU 38H ;数据表下标(i)
M_j EQU 39H ;数据表下标(j)
ADC_N EQU 3AH ;模数转换器编号
COUNTH EQU 3BH ;转速计数器高八位RAM
COUNTL EQU 3CH ;转速计数器低八位RAM
Tv EQU 3DH ;电压补偿喷油量寄存器
TM EQU 3EH ;温度补偿喷油量RAM
COOL_ EQU 3FH ;冷启动喷油量寄存器
;
SPEED_S EQU 20H ;速度标定点0-6900 RPM/min
OIL_s EQU 21H ;节气门A/D转换量
Oangle EQU 22H ;节气门开度0,6,...,84,90度
OANGLE_ EQU 23H ;节气门开度减怠速量
OIL_1 EQU 24H ;处理后的节气门A/D转换量
vol_L equ 25H ;小节气门开度缓存
TABEL equ 26H ;表首地址缓存
pump_T EQU 28H ;油泵定时器循环值
COOL_X EQU 2DH ;冷启动加浓次数寄存器
STA_X EQU 2EH ;启动加浓次数寄存器
ON_OFF EQU 2FH ;开关量标志寄存器
OIL BIT 127 ;喷油器开关位
QUICK BIT 126 ;奇偶周标志
WEAK BIT 125 ;加速标志
HIGH_ BIT 124 ;超速标志
SLOW BIT 123 ;低速启动标志
FIRSTB BIT 122 ;200RPM标志
SENSOR BIT 121 ;氧传感器过浓标志
O_min BIT 120 ;节气门开度小标志
;
FX EQU 40H ;插值点X1坐标
FX2 EQU 42H ;插值点X2坐标
FX3 EQU 43H ;插值点X3坐标
FY EQU 44H ;插值点Y坐标
FY1 EQU 45H ;插值点Y1坐标
FY2 EQU 46H ;插值点Y2坐标
FY3 EQU 47H ;插值点Y3坐标
X EQU 4AH
Y EQU 4BH
FZX_H EQU 4CH ;点X插值高八位
FZX_L EQU 4DH ;点X插值低八位
FZ_Yh EQU 4EH ;点Y插值高八位
FZ_YL EQU 4FH ;点Y插值低八位
;
SPEEDL EQU 50H ;十六位转速低八位
SPEEDH EQU 51H ;十六位转速高八位
WDCONS EQU 0A7H
WDRSTS EQU 0A6H
DAC0S EQU 0C5H
EWDS BIT 0AEH
ADCSS BIT 0C3H
ADCIS BIT 0C4H
ADCONS EQU 0C0H
CMP2S EQU 0ADH
;
;
;
;============================================================
;
org 0000h
BEIGN: aJMP MAIN ;复位转主程序
ORG 0003H ;启动中断入口
;AJMP START ;转启动子程序
org 000bh ;喷油定时器0中断000BH
push acc
PUSH PSW
AJMP INTF0 ;溢出转
ORG 0013H
AJMP LOOP2
ORG 001BH
AJMP START
ORG 0053H ;看门狗
PUSH acc
PUSH PSW
AJMP PUMP ;转油泵子程序
ORG 0060H
MAIN: MOV SP,#60H ;设栈底
mov TMOD,#00010001b ;设定时器1为模式1,GATE=1
;设定时器0为模式1,GATE=0
;mov 0A2H,#08H ;内部复位
mov 2eh,#01H
MOV 2FH,#00H
MOV 35H,#00H
MOV 50H,#0b6h
MOV 51H,#03h
mov TH0,#0eFH
mov TL0,#78H
mov th1,#75h
mov tl1,#30h
MOV PTOAD,#7eH ;定义模拟口作输入
ANL POM2,#80H ;关P0口数字输入
ORL POM1,#7eH ;关P0口数字输入
mov adc_n,#80h ;开通道号00
MOV 0B7H,#06H ;中断级别,定时器0最高
MOV 0B8H,#06H ;(IP0H,IP0)
CLR P1.7
MOV WDRSTS,#1EH ;看门狗初始化
MOV WDRSTS,#0E1H ;看门狗初始化
SETB EWDS ;开看门狗中断
SETB ET0 ;开定时器0中断
SETB ET1 ;开计数器1溢出中断
;SETB EX0 ;开0中断
SETB P1.3 ;中断0可输入
;CLR IT0 ;设中断0 位低电平触发
setb EA ;开总体中断
SETB EX1 ;
SETB P1.4 ;
SETB IT1 ;
SETB 126 ;
MOV WDCONS,#00010111B ;开看门狗,设定时2.1s
ACALL ADREAD ;调模数转换子程序
ACALL OIL_ON ;节气门开度计算
ACALL DIV1 ;调除法子程序
ACALL DIV2
ACALL COUNT ;计算
ACALL IGN_S ;计算点火角
;===============================================
LOOP1: AJMP LOOP1 ;等第一负脉冲
LOOP2:
CPL 126
JB 126,A_FAN
SETB TR1 ;开测速定时器
MOV C,127
MOV P1.6,C ;开喷油器
SETB TR0 ;开喷油定时器
ACALL IGNIS ;调点火脉冲子程序
DJNZ 2EH,LOOP3 ;启动加浓延时
MOV 2EH,#01H ;初值
ACALL ADREAD
ACALL OIL_ON
;ACALL DIV1 ;调除法子程序
;ACALL DIV2
;ACALL COUNT
ACALL IGN_S
JNB P1.3,ST
CLR SLOW
RETI
ST: SETB SLOW ;置低速启动标志
MOV A,33H
CPL A
SWAP A
ANL A,#0FH
MOV 2EH,a ;设启动加浓次数
mov 4Ch,#0eCh ;设启动加浓宽度
mov 4Dh,#78h ;(8MS)
LOOP3: RETI ;返回
A_FAN: ;等曲轴第二脉冲来
CLR TR1 ;计数器1停测速
MOV 3BH,TH1 ;测速值进RAM
MOV 3CH,TL1 ;...
ACALL IGNIS ;点火
JNB SLOW,DOWN
ACALL SIGN
DOWN: MOV TH1,#00H ;清测速计数器
MOV TL1,#00H ;......
;ACALL HIGH_S ;超速
;ACALL WEAKEN ;减速
;ACALL SLOW_S ;低速
;ACALL QUICKS ;加速
;ACALL F200 ;200RPM/分
ACALL ADREAD ;调模数转换子程序
ACALL OIL_ON ;节气门开度计算
ACALL DIV1 ;调除法子程序
ACALL DIV2
ACALL COUNT ;计算
ACALL IGN_S ;计算点火角
ACALL WD ;喂狗
RETI
;===========================================================
F200: ;200转检测
INC 35H
MOV A,35H
CJNE A,#200,GO ;200转返回
MOV 35H,#00H
jB p0.0,SS ;置位转移
CLR 121 ;氧传感器
GO: RET
SS:
SETB 121 ;送氧浓标志到标志位
RET
HIGH_S: ;超速
MOV A,51H ;
CJNE A,#1FH,BIG ;8000RPM/min?否转
O_OFF:
SETB 124
SETB 127 ;yes.置超速标志
RET
BIG: JNC O_OFF ;大于8000RPM/min
CLR 124
CLR 127 ;小于8000RPM 清标志
RET
WEAKEN: ;减速
MOV A,OIL_buf ;节气门开度?
CJNE A,#0fH,WK ;6度?否转
WK_L: SETB 125 ;YES.置减速标志
SETB 127 ;开喷油器标志并断油
RET
WK: JNC WK_GO ;大于6度转清标志开喷油器
MOV A,51H ;小于6度看转速
CJNE A,#04H,WK_H ;1000RPM? 否转
WK_H: JNC WK_L ;等于或大于1000转置标志并断油
WK_GO: CLR 125 ;小于1000则清减速标志
CLR 127 ;关喷油器标志并开喷油器
RET
SLOW_S: ;低速<1500RPM/min
mov A,51H ;
CJNE A,#05H,S_S ;不等于1500RPM/min转
S_H: CLR 123 ;等则清标志
RET
S_S: JNC S_H ;大于则转清标志
SETB 123 ;小于则置标志
RET
QUICKS: ;加速
MOV A,OIL_BUF ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -