📄 0615.txt
字号:
;=======================================================
; 程序设计:游仕俊 2000.1
;
; COMP2 1|P00--P01|20 Cin2B
; 2|P17 2|19 Cin2A
; 3|P16 3|18 A/D0
; RST 4|P15 4|17 A/D1
; VSS 5| P05|16 A/D2
; X1 6|P21 VDD|15
; X2 7|P20 P06|14 A/D3
; INT1 8|P14 P07|13 T1
; INT0 9|P13 P10|12 TXD
; TO 10|P12--P11|11 RXD
;
; 一 初始化程序
;-------------------------------------------------------
OILCTRL BIT P1.7 ;喷油器控制位
KINDLE EQU P1.2 ;点火脉冲位
OILPUMP BIT P1.6 ;油泵开关位
TXD_ EQU P1.0 ;RS232发
RXD_ EQU P1.1 ;RS232收
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 30H ;油门开度缓冲寄存器
AIR_T EQU 31H ;进气温度缓冲寄存器
MACH_BF EQU 32H ;机器温度缓冲寄存器
VOL_BUF EQU 33H ;电压补偿缓冲寄存器
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-12K RPM/min
OIL_S EQU 21H ;节气门A/D转换量
Oangle EQU 22H ;节气门开度0,6,...,84,90度
NOT_O EQU 23H ;节气门A/D转换量求反
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 ;氧传感器过浓标志
COOL_M BIT 120 ;发动机低温标志
FX EQU 40H ;插值点X坐标
FX1 EQU 41H ;插值点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坐标
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 ;十六位转速高八位
TABEL equ 0a00H ;表首地址
;============================================================
;
org 0000h
ST: aJMP MAIN ;复位转主程序
ORG 0003H ;启动中断入口
AJMP START ;转启动子程序
org 000bh ;喷油定时器0中断000BH
push acc
PUSH PSW
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 2FH,#00H
MOV 35H,#00H
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 ;开开油泵
ACALL COUNT
WAIT: JB P1.4,WAIT ;等负脉冲
MOV WDRST,#1EH ;
MOV WDRST,#0E1H ;
SETB EWD ;
MOV WDCON,#00010111B ;开看门狗定时器
SETB TR1 ;开测速定时器
; ACALL SIGN
LOOP1: JNB P1.4,LOOP1 ;等正脉冲
;===============================================
MOV C,127
MOV P1.7,C ;开喷油器
ACALL VOL ++0------------------------------------------------------------
ACALL QUICK_
ACALL OIL_ON
ACALL MACH_
SETB TR0 ;开喷油定时器
DJNZ 2EH,AFAN ;启动加浓延时
MOV 2EH,#01H ;初值
;setb p1.7
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 ;...
ACALL HIGH_S ;超速
ACALL WEAKEN ;减速
ACALL SLOW_S ;低速
ACALL QUICKS ;加速
ACALL F200 ;200RPM/分
down: AJMP LOOP ;循环返回
;===============================================
F200: ;200转检测
INC 35H
MOV A,35H
CJNE A,#2,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
O_OFF: SETB 127
RET
BIG: JNC O_OFF
CLR 127
RET
WEAKEN: ;减速
MOV A,OIL_S
CJNE A,#01H,WK
WK_L: SETB 125
SETB 127
RET
WK: JNC WK_GO
MOV A,51H
CJNE A,#05H,WK_H
WK_H: JNC WK_L
WK_GO: CLR 125
CLR 127
RET
SLOW_S: ;低速<500RPM/min
mov A,51H
CJNE A,#01H,S_S
S_H: CLR 123
RET
S_S: JNC S_H
SETB 123
RET
QUICKS: ;加速
MOV A,OIL_S ;
CJNE A,#7FH,QK
QK_L: CLR 126
MOV 3FH,#01H ;
RET ;
QK: JC QK_L
MOV A,51H ;
CJNE A,#05H,QK_GO
QK_H: SETB 126
mov 3fh,#0ffh ;
RET ;
QK_GO: JNC QK_H
CLR 126
MOV 3FH,#01H
RET
QUICK_: DJNZ 3FH,QUICK_
QK_: DJNZ 3FH,QK_
RET
;===============================================
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 TH0,4CH ;调喷油宽度
MOV TL0,4DH ;...
POP PSW
pop acc
RETI ;返回
OIL_ON:
MOV A,30H
MOV 21H,30H
CPL A
MOV 23H,A
MOV A,30H
MOV B,#10H
DIV AB
MOV 22H,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
;======================================================
; ...... 计算子程序 ......
;======================================================
COUNT:
ACALL COUNTX
ACALL COUNTY
MOV A,40H
ADD A,40H
MOV B,44H
MUL AB
MOV 4EH,B
MOV 4FH,A
ACALL READ
RET
COUNTX:
MOV A,20H
MOV 40H,A
DEC A
MOV 41H,A
ADD A,#02H
MOV 42H,A
INC A
MOV 43H,A
RET
COUNTY:
MOV A,22H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -