📄 ld094.asm
字号:
goto ZD_EXIT
;熄火时间到
clrf XhTimeCount
clrf GdDelay
GAS_end
bcf GASLED ;GAS状态灯
bcf GasOut ;气继电器输出
bcf RpmSingFlag,JDQ
goto ZD_EXIT
GAS_ok
btfsc ZSSING
goto ZD_EXIT
clrf GdDelay
clrf XhTimeCount
goto ZD_EXIT
;---------------------调试时才用------
KeyTime
;按键定时
btfss StatusFlag,KeyFlag ;;按键定时入口标志
goto ZD_EXIT
incf KeyDelay,f
movlw 100
subwf KeyDelay,w
btfss STATUS,C
goto ZD_EXIT
clrf KeyDelay
bsf TIME_1S,KeyTime3sFlag ;按键3S记时到标志
goto ZD_EXIT
;************************************************************************
;***中断判断
;;************************************************************************
ZDpd
banksel INTCON
btfss INTCON,RAIE
goto ZDpd1
BTFSC INTCON,RAIF ; 判断是否porta 2引脚产生中断
call Rpm_ZD ;是
ZDpd1
BTFSC PIR1,TMR1IF ; 判断是否定时器1产生中断
goto TMR1_ZD ;是,跳往定时器1中断处理
BTFSC INTCON,T0IF ; 判断是否定时器1引脚产生中断
goto T0_ZD ;是
goto ZD_EXIT
;****************************************************
;Name:YWZJC1 (液位值检测
;入口参数:YWSZ(检测到的液位数据)
;****************************************************
YWZJC
btfsc YwDataFlag,DataSx
return
MOVLW B'0011001' ;选择通道6(设置值通道)
MOVWF ADCON0
CALL DELAY1
CALL AC_JC ;滤波
MOVWF YW
BTFSC YW_FALG,1 ;LAMDI公司液位传感
GOTO LAMDI
BTFSC YW_FALG,2 ;AEB公司液位传感
GOTO AEB
BTFSC YW_FALG,3 ;0-4V
GOTO LWEI
;0-90欧姆
GOTO OUMU
;--------------------------
;landi 液位传感器(默认设置)
;原理:传感器为0-22K的滑动电阻
;采集方式:上拉12K电阻到5V,与滑动电阻相串联 得到的分压
;1.3V 亮4个绿灯 1V 亮3个绿灯 ;0.7V亮2个绿灯; 0.4v亮1个绿灯 低于0。4V亮红灯
;实测电阻 4。3K ,3K ,2K, 1K
LAMDI
MOVLW 014H ;。4V
SUBWF YW,W
BTFSS STATUS,C
goto LedData1
MOVLW 023H ;0。7V
SUBWF YW,W
BTFSS STATUS,C
GOTO LedData2
MOVLW 033H ;1V
SUBWF YW,W
BTFSS STATUS,C
GOTO LedData3
MOVLW 042H ;1。3V
SUBWF YW,W
BTFSS STATUS,C
GOTO LedData4
GOTO LedData5
;----------满刻度为0V(30K-100)AEB 1050----------------
;AEB 液位传感器
;原理:传感器为0-47K的滑动电阻
;采集方式:上拉12K电阻到5V,与滑动电阻相串联 得到的分压
;1V 亮4个绿灯 1.6V 亮3个绿灯 ;3V亮2个绿灯; 4v亮1个绿灯 >4V亮红灯
;实测电阻 3K ,6K ,18K, 47K
AEB
MOVLW 033H ;1v
SUBWF YW,W
btfss STATUS,C
GOTO LedData5
MOVLW 053H ;1.6V
SUBWF YW,W
btfss STATUS,C
GOTO LedData4
MOVLW 099H ;3V
SUBWF YW,W
BTFSs STATUS,C
GOTO LedData3
MOVLW 0CCH ;4V
SUBWF YW,W
BTFSC STATUS,C
goto LedData2
goto LedData1
;-------------0-90欧姆-------------
;原理:传感器为0-90的滑动电阻
;采集方式:上拉510电阻到5V,与滑动电阻相串联 得到的分压
;4V 亮4个绿灯 3V 亮3个绿灯 ;1。7V亮2个绿灯; 1v亮1个绿灯 <1V亮红灯
OUMU
MOVLW 0x33
SUBWF YW,W
BTFSS STATUS,C
goto LedData1
MOVLW 0X51
SUBWF YW,W
BTFSS STATUS,C
GOTO LedData2
MOVLW 0X99
SUBWF YW,W
BTFSS STATUS,C
GOTO LedData3
MOVLW 0XCC
SUBWF YW,W
BTFSS STATUS,C
GOTO LedData4
GOTO LedData5
;-----------------------压力型传感器----------
;原理:传感器为0-90的滑动电阻
;采集方式:上拉510电阻到5V,与滑动电阻相串联 得到的分压
;1V 亮4个绿灯 1.6V 亮3个绿灯 ;3V亮2个绿灯; 4v亮1个绿灯 >4V亮红灯
LWEI
MOVLW 0xcc ;2V
SUBWF YW,W
BTFSC STATUS,C
goto LedData1
MOVLW 099H ;3V
SUBWF YW,W
BTFSC STATUS,C
GOTO LedData2
MOVLW 0x51
SUBWF YW,W
BTFSC STATUS,C
GOTO LedData3
MOVLW 0x33
SUBWF YW,W
BTFSC STATUS,C
GOTO LedData4
GOTO LedData5
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LedData1
MOVLW D'1'
MOVWF LEDCOUNT ;亮灯个数(红LED)
goto yeweiflag
LedData2
MOVLW D'2'
MOVWF LEDCOUNT
goto yeweiflag
LedData3
MOVLW D'3'
MOVWF LEDCOUNT
goto yeweiflag
LedData4
MOVLW D'4'
MOVWF LEDCOUNT
goto yeweiflag
LedData5
MOVLW D'5'
MOVWF LEDCOUNT
yeweiflag
movfw OLDLEDCOUNT ;判断上次数据与此次数据是否相等
subwf LEDCOUNT,w
btfsc STATUS,Z
goto YwDataYz
;是比上次大还是小?
btfss STATUS,C
goto SUBdata1 ;采集到的数据比上次数据小
movwf LEDdelay ;不相等!保存差数据
bsf YwDataFlag,DataUp
bcf YwDataFlag,DataDown
goto YwDataNoYz ;大
SUBdata1
movfw LEDCOUNT
subwf OLDLEDCOUNT,W
movwf LEDdelay
bcf YwDataFlag,DataUp
bsf YwDataFlag,DataDown
goto YwDataNoYz
YwDataYz
movfw LEDCOUNT
movwf OLDLEDCOUNT
bcf YwDataFlag,DataUp
bcf YwDataFlag,DataDown
bcf YwDataFlag,DataYz
bcf YwDataFlag,DataSx
return
YwDataNoYz
bsf YwDataFlag,DataSx
bsf YwDataFlag,DataYz
return
;****************************************************
;Name:YWMODE (液位值传感信号读取
;****************************************************
YWMODE
MOVLW D'2' ;送地址
CALL RED_EE ;读默认液位传感器型号值
MOVWF TEMP ;把上次值存于TEMP,用于临时比较
;比较,判断保存的是哪种,置相应的标志位一共有四种,值分别为“2,4,6,8”
MOVLW D'2'
SUBWF TEMP,W
BTFSC STATUS,Z
GOTO YEDK
MOVLW D'4'
SUBWF TEMP,W
BTFSC STATUS,Z
GOTO YEDK1
MOVLW D'6'
SUBWF TEMP,W
BTFSC STATUS,Z
GOTO YEDK2
clrf YW_FALG
return
;-----------------------------
YEDK
BSF YW_FALG,1 ; ;LAMDI公司液位传感
return
YEDK1
CLRF YW_FALG ;AEB公司液位传感
BSF YW_FALG,2
return
YEDK2
CLRF YW_FALG ;电压型传感器
BSF YW_FALG,3
return
;---------------------------------------------------
;------------------中断跳到这里----
LED1
BSF YWLED1 ;亮红色LED
BCF YWLED2
BCF YWLED3
BCF YWLED4
BCF YWLED5
GOTO TRM1EXIT
LED2
BSF YWLED2 ;亮1个LED(绿色)
BCF YWLED1
BCF YWLED3
BCF YWLED4
BCF YWLED5
GOTO TRM1EXIT
LED3
BSF YWLED2 ;亮2个LED(绿色)
BCF YWLED1
BSF YWLED3
BCF YWLED4
BCF YWLED5
GOTO TRM1EXIT
LED4
BSF YWLED4 ;亮3个LED(绿色)
BSF YWLED2
BCF YWLED1
BSF YWLED3
BCF YWLED5
GOTO TRM1EXIT
LED5
BSF YWLED5 ;亮4个LED(绿色)
BSF YWLED2
BSF YWLED3
BCF YWLED1
BSF YWLED4
GOTO TRM1EXIT
;**************************************************************************************
;****主程序
;**************************************************************************************
;首先依据按键状态,选择进入程序端口
ZHU1
bsf STATUS,RP0
bcf STATUS,RP1
call 3FFH
movwf OSCCAL ;效准内部震荡器
bcf STATUS,RP0
goto maintemp ;是上电复位?
; btfss STATUS,3 ;3=PD
goto MinIt
btfss STATUS,4 ;4=T0
goto MinIt
banksel PCON
BTFSC PCON,1 ;1=POR
goto MinIt ;其它复位!
goto maintemp ;是上电复位?
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -