📄 clean.asm
字号:
KEYD_NO_W
BCF MEN_DOWN
NOP
NOP
RETURN
;^^^^^^^^^^^^^^^^^^
QUITE ;静
BCF RC,0
NOP
NOP
BCF RC,1
NOP
NOP
BCF RC,2
NOP
NOP
BCF RC,3
NOP
NOP
RETURN
;================================
DIS_PAI
MOVFW BUFP
MOVWF MUF
CALL SUB_9
CALL BCD
CALL Z1
RETURN
;================================
;================================
DIS_SONG
MOVFW BUFS
MOVWF MUF
CALL SUB_9
CALL BCD
CALL Z1
RETURN
;================================
;================================
DIS_YANSHI
MOVFW BUFL
MOVWF MUF
CALL BCD
CALL Z1
RETURN
;================================
;****************ZI************************
; 按键扫描子程序
;***************ZI*************************
KEYSCAN
BSF STATUS,5
BCF OPTION_REG,7
MOVLW 0FH
MOVWF TRISD
BCF STATUS,5
MOVLW 00H
MOVWF RD
NOP
NOP
NOP
NOP
MOVF RD,0
ANDLW 0FH
MOVWF VALUE
XORLW 0FH
BTFSC STATUS,2
GOTO NOKEY
BSF STATUS,5
MOVLW 0F0H
MOVWF TRISD
BCF STATUS,5
MOVF VALUE,W
MOVWF RD
NOP
NOP
NOP
NOP
MOVF RD,0
ANDLW 0F0H
IORWF VALUE,1
RETURN
NOKEY
MOVLW 0FFH
MOVWF VALUE
RETURN
;*************************************
;MAX1,MIN1 CLK->D5
;*************************************
Z1
MOVLW .24
MOVWF BIT
BCF STATUS,0
CLRF BUF3
C1 NOP
BCF SCK
NOP
NOP
BTFSC BUF2,7
BSF AB
BTFSS BUF2,7
BCF AB
RLF BUF3,1
;RLF BUF4,1 ;BUF3、BUF1、BUF2,共3位LED
RLF BUF1,1 ; 0 , BUF1、BUF2,
RLF BUF2,1
BSF SCK
NOP
NOP
DECFSZ BIT,1
GOTO C1
RETLW 0
;*************************************
Z10
MOVLW .32
MOVWF BIT
BCF STATUS,0
C10 NOP
BCF SCK
NOP
NOP
BTFSC BUF2,7
BSF AB
BTFSS BUF2,7
BCF AB
RLF BUF3,1
RLF BUF4,1 ;BUF3、BUF4,BUF1、BUF2
RLF BUF1,1 ; 高 , 低 , 高 ,低
RLF BUF2,1
BSF SCK
NOP
NOP
DECFSZ BIT,1
GOTO C10
RETLW 0
;****************************************
; SHAN PAI
;****************************************
SHAN_P
CALL DELAY200MS
;______________________________
;
MOVLW 00H ; 闪
MOVWF BUF1
MOVLW 00H
MOVWF BUF2
;______________________________
CALL Z1 ;开始显示
;______________________________
CALL DELAY200MS
;===========================
MOVF BUFP,0
MOVWF MUF
CALL SUB_9
CALL BCD
;______________________________
CALL Z1
;______________________________
RETLW 0
;****************************************
; SHAN SONG
;****************************************
SHAN_S
CALL DELAY200MS
;______________________________
;
MOVLW 00H ; 闪
MOVWF BUF1
MOVLW 00H
MOVWF BUF2
;______________________________
CALL Z1 ;开始显示
;______________________________
CALL DELAY200MS
;===========================
MOVF BUFS,0
MOVWF MUF
CALL SUB_9
CALL BCD
;______________________________
CALL Z1
;______________________________
RETLW 0
;****************************************
; A/D
;****************************************
ADCAI
NOP
NOP
NOP
NOP
CLRF 2EH
CLRF 2FH
MOVLW .11
MOVWF CNT1
TAOYUANYA
CALL DEL1MS
;CALL TESTKEY
BSF ADCON0, 2 ;设定A/D转换模块的状态
ADWAITYA
BTFSC ADCON0, 2
GOTO ADWAITYA
MOVF ADRES,0
CALL CHENGJI
MOVF SHANGL,W
ADDWF 2EH,F
BTFSC STATUS,0
INCF 2FH
DECFSZ CNT1
GOTO TAOYUANYA
CALL CHU5
MOVF SHANGL,W
MOVWF ADRES
RETLW 0
;****************************************
; 初始化子程序
;****************************************
INITIAL
BSF STATUS,5
MOVLW B'00000011'
MOVWF TRISB
MOVLW B'00000000'
MOVWF TRISC
MOVLW B'11111111'
MOVWF TRISD
BANKSEL ADCON1
MOVLW B'010'
MOVWF ADCON1
MOVLW B'001'
BSF STATUS,5
MOVWF TRISE
BCF STATUS,5
MOVLW B'11111111'
BSF STATUS,5
MOVWF TRISA
BCF STATUS,5
RETURN
;****************************************
;****************************************
DELAY200MS
MOVLW 0F0H
MOVWF CASE1
Y2 MOVLW 9FH
MOVWF CASE2
Y1 DECFSZ CASE2
GOTO Y1
DECFSZ CASE1
GOTO Y2
RETLW 0
DEL1MS
MOVLW 01H
MOVWF CASE1
D2 MOVLW 0FFH
MOVWF CASE2
D1 DECFSZ CASE2
GOTO D1
DECFSZ CASE1
GOTO D2
RETLW 0
DEL100MS
MOVLW 0FH
MOVWF CASE1
LS2 MOVLW 0FFH
MOVWF CASE2
LS1 DECFSZ CASE2
GOTO LS1
DECFSZ CASE1
GOTO LS2
RETURN
;****************************************
;采集并显示温度和压力,温度和压力从一个口发出
;****************************************
CAIWHOLE
DECFSZ ADCNT,1
RETURN
TCAI
MOVLW .15
MOVWF ADCNT
CAI_WEN_YA
MOVLW B'01001001'
MOVWF ADCON0 ;三 ,A1口负压传感、设置时钟源8TOSC,,启动A/D转换模块
MOVLW .150
MOVWF CHUNG
CALL ADCAI
MOVF SHANGL,0
MOVWF MUF
CALL BCD ;______________________
;______________________
;BUF3、BUF4,BUF1、BUF2
MOVF BUF1,0 ; 温度 , 压力
MOVWF BUF3 ;______________________
MOVF BUF2,0 ;温度显示
MOVWF BUF4
MOVLW B'01000001'
MOVWF ADCON0 ;三、A0口 压力传感,设置时钟源8TOSC,,启动A/D转换模块
MOVLW .140
MOVWF CHUNG
CALL ADCAI
MOVF SHANGL,W
;================================
SUBLW .10
SKPC
GOTO DAYU10
MOVLW .0
GOTO XIXIXI
DAYU10
MOVF SHANGL,W
;================================
XIXIXI
MOVWF MUF
CALL BCD
;CALL Z4 ;压力显示
CALL DEL1MS
CALL DEL1MS
RETURN
;****************************************
; ;送风量采集并比较\报警
;****************************************
CAI_SONGFENG
MOVLW B'01010001'
MOVWF ADCON0 ;三、A2口,设置时钟源8TOSC,,启动A/D转换模块
MOVLW .99
MOVWF CHUNG
CALL ADCAI
MOVF SHANGL,0
;MOVWF MUF
;MOVWF SHIBUF2
;CALL BCD
;CALL Z3SHI2
RETURN ;湿度2显示
;****************************************
; ;排风量采集并比较\报警
;****************************************
CAI_PAIFENG
MOVLW B'01011001'
MOVWF ADCON0 ;三、A3口,设置时钟源8TOSC,,启动A/D转换模块
MOVLW .99
MOVWF CHUNG
CALL ADCAI
MOVF SHANGL,0
;MOVWF MUF
;MOVWF SHIBUF
;CALL BCD
;CALL Z3SHI1 ;湿度1显示
RETURN
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
; 键翻译子程序
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
TRANSLATE
MOVLW 70H
MOVWF FSR
XUN_LOOP1
MOVF 0,0
XORWF VALUE,0
BTFSC STATUS,2
GOTO XUN_LOOP2
INCF FSR,1
;________________
;________________
MOVLW 7FH ;鉴于此处是从70H处放键值码,所以作了改动,原为BTFSS FSR,4一条指令
XORWF FSR ,W ;________________
BTFSS STATUS,Z
;________________
GOTO XUN_LOOP1
MOVLW .13 ;可能多键同时按下,因为13未用,所以返回一个未用键
MOVWF FSR
RETURN
XUN_LOOP2
BCF FSR,6
BCF FSR,5
BCF FSR,4
RETURN
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLEAR_1
CLRF BUF1
CLRF BUF2
CLRF BUF3
CALL Z1 ;QING ,清空!灭.
CLRF RC
CLRF RD
CLRF RE ;____所有输出为低
RETURN
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
; 程序开始
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
START
;——————————————————————————
BSF STATUS,5
MOVLW B'00000011'
MOVWF OPTION_REG ;16预分频,16次TMR0加1
BCF STATUS,5
CLRF INTCON
BCF INTCON,TOIE
BCF INTCON,INTE ;;关闭所有中断
BCF INTCON,GIE
BCF INTCON,TOIF
BCF INTCON,INTF
;MOVLW 00H
;MOVWF TMR0
CLRF MING_F
CLRF JUN_F
CLRF FENG_F
CLRF F_P_S
CLRF OPEN_F
;——————————————————————————
MOVLW .1
MOVWF CNT_DIS ;显示标志,决定是显示岩石时间还是显示调速大小?初始化为1,使其显示岩石时间.
;当大于1时,显示的是排风调速或者送风调速.
CLRF MS
CLRF MS+1
CLRF MS50
CLRF SECOND
;CLRF MINUTE
;——————————————————————————
CALL INITIAL
CLRF RA
CLRF RB
CLRF RC
BSF TIAOSU_SONG
NOP
NOP
BSF TIAOSU_PAI
NOP
NOP
CLRF RE
;——————————————————————————
MOVLW 77H
MOVWF 70H
MOVLW 0B7H
MOVWF 71H
MOVLW 0D7H
MOVWF 72H
MOVLW 0E7H
MOVWF 73H
MOVLW 7BH
MOVWF 74H
MOVLW 0BBH
MOVWF 75H
MOVLW 0DBH
MOVWF 76H
MOVLW 0EBH
MOVWF 77H
MOVLW 7DH
MOVWF 78H
MOVLW 0BDH
MOVWF 79H
MOVLW 0DDH
MOVWF 7AH
MOVLW 0EDH
MOVWF 7BH
MOVLW 7EH
MOVWF 7CH
MOVLW 0BEH
MOVWF 7DH
MOVLW 0DEH
MOVWF 7EH
MOVLW 0EEH
MOVWF 7FH
; CALL ROMR_TIME ;开机定时器开始运行.把EEPROM中的时间值调出。
;——————————————————————————
DIANYUAN
CALL CLEAR_1
;——————————————————————————
;下面等待启动键!电源键.
;——————————————————————————
CHECK
;。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
;。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
MOVLW .180 ;本程序设置20天
XORWF TIAN,W
;MOVLW .5 ;本程序设置2MINUTE
;XORWF MINUTE,W
SKPNZ
BSF SIJI,0
;——————————————————————————
BTFSS SIJI,0
GOTO SI_NO
BCF INTCON,TOIE ;定时器停止运行(实际停止中断,时间积存器停止自加)
BCF INTCON,GIE
CALL SERVE
GOTO $ ;进入死循环
;。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
;。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
SI_NO
CALL KEYSCAN
COMF VALUE,0
BTFSC STATUS,2
GOTO CHECK ;等待启动键!
CALL DEL100MS
CALL KEYSCAN
COMF VALUE,0
BTFSC STATUS,2
GOTO CHECK
CALL TRANSLATE
MOVF FSR,0
XORLW 00H ;0 TO POWER
BTFSS STATUS,2
GOTO CHECK
;———————
DENG_0
CALL KEYSCAN
COMF VALUE,0
BTFSC STATUS,2 ;等待键放!
GOTO FANG_0
CALL TRANSLATE
MOVF FSR,0
XORLW 00H ;0 TO POWER
BTFSC STATUS,2
GOTO DENG_0
GOTO FANG_0
;———————
FANG_0
BSF POWER
NOP
NOP
NOP
;——————————————————————————
CALL ROMR ;读ROM数据.读出其中的调速值和设定的延时时间。
;——————————————————————————
MOVF BUFS,W
MOVWF BUFS_B
MOVF BUFP,W
MOVWF BUFP_B
MOVF BUFL,W
MOVWF BUFL_B
MOVWF BUFLL
;---------------------------
MOVLW .35
MOVWF YANSHI
YAN
CALL DELAY200MS ;给个开机延时时间,使系统充分加电.
DECFSZ YANSHI,1
GOTO YAN
;---------------------------
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;_________________________
; S/Z TEST???
;_________________________
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
MAIN
;。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
;。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
MOVLW .180 ;本程序设置20天
XORWF TIAN,W
;MOVLW .5 ;本程序设置2MINUTE
;XORWF MINUTE,W
SKPNZ
BSF SIJI,0
;——————————————————————————
BTFSS SIJI,0
GOTO WORK_1
BCF INTCON,TOIE ;定时器停止运行(实际停止中断,时间积存器停止自加)
BCF INTCON,GIE
CALL CLEAR_1
CALL SERVE
GOTO $ ;进入死循环
;——————————————————————————
;。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
;。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
WORK_1
;_________________________
;电源按键检测,由自动状态-->关机
;_________________________
CALL INITIAL
;——————————————————————————
MOVLW .12
MOVWF SHIJIAN ;长按可关
XUN_01
CALL KEYSCAN
COMF VALUE,0
BTFSC STATUS,2
GOTO XIUCLOUD ;无键按下
CALL DEL100MS
CALL KEYSCAN
COMF VALUE,0
BTFSC STATUS,2
GOTO XIUCLOUD ;无键按下
CALL TRANSLATE
MOVF FSR,0
XORLW 00H ;0 TO POWER
BTFSS STATUS,2
GOTO XIUCLOUD ;不是电源键按下
CALL DELAY200MS
DECFSZ SHIJIAN,1 ;长按可关
GOTO XUN_01
DENG_0A
FANG_0A
CALL CLEAR_1 ;关机
MOVLW .16
MOVWF SHIJIAN ;关机后再给个延时时间,以防止长按时可能造成关机后又打开.
FANG_0AA
CALL DELAY200MS
DECFSZ SHIJIAN,1 ;关机后再给个延时时间,以防止长按时可能造成关机后又打开.
GOTO FANG_0AA
GOTO DIANYUAN
;_________________________
XIUCLOUD
CALL SERVE ;查询调速值和延时时间有无变化,有变化则进行保存。
;_________________________
;***************************************
; 照明按键检测
;***************************************
CALL KEYSCAN
COMF VALUE,0
BTFSC STATUS,2
GOTO MING_NO
CALL DEL100MS
CALL KEYSCAN
COMF VALUE,0
BTFSC STATUS,2 ;检测照明按键
GOTO MING_NO
CALL TRANSLATE
MOVF FSR,0
XORLW 01H ; 1 TO 照明
BTFSS STATUS,2
GOTO MING_NO
GOTO MING_YES
MING_YES
;___________________
MOVLW .1
ADDWF MING_F
;___________________
MING_L
CALL KEYSCAN
COMF VALUE,0
BTFSC STATUS,2 ;等待键放!
GOTO MING_NO ;键放!
CALL TRANSLATE
MOVF FSR,0
XORLW 01H ; 1 TO 照明
BTFSC STATUS,2
GOTO MING_L ;等待键放!
GOTO MING_NO ;键放!
MING_NO ;键放或无键按
BTFSC MING_F,0
GOTO DENG_KAI
GOTO DENG_GUAN
DENG_GUAN
BCF ZHAOMING
NOP
NOP
GOTO KEY_JUN
DENG_KAI
BSF ZHAOMING
NOP
NOP
;***************************************
; 灭菌按键检测
;***************************************
KEY_JUN
CALL KEYSCAN
COMF VALUE,0
BTFSC STATUS,2
GOTO JUN_NO
CALL DEL100MS
CALL KEYSCAN
COMF VALUE,0
BTFSC STATUS,2 ;检测灭菌按键
GOTO JUN_NO
CALL TRANSLATE
MOVF FSR,0
XORLW 02H ; 2 TO 灭菌键
BTFSS STATUS,2
GOTO JUN_NO
GOTO JUN_YES
JUN_YES
;___________________
MOVLW .1
ADDWF JUN_F
;___________________
JUN_L
CALL KEYSCAN
COMF VALUE,0
BTFSC STATUS,2 ;等待键放!
GOTO JUN_NO ;键放!
CALL TRANSLATE
MOVF FSR,0
XORLW 02H ; 2 TO 灭菌键
BTFSC STATUS,2
GOTO JUN_L ;等待键放!
GOTO JUN_NO ;键放!
JUN_NO ;键放或无键按
BTFSC JUN_F,0
GOTO JUN_KAI
GOTO JUN_GUAN
JUN_KAI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -