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

📄 clean.asm

📁 PIC风机智能化控制程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:

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 + -