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

📄 0607.asm

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