⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0615.txt

📁 用LPC764制作的摩托车电喷系统程序源码
💻 TXT
📖 第 1 页 / 共 2 页
字号:
;=======================================================
;                                程序设计:游仕俊 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 + -