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

📄 0526.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发
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_BUF EQU     31H              ;空气量缓冲寄存器
AIR_T   EQU     32H              ;进气温度缓冲寄存器
MACH_BF EQU     33H              ;机器温度缓冲寄存器
VOL_BUF EQU     34H              ;电压补偿缓冲寄存器
ADC_N   EQU     3AH              ;模数转换器编号
SPEEDwH  EQU     3BH              ;转速计数器高八位RAM
SPEEDwL  EQU     3CH              ;转速计数器低八位RAM
m_i     EQU     38H              ;数据表下标(i)
M_j     EQU     39H              ;数据表下标(j)
;
OIL_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
        PUSH    ACC
        PUSH    PSW
        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     PTOAD,#78H
        ANL     POM2,#87H
        ORL     POM1,#78H
        mov     adc_n,#80h
        MOV     IP0H,#02H
        MOV     IP0,#02H
        MOV     WDRST,#1EH
        MOV     WDRST,#0E1H
        SETB    EWD
        SETB    IT0
        SETB    ET0
        CLR     P1.3
     ;   SETB    EX0
        setb    EA
        MOV     WDCON,#00010111B
LOOP:
        MOV     TH1,#00H
        MOV     TL1,#00H
        MOV     R4,#80H
        MOV     R5,#0C3H
        MOV     R6,#0C9H
        MOV     R7,#01H
        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
;===============================================
        SETB    TR0
        CPL     P1.7
        ACALL   ADREAD
        ACALL   DIV1
        acall   count
        ACALL   SIGN
AFAN:   JB      P1.4,AFAN
        CLR     TR1
        MOV     3BH,TH1
        MOV     3CH,TL1
        AJMP    LOOP
;===============================================
START:
        NOP
        CPL     P1.6
        CLR     IE0
        SETB    P1.3
        POP     PSW
        POP     ACC
        RETI
pump:
        SETB     P1.6
        POP      PSW
        POP      ACC
        RETI
INTF0:
        CLR     TR0
        MOV     TL0,#80H
        MOV     TH0,#0ECH
        SETB    P1.7
       mov      r2,3bh
       djnz     R2,$
        ACALL   sign1
        RETI
;======================================================
ADRead:
        ACALL   SIGN
        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,#33H,ADNEXT
        POP     ACC
        ACALL   SIGN
        ret

SIGN:
        CPL     P1.7
        MOV     R1,31H
        DJNZ    R1,$
        CPL     P1.7
        RET
SIGN1:
        CPL     P1.7
        MOV     R1,3bH
S1:     NOP
        NOP
        DJNZ    R1,S1
        CPL     P1.7
        RET
;======================================================
;                   计算子程序    ...............
;======================================================
;
;          (R7R6)/(35H36H)=(R7R6)
;          (R3R2)=余数部分
;==============================================================
;
DIV1:   MOV     A,3Bh            ;除数高八位为零?
        JNZ     BEIGN           ;为零转
        MOV     A,3Ch            ;
        JZ      OVER            ;除数低八位为零?为零结束.
BEIGN:  CLR     A               ;清余数寄存器R3,R2
        MOV     R3,A
        MOV     R2,A
        MOV     R1,#20H         ;被除数位数进R1
DIV0:   ACALL   RLC4            ;调余数和被除数循环左移一位子程
        MOV     A,R2            ;左移后,余数低八位减除数低八位
        SUBB    A,3Ch
        MOV     R0,A            ;差进R0
        MOV     A,R3
        SUBB    A,3Bh            ;余数高八位减除数高八位
        JC      NEXT            ;不够减转
        INC     R4              ;够减商加一
        MOV     R3,A            ;余数进R3
        MOV     A,R0            ;差
        MOV     R2,A            ;差进R2
NEXT:   DJNZ    R1,DIV0         ;不够减看10H次到否,否则转
        MOV     A,R3            ;到则看余数高位为一否?

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -