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

📄 bataint.asm

📁 用LPC764制作的摩托车电喷系统程序源码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        CJNE    A,#7FH,QK               ;节气门45度开度?否转
QK_L:   CLR     126                     ;YES清标志
        MOV     3FH,#01H                ;不加浓
        RET                             ;
QK:     JC      QK_L                    ;小于45度转清标志
        MOV     A,51H                   ;等于大于45度看转速
        CJNE    A,#05H,QK_GO            ;等于1500RPM/min?
QK_H:   SETB    126                     ;YES置加速标志
        mov     3fh,#0ffh               ;加浓
        RET                             ;
QK_GO:  JC      QK_H                    ;小于1500置加浓标志并加浓
        CLR     126                     ;大于1500清标志
        MOV     3FH,#01H                ;不加浓
        RET
QUICK_: DJNZ    3FH,QUICK_              ;
QK_:    DJNZ    3FH,QK_                 ;
        RET
WD:
        CLR     P1.7
        MOV     WDRSTS,#1EH              ;
        MOV     WDRSTS,#0E1H             ;
        SETB    EWDS                     ;
        MOV     WDCONS,#00010111B        ;开看门狗定时器
        RET
;=====================================================
;                   点火子程序
;=====================================================
IGN_S:
        MOV     DPH,#05H
        MOV     A,20H
        MOV     B,#5H
        DIV     AB
        SWAP    A
        ANL     A,#0F0H
        SUBB    A,#10H
        MOV     5EH,A
        MOV     A,31H
        SWAP    A
        ANL     A,#0FH
        ADD     A,5EH
        MOV     5DH,A
        MOV     DPL,A
        CLR     A
        MOVC    A,@A+DPTR
        MOV     5FH,A
        RET
IGNIS:                                  ;
        MOV     R1,5FH
        DJNZ    R1,$
IGN:    CLR     P1.1
        MOV     R1,#1FH
        DJNZ    R1,$
        SETB     P1.1
        RET
;===============================================
START:                               ;启动子程序
        SETB    SLOW                 ;置低速启动标志
        MOV     2EH,#08H             ;设启动加浓次数
        mov     4Ch,#0eCh            ;设启动加浓宽度
        mov     4Dh,#78h             ;(8MS)
        RET                          ;返回
pump:
        setb     p1.7                ;关油泵
        POP      PSW                 ;
        POP      ACC                 ;弹出
        RETI                         ;中断返回
INTF0:                               ;喷油结束中断子程序
        acall   vol
        ACALL   MACH_
        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               ;保证节气门开度不大于EFH
        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                  ;减怠速量0.7V
        MOV     120,C                   ;置怠速标志
        JnB      120,norm               ;无标志转,低于23(最小开度)下滑
        MOV     26H,#06H                ;有则填表基地址06
        MOV     27H,#00H                ;低八位
        MOV     A,24H
        CLR     C
        SUBB    A,#14H                  ;减0.47V
        JC     OIL_00                   ;<0.47v转
        MOV     A,24H
        CLR     C
        SUBB    A,#1BH                  ;减0.57V
        JC     OIL_01                   ;<0.57v转
        MOV     22H,#2H                 ;开度2
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_01: MOV     22H,#1H                 ;开度1
        MOV     A,20H
        CLR     C
        SUBB    A,#14H                  ;低于2000rpm
        JC      GOTO                    ;转
        SETB    127                     ;高于2000RPM关喷油嘴
        SETB    124
        RET
OIL_00: MOV     22H,#0H                 ;开度0
        MOV     A,20H
        CLR     C
        SUBB    A,#12H                  ;低于1800rpm
        JC      GOTO                    ;转
        SETB    127                     ;高于1800RPM关喷油嘴
        SETB    124
        RET
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_:
        mov     A,33H
MACH_I: INC     A
        CJNE    A,#0FFH,MACH_I
        RET
vol:
        MOV     A,30h
VOL_I:  INC     A
        cjne    A,#0ffh,vol_I
        RET
CMP2_y:
        MOV     0ADH,#2cH
        NOP
        NOP
        NOP
        NOP
        NOP
        ANL     0ADH,#0FEH
        RET

;======================================================
;                模数转换子程序
;======================================================
ADRead:
        PUSH    ACC
        MOV     ADC_N,#80H
        MOV     R1,#30H
ADNEXT: mov     adconS,adc_n
        MOV     R0,#5
        DJNZ    R0,$
        setb    0C3H
ADChk:
        jnb     0C4H,adchk
        mov     a,dac0S
        MOV     @R1,A
        INC     R1
        INC     ADC_N
        clr     adciS
        CJNE    R1,#34H,ADNEXT
        POP     ACC
        ret

SIGN:
        CPL     P1.6
        MOV     R1,33H
S:      NOP
        NOP
        NOP
        NOP
        NOP
        DJNZ    R1,S
        SETB     P1.6
        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 + -