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

📄 ats_wu_f14s.asm

📁 本源代码是实际产品代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        CLR    GJKZ              ; 关机
        SETB   YMKZ              ; 关闭油门
        MOV    SECOND5,#100      ; 5s关机信号
        CLR    SEC5_F
WRONG1:
        JNB    SDYC_F,MAIN7
        JNB    SEC5_F,WRONG1
        SETB   GJKZ
WRONG2:
        JB     SDYC_F,WRONG2
        AJMP   MAIN7X
MAIN7:
        SETB   JYNO_F          ; 市电供电情况下不检测飞轮
MAIN7X:
        SETB   DYKZ            ;20070917 22:56  市电供电
        SETB   GJKZ            ;关闭关机信号
        SETB   QDKZ            ;关闭启动信号
        SETB   YMKZ
        LJMP   MAIN1
;**************************************
;**************************************
;       发电机正常启动的情况下,检测到了市电
MAIN7A:
        MOV    SECOND5,#40     ;1分钟内市电异常,
        CLR    SEC5_F
        JNB    SEC5_F,$        ;延时2s转发电机供电
        SETB   DYKZ            ;CLR    DYKZ
        SETB   JYNO_F          ;市电供电情况下不检测飞轮
MAIN1YY:
        LJMP   MAIN1
;**************************************
;**************************************
FDJZCQD:
        CLR    SEC5_F
        CLR    MIN1_F           ;10-180S到标志
        MOV    SECOND5,#100
        MOV    MINUTE1,YSDATA
FDJZCQD1:
        JNB    SDYC_F,MAIN7A
        JB     FDJYC_F, ZGJJJ   ;延时10-180S的时间内 ,发电机输入异常->只关机
        JNB    MIN1_F,FDJZCQD1  ;等待1分钟(可调)
        CLR    DYKZ             ;切换到发电机供电
        CLR    JYNO_F           ;发电机供电才检测飞轮!!20070918 20:56
        MOV    COUNT1A,#20
        LJMP   MAIN1
;**************************************
ZGJJJ:                           ;20070917 22:20增加
;        JNB    FLYYC_F,ZGJJJ1   ;飞轮有,就不关机了
        CLR    GJKZ              ;延时10-180S的时间内 ,发电机输入异常->只关机
        SETB   YMKZ              ;关闭油门
        SETB   JYNO_F            ; 关机这5s不检测飞轮
        MOV    SECOND5,#100
        CLR    SEC5_F
        JNB    SEC5_F,$
        SETB   GJKZ
ZGJJJ1:
        LJMP   MAIN1
;**************************************
;**************************************
        ;从发电机恢复到市电状态
FDJTOSD:
        JB     SDYC_F, MMM4
MMM1:
        MOV    SECOND5,#40     ;2s 切换电源
        CLR    SEC5_F
        JNB    SEC5_F,$
        SETB   DYKZ
        MOV    SECOND5,#100
        CLR    SEC5_F
        CLR    MIN1_F          ;1分钟到标志
        MOV    MINUTE1,#8      ;改为40s #12
MMM2:
        JB     SDYC_F,MMM3
        JNB    MIN1_F,MMM2
        SETB   YMKZ            ;关闭油门
        CLR    GJKZ            ;1分钟内市电来了,输出关机信号
        SETB   JYNO_F            ; 关机这5s不检测飞轮
        MOV    SECOND5,#100
        CLR    SEC5_F
        JNB    SEC5_F,$
        SETB   JYNO_F          ; 市电供电情况下不检测飞轮
        SETB   DYKZ            ;切换到市电
        SETB   GJKZ
        SETB   QDKZ
        SETB   BJKZ
        CLR    AAA_F
        CLR    BBB_F
        CLR    BJ_F
        RET
MMM3:
        MOV    SECOND5,#40     ;1分钟内市电异常,
        CLR    SEC5_F
        JNB    SEC5_F,$        ;延时2s转发电机供电
        CLR    DYKZ
        CLR    JYNO_F          ;发电机供电要检测
