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

📄 0801.asm

📁 用LPC764制作的摩托车电喷系统程序源码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        RET
IGNIS:
        MOV     A,20H
        ADD     A,20H
        ADD     A,20H
        ADD     A,20H
        CPL     A
        MOV     R1,A
        DJNZ    R1,$
        MOV     R1,31H
        DJNZ    R1,$
IGN:    CLR     P1.1
        MOV     R1,#08H
        DJNZ    R1,$
        SETB     P1.1
        RET
;===============================================
START:                               ;启动子程序
        SETB    SLOW                 ;置低速启动标志
        MOV     2EH,#04H             ;设启动加浓次数
        mov     4Ch,#0eFh            ;设启动加浓宽度
        mov     4Dh,#78h             ;(8MS)
        RETI                         ;中断返回
START0:                               ;启动子程序
        SETB    SLOW                 ;置低速启动标志
        MOV     2EH,#04H             ;设启动加浓次数
        mov     4Ch,#0eFh            ;设启动加浓宽度
        mov     4Dh,#78h             ;(8MS)
        RETI                         ;中断返回
START1:
        SETB    SLOW
        MOV     2EH,03H
        MOV     4CH,#0EFH
        MOV     4DH,#0FFH
        RET
START2:
        SETB    SLOW
        MOV     2EH,02H
        MOV     4CH,#0F8H
        MOV     4DH,#07FH
        RET
pump:                                ;油泵开关子程序
        SETB     P1.7                ;关油泵
        POP      PSW                 ;
        POP      ACC                 ;弹出
        RETI                         ;中断返回
INTF0:                               ;喷油结束中断子程序
        acall   vol
        SETB    P1.6                 ;关喷油器
        CLR     TR0                  ;清中断;
        MOV     TH0,4CH              ;调喷油宽度
        MOV     TL0,4DH              ;...
        POP     PSW
        pop     acc
        RETI                         ;返回

;
;================节气门开度计算===========================
;
OIL_ON:                                 ;
        MOV     24H,31H
        JNB     27H,OIL_O               ;位测试,为0转
        JNB     26H,OIL_O               ;保证节气门开度不大于0F
        JNB     25H,OIL_O               ;查表Y值不出界
        JNB     24H,OIL_O               ;A/D转换值超0EFH
        MOV     24H,#0EFH               ;减为EFH(4.65V)
OIL_O:
        MOV     A,24H                   ;A/D转换值进A
        CLR     C                       ;清进位标志
        SUBB    A,#23H                  ;减怠速量
        MOV     120,C                   ;置怠速标志
        JnB      120,norm               ;无标志转,低于23(最小开度)下滑
        MOV     26H,#06H                ;有则填表基地址07
        MOV     27H,#00H
        MOV     A,24H
        CLR     C
        SUBB    A,#14H                  ;0.57V
        JC     OIL_00
        MOV     A,24H
        CLR     C
        SUBB    A,#19H                  ;0.47V
        JC     OIL_01
        MOV     A,24H
        CLR     C
        SUBB    A,#1dH
        jc     OIL_02
GO_OFF: MOV     A,20H
        CLR     C
        SUBB    A,#1AH                  ;低于2600rpm
        JC      GOTO                    ;转
        SETB    127                     ;高于2600RPM关喷油嘴
        SETB    124
        RET
GOTO:
        CLR     127
        CLR     124
        RET
OIL_02: MOV     22H,#2H
        AJMP    GO_OFF
OIL_01: MOV     22H,#1H
        AJMP    GO_OFF
OIL_00: MOV     22H,#0H
        AJMP    GO_OFF
norm:
        mov     26h,#07h                ;表基地址高八位
        MOV     27H,#40H                ;表基地址低八位
        CLR     127
        MOV     21H,A                   ;减怠速量进21H
        MOV     B,#0FH                  ;除数(分点)
        DIV     AB                      ;除
        mov     23h,a
        MOV     22H,A                   ;商进22H(0,1,2,..,14,15)
        cjne    a,#00h,down2            ;商不为0 转
        mov     a,22h                   ;
        clr     c                       ;
        subb    a,#07h                  ;是否0 节气门开度?
        jc      down0                   ;是转,0点确认
down1:  inc     22h                     ;不是则开度加1(插入2点)
        ret
down2:  cjne    a,#01h,down4            ;商不为1 转
        mov     a,21h                   ;节气门开度进A
        clr     c                       ;
        subb    a,#17h                  ;是否开度3?
        jc      down3                   ;是转
down4:  inc     22h                     ;不是0,1插入(2,4)点
down3:  inc     22h
down0:  RET
;==================================================================
MACH_:
        DJNZ    33H,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,30h
VOL_I:  INC     A
        cjne    A,#0ffh,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.1
        MOV     R1,#0FH
        DJNZ    R1,$
        SETB     P1.1
        RET
SIGN1:
        MOV     R1,#0AFH
S1:     NOP
        NOP
        DJNZ    R1,S1
        RET
;======================================================
;          ......   计算子程序    ......
;======================================================
COUNT:
        MOV     A,20H                    ;FX进A
        SUBB    A,#45H
        JC      UP6
        MOV     20H,#45H

UP6:    MOV     A,20H
        JB      120,UP5
        MOV     4EH,A                   ;FX进SPEEDH
        ADD     A,4EH                   ;A*2
        MOV     4EH,a                   ;查表高八位
        MOV     4FH,22h                 ;查表低八位
        ACALL   READ                    ;查表
        RET
UP5:
        MOV     B,#2
        DIV     AB
        MOV     4EH,A
        MOV     A,#08H
        MUL     AB
        ADD     A,27H
        MOV     27H,A
        MOV     4FH,22H
        ACALL   READ
        RET

READ:                                   ;
        MOV     A,4EH                   ;转速点
        SWAP    A                       ;高低四位互换
        ANL     A,#0FH                  ;屏蔽高四位
        ADD     A,26H                  ;加表首基地址
        MOV     4AH,A
        MOV     DPH,4AH
        MOV     A,4EH
        SWAP    A
        ANL     A,#0F0H                 ;屏蔽低四位
        ADD     A,4FH                   ;查表低字节
        ADD     A,4fH                   ;乘2
        JNC     GOO
        ACALL   IC
GOO:    ADD     A,27H                   ;加基地址
        JNC     GO1
        ACALL   IC
GO1:    MOV     4BH,A
        MOV     DPL,A                   ;低八位进DPL
        CLR     A                       ;
        MOVC    A,@A+DPTR               ;查表
        MOV     4CH,A                   ;查表值进缓冲RAM
        MOV     A,#01H                  ;DPTR+1

⌨️ 快捷键说明

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