MMM4:
        RET                    ;转发电机正常供电
;*********************************************
;**********************************************
;     定时器1中断,用于产生精确定时,          *
;     采样端口K1=1有市电,K1=0 无市电          *
;**********************************************
TIMER1:
        PUSH   ACC
        CLR    TF1
        MOV    TH1,   #03CH       ;
        MOV    TL1,   #0B0H       ;50ms  定时
        MOV    WDT_CONTR,#3CH     ;启动看门狗!!
        DJNZ   SECOND1,YHG0
        MOV    SECOND1,#20        ;精确产生1s定时,用与计算频率
;*********************************
        SETB   SEC1_F             ;1S定时标志
YHG00:
;*********************************只在发电机正常市电异常的情况下检测频率
        LCALL  GJDELAY            ;每秒采样一次关机延时电压!!
        LCALL  BATGL              ;每秒采样一次电池电压!!
        LCALL  FDJCY              ;每秒采样一次发电机电压
YHG0:
        JNB    K1,YHG1            ;1=有电!!   0=无电==;市电异常检测
        DEC    TEMP5
        MOV    A,TEMP5
        JNZ    YHG2               ;市电异常不够5s
        CLR    SDYC_F             ;连续1s都you市电,清市电异常标志
        MOV    KZTEMP5,#100
        MOV    TEMP5,#20
        AJMP   YHG2
YHG1:
        DJNZ   KZTEMP5,YHG2
        SETB   SDYC_F
        MOV    TEMP5,#20
        MOV    KZTEMP5,#100       ;100次采样×0.050=5s
YHG2:
        DJNZ   SECOND5,YHG0B
        SETB   SEC5_F             ;定时5s到标志
        MOV    SECOND5,#100       ;
        DJNZ   MINUTE1,YHG0B
        SETB   MIN1_F             ;定时1分钟到标志
        MOV    MINUTE1,#2
;*********************************************
;*********************************************
YHG0B:
        JNB    K2,YHG1B           ;1=有电!!   0=无电== ;发电机异常检测
        DEC    TEMP6
        MOV    A,TEMP6
        JNZ    YHG3               ;发电机电异常不够1s
        CLR    FDJYC_F            ;连续1s都you市电,qing市电异常标志
        MOV    KZTEMP6,#20
        MOV    TEMP6,  #20
        AJMP   YHG3
YHG1B:
        DJNZ   KZTEMP6,YHG3
        SETB   FDJYC_F
        MOV    TEMP6,   #20
        MOV    KZTEMP6, #20       ;20次采样×0.050=1s
;***********************************低油压异常检测
;***********************************低油压异常检测
YHG3:
;        JB     JYNO_F,YHG5        ;飞轮检测无效,则跳过检测
        JB     FLYL,YHG3B         ;1=飞轮有输入!!
        MOV    COUNT1, #60
        DJNZ   COUNT1A,YHG5
        MOV    COUNT1A,#60
;        SETB   FLYYC_F             ;连续3s飞轮异常,置异常标志
        CLR    FLYYC_F             ;连续3s飞轮正常,清异常标志   去掉飞轮检测功能!!2007.10.21
        AJMP   YHG5
YHG3B:
        MOV    COUNT1A,#60
        DJNZ   COUNT1,YHG5
        MOV    COUNT1, #60
        CLR    FLYYC_F             ;连续3s飞轮正常,清异常标志
;**********************************
YHG5:
;**********************************
        JNB    BJ_F,YHG5A      ;报警报警有效才闪烁
        DJNZ   RUNTEMP,YHG6
        MOV    RUNTEMP,#6
        CPL    ALMLED
        AJMP   YHG6
YHG5A:
        CLR    ALMLED             ;没报警的时侯,熄灭报警灯
YHG6:
        POP    ACC
        RETI

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;**********************************
;       关机延时采样子程序GJDELAY()   采样通道1
;**********************************   MINUTE1=2   10S定时关机!数字加14   增加10s延时
GJDELAY:
        MOV    A,#CHANNEL1
        LCALL  ADZH
        MOV    B,#14
        DIV    AB
        INC    A
        CLR    C
        RLC    A
        MOV    YSDATA,A
        RET

;**********************************
;       电池管理子程序BATGL()         采样通道2
;**********************************
BATGL:
        MOV    A,#CHANNEL2
        LCALL  ADZH
        MOV    ZJDATA,A
        CJNE   A,#95H,BATGL1     ;11.5V=87; 12V=8DH; 12.5V=92H
BATGL1:
        JNC    BATGL2
        MOV    FDCOUNT,#5        ;小于12.5V,清取消充电计数器
        DJNZ   CDCOUNT,BATGL4
        SETB   CDKZ              ;连续2s电压低于 12.5V,开始充电
        MOV    CDCOUNT,#5
        LJMP   BATGL4
BATGL2:
        MOV    A,ZJDATA
        CJNE   A,#0A2H,BATGL3    ;99H=12.8V  13.5V=9EH
BATGL3:
        JC     BATGL4
        MOV    CDCOUNT,#5       ;大于13.5V,清充电计数器
        DJNZ   FDCOUNT,BATGL4
        CLR    CDKZ             ;连续2s电压高于 13.5V,停止充电
        MOV    FDCOUNT,#5
        LJMP   BATGL4
BATGL4:
        RET

;**********************************
;       发电机采样子程序FDJCY()       采样通道3
;**********************************
FDJCY:
        MOV    A,#CHANNEL3
        LCALL  ADZH
        MOV    ZJDATA,A
        CJNE   A,#54H,FDJCY1     ;采样的1.6V,对应215V======#52H,
FDJCY1:
        JNC    FDJCY2
        MOV    GYCOUNT,#3        ;小于215V,清过压计数器
        DJNZ   QYCOUNT,FDJCY4    ;欠压计数器-1
        MOV    QYCOUNT,#3
        SETB   QIANY_F           ;置欠压标志
        ;CLR    QIANY_F
        AJMP   FDJCY4
;**********************************
FDJCY2:
        MOV    A,ZJDATA
        CJNE   A,#06AH,FDJCY3    ;是否大于265V=====#065H  2.07V
FDJCY3:
        JC     FDJCY4A
        MOV    QYCOUNT,#3        ;大于265V,清欠压计数器
        DJNZ   GYCOUNT,FDJCY4
        MOV    GYCOUNT,#3
        SETB   GUOY_F
        ;CLR    GUOY_F
        AJMP   FDJCY4
FDJCY4A:
        CLR    QIANY_F
        CLR    GUOY_F
        MOV    GYCOUNT,#3
        MOV    QYCOUNT,#3
FDJCY4:
        RET
;*********************************************
;*********************************************

;**********************************
;       AD转换子程序ADZH()
;**********************************
ADZH:
        ORL    ADC_CONTR,#80H
        LCALL  DELAY
        MOV    ADC_CONTR,A       ;启动AD电源开关,并选择采样通道
        LCALL  DELAY             ;延时2ms
        MOV    ADC_DATA,#00
        ORL    ADC_CONTR,#08H    ;启动AD转换
AD_WAIT:
        MOV    A,#10H
        ANL    A,ADC_CONTR       ;判断AD转换是否完成!!
        JZ     AD_WAIT           ;AD转换未完,继续等待!
        ANL    ADC_CONTR,#0E7H   ;清0 ADC_FLAG,ADC_START,停止AD转换
        MOV    A,ADC_DATA
        RET

;**********************************
;       延时子程序DELAY()2ms
;**********************************
DELAY:
        MOV    4EH,#4
DELAY1:
        MOV    4FH,#255
        DJNZ   4FH,$
        DJNZ   4EH,DELAY1
        RET

        END

⌨️ 快捷键说明

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