www.pudn.com > shibiema.rar > shibiema.ASM


 
 
 
 
 
 
 
;***************************************	 
	 
;*****************程序DOUBLE带定时器,综合PIC16C74***********************	 
;========================================================================== 
; 
;       Register Definitions,double//new 
; 
;========================================================================== 
 
W                            EQU     H'0000' 
F                            EQU     H'0001' 
 
;----- Register Files------------------------------------------------------ 
SCL				EQU  	4 
SDA				EQU		3 
Z				EQU		.2		 
TMR0			EQU		1H 
PCL				EQU		2H 
STATUS 	    	EQU		3H 
FSR				EQU		4H 
RA				EQU		5H 
RP0				EQU		5H 
RB				EQU		06H 
RC				EQU		07H 
RD				EQU		08H 
RE				EQU		09H 
ADCON0			EQU		1FH 
ADCON1			EQU		9FH 
ADRES			EQU		1EH 
INTCON			EQU		0BH 
TRISA	        EQU		85H 
TRISB			EQU		86H 
TRISC			EQU		87H 
TRISD			EQU		88H 
TRISE			EQU		89H 
OPTION_REG		EQU		81H 
TOIF			EQU		.2 
TOIE			EQU		.5 
GIE				EQU		.7 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
	 
BIT				EQU		20H 
BUF1			EQU		21H 
BUF2			EQU		22H 
BUF				EQU		23H 
ZUF				EQU		24H 
CNT1			EQU		25H 
CNT2			EQU		26H 
R0				EQU		27H 
R1				EQU		28H 
COUNT8			EQU		29H 
TEMP			EQU		2AH 
BIJIAO			EQU		2BH 
MUF				EQU		2CH 
SIJI			EQU		2DH 
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
	 
H_B				EQU		30H 
L_B				EQU		31H 
CHUH			EQU		32H 
CHUL			EQU		33H 
SHANGH			EQU		34H 
SHANGL			EQU		35H 
YUH				EQU		36H 
YUL				EQU		37H 
P1H				EQU		38H 
P1L				EQU		39H		 
 
NUMBER			EQU		3AH		;一次操作的字节数。 
TXBUF			EQU		3BH		;发送数据缓冲器 
RXBUF			EQU		3CH		;接受数据缓冲器 
CNT				EQU		3DH		;循环次数记数器 
FLAG			EQU		3EH 
ADDR			EQU		3FH		; 24C01首地址 
 
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
 
BUFFER1			EQU		40H		; 40H~43H,	共4个空白区 
MINUTE_BUF		EQU		44H		; 44H~47H,	共6个空白区 
SHIJIAN			EQU		45H 
YANSHI			EQU		46H 
ADCNT			EQU		47H 
LAG_FA			EQU		48H 
;~~~~~~~ 
TIAN			EQU		49H		; 天数寄存器 
HOUR			EQU		4AH		; 小时寄存器, 
MINUTE			EQU		4BH 
SECOND			EQU		4CH 
MS50			EQU		4DH 
MS				EQU		4EH	 
;4FH不要用>>>>><<<<D5	 
;*************************************	 
Z1 
		MOVLW	.32		 
		MOVWF	BIT 
		BCF		STATUS,0 
C1		NOP 
		BCF	RD,5 
		NOP 
		NOP 
		BTFSC	BUF2,7 
		BSF	RD,0 
		BTFSS	BUF2,7 
		BCF	RD,0 
		RLF	BUF3,1 
		RLF	BUF4,1		;BUF3、BUF4,BUF1、BUF2 
		RLF	BUF1,1		; 高	,   低  , 高   ,低 
		RLF	BUF2,1 
		BSF	RD,5 
		NOP 
		NOP 
		DECFSZ	BIT,1 
		GOTO	C1 
		RETLW	0	 
		 
;****************************************		 
		;MAX2,MIN2	CLK->D2	 
;*************************************			 
Z2 
		MOVLW	.32	 
		MOVWF	BIT 
		BCF		STATUS,0 
C2		NOP 
		BCF	RD,2		;BUF3、BUF4,BUF1、BUF2 
		NOP 
		NOP 
		BTFSC	BUF2,7 
		BSF	RD,0 
		BTFSS	BUF2,7 
		BCF	RD,0 
		RLF	BUF3,1 
		RLF	BUF4,1		;BUF3、BUF4,BUF1、BUF2 
		RLF	BUF1,1		; 高	,   低  , 高   ,低 
		RLF	BUF2,1 
		NOP 
		BSF	RD,2 
		NOP 
		NOP 
		DECFSZ	BIT,1 
		GOTO	C2 
		RETLW	0	 
		 
 
 
 
;*************************************	 
		;SHI1	CLK-->D6	 
;*************************************		 
 
Z3SHI1 
		MOVLW	.16 
		MOVWF	BIT 
		BCF		STATUS,0 
C3		NOP 
		BCF	RD,6		 
		NOP 
        NOP 
		BTFSC	BUF2,7 
		BSF	RD,0				;BUF1是高位,BUF2是低位. 
		BTFSS	BUF2,7 
		BCF	RD,0 
		NOP 
		NOP		 
		RLF	BUF1,1 
		RLF	BUF2,1 
	 
		BSF	RD,6 
		NOP 
		NOP 
		DECFSZ	BIT,1 
		GOTO	C3 
		RETLW	0 
 
;*************************************	 
;			 SHI2   CLK->E2	 
;*************************************		 
 
Z3SHI2 
		MOVLW	.16 
		MOVWF	BIT 
		BCF		STATUS,0 
C32		NOP 
		BCF	RE,2		 
		NOP 
        NOP 
		BTFSC	BUF2,7 
		BSF	RD,0 
		BTFSS	BUF2,7 
		BCF	RD,0 
		NOP 
		NOP		 
		RLF	BUF1,1 
		RLF	BUF2,1 
		 
		BSF	RE,2 
		NOP 
		NOP 
		DECFSZ	BIT,1 
		GOTO	C32 
		RETLW	0 
;**************************************** 
;		SHUI WEN AND YALI	CLK-->D7	 
;************************************* 
Z4 
		MOVLW	.32 
		MOVWF	BIT 
		BCF		STATUS,0 
C4		NOP 
		BCF	RD,7		 
		NOP 
      	NOP 
		BTFSC	BUF2,7 
		BSF	RD,0 
		BTFSS	BUF2,7 
		BCF	RD,0 
		RLF	BUF3,1 
		RLF	BUF4,1		;BUF3、BUF4,BUF1、BUF2 
		RLF	BUF1,1		; 高	,   低  , 高   ,低 
		RLF	BUF2,1 
		NOP 
		BSF	RD,7 
		NOP 
		DECFSZ	BIT,1 
		GOTO	C4 
		RETLW	0 
 
			 
;**************************************** 
;	MAX1 AND MIN1,MAX1 SHAN		 
;****************************************					 
SHAN1		 
		;BSF	LAG,0 
		MOVLW	5 
		MOVWF	DAT1	 
			 
AN1		 
		CALL	DELAY200MS 
		 
;______________________________	 
	 
		MOVF	ZUF,0			;ZUF 不变,BUF SHAN 
		MOVWF	MUF 
		CALL	BCD 
;______________________________ 
 
		MOVF	BUF1,0		 
		MOVWF	BUF3 
		MOVF	BUF2,0			;    XIA限    SHANG限 
		MOVWF	BUF4			;BUF3、BUF4,BUF1、BUF2 
;______________________________ ; 高	,   低  , 高   ,低 
								;	ZUF   		BUF 
		MOVLW	00H				;				闪 
		MOVWF	BUF1 
		MOVLW	00H 
		MOVWF	BUF2 
;______________________________ 
 
		CALL	Z1						;开始显示 
;______________________________		 
		 
		 
		CALL	JIAN_T	 
		MOVF	FSR,0					;闪动中有键按下,+,-两键. 
		XORLW	.6 
		BTFSC	STATUS,2 
		CALL	JIA1 
		XORLW	.7 
		BTFSC	STATUS,2 
		CALL	JIAN1 
 
		CALL	DELAY200MS 
;______________________________	 
	 
		MOVF	ZUF,0					;ZUF AND BUF 还原 
		MOVWF	MUF 
		CALL	BCD 
;______________________________ 
 
		MOVF	BUF1,0 
		MOVWF	BUF3 
		MOVF	BUF2,0	 
		MOVWF	BUF4 
;______________________________			;BUF3、BUF4,BUF1、BUF2 
 
		MOVF	BUF,0		 
		MOVWF	MUF 
		CALL	BCD 
;______________________________ 
 
		CALL	Z1 
;______________________________ 
 
		DECFSZ	DAT1 
		GOTO	AN1 
		RETLW	0 
		 
 
 
;**************************************** 
;MAX1 AND MIN1,MIN1 SHAN	MIN-MAX		 
;****************************************					 
SHAN2		 
		;BCF	LAG,0					;    XIA限    SHANG限 
		MOVLW	5						;BUF3、	BUF4, BUF1、BUF2 
		MOVWF	DAT1					 ; 高	, 低  , 高   ,低 
										;	ZUF   		BUF 
AN2										;	闪 
		CALL	DELAY200MS 
		 
;______________________________	 
	 
		MOVF	BUF,0				;BUF 不变,  ZUF 闪 
		MOVWF	MUF 
		CALL	BCD					;转化后BUF1 AND BUF2确定了 
 
		MOVLW	00H 
		MOVWF	BUF3 
		MOVLW	00H					;ZUF清0 
		MOVWF	BUF4 
;______________________________ 
 
		CALL	Z1	;显示 
;______________________________		 
										;BUF3、BUF4,BUF1、BUF2	 
		 
		CALL	JIAN_T	 
		MOVF	FSR,0					;闪动中有键按下,+,-两键. 
		XORLW	.6 
		BTFSC	STATUS,2 
		CALL	JIA1 
		XORLW	.7 
		BTFSC	STATUS,2 
		CALL	JIAN1 
		CALL	DELAY200MS 
;______________________________	 
	 
		MOVF	ZUF,0					;ZUF AND BUF 还原 
		MOVWF	MUF 
		CALL	BCD 
;______________________________ 
 
		MOVF	BUF1,0 
		MOVWF	BUF3 
		MOVF	BUF2,0	 
		MOVWF	BUF4 
;______________________________		 
 
		MOVF	BUF,0		 
		MOVWF	MUF 
		CALL	BCD 
;______________________________ 
 
		CALL	Z1 
;______________________________ 
 
		DECFSZ	DAT1 
		GOTO	AN2 
		RETLW	0 
		 
	 
;**************************************** 
;MAX2 AND MIN2,MAX2 SHAN	MIN-MAX		 
;**************************************** 
SHAN3		 
			 
		;BSF	LAG2,0 
		MOVLW	5 
		MOVWF	DAT1	 
			 
AN3		 
		CALL	DELAY200MS 
		 
;______________________________		 
		MOVF	BMIN,0				;BMIN 不变,BMAX SHAN 
		MOVWF	MUF 
		CALL	BCD 
;______________________________ 
		MOVF	BUF1,0 
		MOVWF	BUF3 
		MOVF	BUF2,0	 
		MOVWF	BUF4 
;______________________________			;BUF3、BUF4,BUF1、BUF2 
		MOVLW	00H 
		MOVWF	BUF1 
		MOVLW	00H 
		MOVWF	BUF2 
;______________________________ 
 
		CALL	Z2 
;______________________________		 
		 
		 
		 
		 
		CALL	JIAN_T	 
		MOVF	FSR,0					;闪动中有键按下,+,-两键. 
		XORLW	.9 
		BTFSC	STATUS,2 
		CALL	JIA2 
		XORLW	.10 
		BTFSC	STATUS,2 
		CALL	JIAN2 
		CALL	DELAY200MS 
	 
;______________________________	 
	 
		MOVF	BMIN,0		;ZUF AND BUF 还原 
		MOVWF	MUF 
		CALL	BCD 
;______________________________ 
 
		MOVF	BUF1,0 
		MOVWF	BUF3 
		MOVF	BUF2,0	 
		MOVWF	BUF4 
;______________________________		 
 
		MOVF	BMAX,0		 
		MOVWF	MUF 
		CALL	BCD 
;______________________________ 
 
		CALL	Z2 
;______________________________ 
 
		DECFSZ	DAT1 
		GOTO	AN3 
		RETLW	0 
		 
		 
;**************************************** 
;MAX2 AND MIN2,MIN2 SHAN	MIN-MAX		 
;****************************************	 
SHAN4 
 
		;BCF		LAG2,0 
		MOVLW	5 
		MOVWF	DAT1	 
			 
AN4		 
		CALL	DELAY200MS 
		 
;______________________________		 
		MOVF	BMAX,0		;BMAX 不变,BMIN SHAN 
		MOVWF	MUF 
		CALL	BCD		;转化后BUF1 AND BUF2确定了 
 
		MOVLW	00H 
		MOVWF	BUF3 
		MOVLW	00H 
		MOVWF	BUF4 
;______________________________ 
 
		CALL	Z2	;显示 
;______________________________			;BUF3、BUF4,BUF1、BUF2 
		 
		 
		CALL	JIAN_T	 
		MOVF	FSR,0					;闪动中有键按下 
		XORLW	.9 
		BTFSC	STATUS,2 
		CALL	JIA2 
		XORLW	.10 
		BTFSC	STATUS,2 
		CALL	JIAN2	 
		CALL	DELAY200MS 
;______________________________	 
	 
		MOVF	BMIN,0			;ZUF AND BUF 还原 
		MOVWF	MUF 
		CALL	BCD 
;______________________________ 
 
		MOVF	BUF1,0 
		MOVWF	BUF3 
		MOVF	BUF2,0	 
		MOVWF	BUF4 
;______________________________		 
 
		MOVF	BMAX,0		 
		MOVWF	MUF 
		CALL	BCD 
;______________________________ 
 
		CALL	Z2 
;______________________________ 
		DECFSZ	DAT1 
		GOTO	AN4 
		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'11111111'	 
		MOVWF	TRISB 
		 
		 
	 
		 
		 
		MOVLW	B'00000000'			 
		MOVWF	TRISC 
		 
		 
		 
		 
		MOVLW	B'00000000'			 
		MOVWF	TRISD 
		 
		 
	 
		BANKSEL	ADCON1 
		MOVLW	B'010' 
		MOVWF	ADCON1 
		 
		MOVLW	B'010' 
		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 
		MOVWF	WENBUF		       		 ;为后面温度比较用 
		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 
 
;**************************************** 
;		采集并显示湿度2 
;**************************************** 
XIAN_SHI2		 
        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显示 
 
;**************************************** 
;		采集并显示湿度1 
;****************************************		 
XIAN_SHI1		 
        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 
 
 
 
 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
		 
;		调温子程序,检测FBIAO 
		 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	 
 
 
TIAOWEN_ZI 
 
		BSF		LED 
		NOP 
		NOP 
       	NOP       	 
        MOVLW   .40 
		SUBWF  	WENBUF,W 
		BTFSC	STATUS,0 
		GOTO   	RBOFF			 
		 
		 
		MOVLW	.30 
		SUBWF	WENBUF,W 
		BTFSC	STATUS,0 
		GOTO	BACK1		 
		 
RBON	 
		NOP 
		BSF    	JIARE 
		NOP 
		NOP 
	 
		GOTO   	BACK1 
		 
	 
		 
RBOFF    
		NOP 
		BCF    	JIARE 
		NOP 
		 
	 
		GOTO   	BACK1 
 
 
BACK1 
		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	.12			;可能多键同时按下,因为12未用,所以返回一个未用键 
		MOVWF	FSR 
		RETURN 
XUN_LOOP2 
		BCF		FSR,6 
		BCF		FSR,5 
		BCF		FSR,4 
		RETURN 
		 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
;					上下限1显示 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
SHANGXIA_DIS1	 
						;上下限1显示 
		MOVF    ZUF,W 
	    MOVWF   MUF 
		CALL	BCD 
 
		MOVF	BUF1,0 
		MOVWF	BUF3			;SHANGXIA_DIS1 AND SHANGXIA_DIS1发送的脉冲口不同 
		MOVF	BUF2,0 
		MOVWF	BUF4 
				 
	    MOVF    BUF,W 
	    MOVWF   MUF 
		CALL	BCD 
		 
		 
		CALL	Z1 
		RETURN 
;_________________________ 
 
SHANGXIA_DIS2 
 
		MOVF	BMIN,W			;SHANGXIA_DIS1 AND SHANGXIA_DIS2发送的脉冲口不同 
		MOVWF   MUF 
		CALL	BCD				;上下限2显示	 
 
		MOVF	BUF1,0 
		MOVWF	BUF3 
		MOVF	BUF2,0 
		MOVWF	BUF4	 
 
		MOVF	BMAX,W 
		MOVWF   MUF 
		CALL	BCD 
		CALL    Z2 
		RETURN		 
 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
;检测水位,	水位子程序,	缺水,不工作,并且置位FBIAO位! 
;_______________________________________________ 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
T_SHUIWEI 
		 
		BTFSC	SHUIWUI 
		GOTO	SJIAN 
		CALL	DEL100MS 
		BTFSC	SHUIWUI 
		GOTO	SJIAN 
	 
		GOTO	QUESHUI		;缺水,不工作, 
		 
SJIAN 
		BTFSC	FBIAO,0 
		GOTO	QUESHUI		 
		RETURN 
;_________________________ 
		 
QUESHUI		;缺水,停 
 
		BSF		FBIAO,0		;置缺水标志位 
		NOP 
		NOP 
		BCF		JIARE 
		NOP 
		NOP 
		NOP 
		BSF		POLICE 
		NOP 
		NOP 
		NOP 
		BCF		PENWU 
		NOP 
		NOP 
	 
;~~~~~~~~~~~~~~~~~~ 
 
		BTFSS	FANGYA,0 
		GOTO	KUQI_SHUI1 
 
;~~~~~~~~~~~~~~~~~~ 
;========================== 
		;CALL	SHUNXU_CLOSE1 
		CALL	FA1_FA2 
;========================== 
KUQI_SHUI1 
 
 
		BCF		FA1 
		NOP 
		NOP 
		BCF		FA2 
		NOP 
		NOP 
		BCF		T1LED	;change 
		NOP 
		NOP 
		BCF		T2LED	;change 
		NOP 
		NOP 
		;CLRF	FANGYA 
		RETURN 
 
 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
;		调温判断子程序,也检测FBIAO 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
TIAOWENPAN 
 
		BTFSC	FBIAO,0 
		GOTO	QUE_SHUI 
 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	TIAOWEN_NO 
		CALL	DEL100MS 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	TIAOWEN_NO	 
		CALL	TRANSLATE 
		 
		MOVF	FSR,0 
		XORLW	04H			; 4   TO	 TIAOWEN 
		BTFSS	STATUS,2 
		GOTO	TIAOWEN_NO 
		GOTO	TIAOWEN_YES 
 
TIAOWEN_YES 
;__________ 
 
		MOVLW	.1 
		ADDWF	TWEN_F 
;__________ 
TIAOWEN_L		 
 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2	;等待键放! 
		GOTO	TIAOWEN_NO		;键放! 
		CALL	TRANSLATE 
		MOVF	FSR,0 
		XORLW	04H			; 4   TO	TIAOWEN 
		BTFSC	STATUS,2 
		GOTO	TIAOWEN_L		;等待键放! 
		GOTO	TIAOWEN_NO		;键放! 
		 
 
TIAOWEN_NO 
 
		BTFSC	TWEN_F,0 
		GOTO	TIAOWEN1 
 
 
 
;______________________________ 
 
	 
		BCF		LED		 
		NOP 
		NOP 
        NOP 
		BCF		JIARE		;no tiaowen!关加热器 
		NOP 
		NOP 
		NOP 
        
		RETURN 
;______________________________		 
 
 
TIAOWEN1		 
		CALL	TIAOWEN_ZI			;调用调温子程序. 
		RETURN 
 
 
QUE_SHUI 
		 
		RETURN 
 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
;		区1,2开或关判断子程序	自动状态下 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
QU12_ZI 
		 
		BTFSC	FBIAO,0			;水位检测 
		RETURN 
 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	QU1_NO						;ZI DONG 
		CALL	DEL100MS 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	QU1_NO	 
		CALL	TRANSLATE 
		 
		MOVF	FSR,0 
		XORLW	.2			; 2   TO	 TONGDAO 1 
		BTFSS	STATUS,2 
		GOTO	QU1_NO 
		GOTO	QU1_YES 
 
QU1_YES 
;_________ 
 
		MOVLW	.1 
		ADDWF	T1_F 
;_________ 
QU1_L 
		CALL	KEYSCAN 
		COMF	VALUE,0									;ZI DONG 
		BTFSC	STATUS,2	;等待键放! 
		GOTO	QU1_NO		;键放! 
		CALL	TRANSLATE 
		MOVF	FSR,0 
		XORLW	.2		; 	2   TO	QU1 
		BTFSC	STATUS,2 
		GOTO	QU1_L		;等待键放! 
		GOTO	QU1_NO			;键放! 
		 
QU1_NO 
		BTFSS	T1_F,0 
		GOTO	QU1_KAI 
		GOTO	QU1_GUAN 
 
;______________________________________ 
 
QU1_KAI 
		BSF		LAG_KAIGUAN,1 
		;======================= 
		;BCF		LAG_FA,1	;一定不能要,因为区开的时候不代表阀门是否开?? 
		;======================= 
		BSF		T1LED 
		NOP 
		NOP 
		NOP 
		CALL	XIAN_SHI1		;湿度1采集,BCD转化,显示 
		 
 
		CALL	SHANGXIA_DIS1	;上下限1显示 
		CALL	DEL1MS 
		CALL	DEL1MS 
		CALL	QU1PAN			;子程序中检测了水位/ 
		 
		GOTO	QU2 
															;ZI DONG 
 
 
QU1_GUAN 
		BCF		LAG_KAIGUAN,1 
;======================================= 
		;CALL	SHUNXU_CLOSE1		 
		BSF		LAG_FA,1 
;____________________________ 
		BTFSC	LAG_FA,2		 
		GOTO	GG1	 
;======================================== 
	 
		BCF		T1LED		;关掉灯 
		NOP	 
		NOP 
		BCF		FA1 
		NOP		 
		NOP 
GG1 
		CLRF	BUF1 
		CLRF	BUF2		;关掉湿度显示						;ZI DONG 
		CALL	Z3SHI1	 
		 
		CLRF	BUF1 
		CLRF	BUF2 
		CLRF	BUF3		;关掉上下限1显示 
		CLRF	BUF4 
		CALL	Z1 
		 
		 
		;BCF		T1LED	;change 
		NOP 
		NOP 
		BCF		FLAG_PENWU,0 
		GOTO	QU2 
 
 
;______________________________________ 
 
QU2 
 
 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	QU2_NO 
		CALL	DEL100MS									;ZI DONG 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	QU2_NO	 
		CALL	TRANSLATE 
		 
		MOVF	FSR,0 
		XORLW	.3			; 3  TO	 TONGDAO 2 
		BTFSS	STATUS,2 
		GOTO	QU2_NO 
		GOTO	QU2_YES 
 
QU2_YES 
;_________ 
 
		MOVLW	.1 
		ADDWF	T2_F 
;_________ 
QU2_L 
		CALL	KEYSCAN 
		COMF	VALUE,0											;ZI DONG 
		BTFSC	STATUS,2	;等待键放! 
		GOTO	QU2_NO		;键放! 
		CALL	TRANSLATE 
		MOVF	FSR,0 
		XORLW	.3		; 	3   TO	QU2 
		BTFSC	STATUS,2 
		GOTO	QU2_L		;等待键放! 
		GOTO	QU2_NO			;键放! 
 
QU2_NO 
		BTFSS	T2_F,0 
		GOTO	QU2_KAI 
		GOTO	QU2_GUAN 
;_____________________ 
QU2_KAI 
		BSF		LAG_KAIGUAN,2 
		;======================== 
		;BCF		LAG_FA,2	;一定不能要,因为区开的时候不代表阀门是否开?? 
		;======================== 
		BSF		T2LED												;ZI DONG 
		NOP 
		NOP 
		CALL	XIAN_SHI2	;湿度2采集,BCD转化,显示 
		 
 
		CALL	SHANGXIA_DIS2	;上下限2显示 
 
		CALL	DEL1MS 
		CALL	DEL1MS 
		CALL	QU2PAN			;子程序中检测了水位/ 
		CALL	BANG_PAN 
		RETURN 
 
QU2_GUAN 
		BCF		LAG_KAIGUAN,2 
;======================================= 
		;CALL	SHUNXU_CLOSE2		 
		BSF		LAG_FA,2 
;____________________________ 
		BTFSC	LAG_FA,1 
		GOTO	GG22 
;======================================== 
 
		BCF		T2LED 
		NOP	 
		nop 
		BCF		FA2 
		NOP		 
		NOP														;ZI DONG 
GG22 
		CLRF	BUF1 
		CLRF	BUF2		;关掉湿度显示 
		CALL	Z3SHI2	 
		 
		CLRF	BUF1 
		CLRF	BUF2 
		CLRF	BUF3		;关掉上下限显示 
		CLRF	BUF4 
		CALL	Z2 
		NOP 
		NOP 
	 
		BCF		FLAG_PENWU,1 
		CALL	BANG_PAN 
;_____________________ 
 
 
		RETURN 
;=========================================================================== 
		;	子程序 
;=========================================================================== 
BANG_PAN 
		MOVF	LAG_KAIGUAN,F 
		BTFSS	STATUS,2 
		GOTO	I00 
		BCF		PENWU 
		NOP 
		NOP 
;~~~~~~~~~~~~~~~~~~ 
 
		BTFSS	FANGYA,0 
		GOTO	JJJ1 
;======================= 
		CALL	FA1_FA2 
;======================= 
;~~~~~~~~~~~~~~~~~~ 
	 
JJJ1 
		 
		BCF		T1LED	;跳到此处是人工强制关区所致,需关区电源 
		NOP 
		NOP 
		BCF		T2LED 
		NOP 
		NOP 
		 
		GOTO	KUQI1 
 
I00		MOVF	FLAG_PENWU,F 
		BTFSS	STATUS,2 
 
		RETURN 
 
		BCF		PENWU 
		NOP 
		NOP 
;~~~~~~~~~~~~~~~~~~ 
 
		BTFSS	FANGYA,0 
		GOTO	KUQI1 
;======================= 
		CALL	FA1_FA2 
;======================= 
;~~~~~~~~~~~~~~~~~~ 
	 
KUQI1 
		BCF		FA1 
		NOP 
		NOP 
		 
		BCF		FA2 
		NOP 
		NOP 
		NOP 
		;CLRF	LAG_FA 
		CLRF	FANGYA 
		RETURN 
;======================================= 
;======================================= 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
;		区1,2开或关判断子程序	手动状态下 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
QU12_SHOU 
 
		BTFSC	FBIAO,0			;水位检测 
		RETURN 
	 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	QU1_NO8 
		CALL	DEL100MS 
		CALL	KEYSCAN													;SHOU_DONG 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	QU1_NO8	 
		CALL	TRANSLATE 
		 
		MOVF	FSR,0 
		XORLW	.2			; 2   TO	 TONGDAO 1 
		BTFSS	STATUS,2 
		GOTO	QU1_NO8 
		GOTO	QU1_YES8 
 
QU1_YES8 
;_________ 
 
		MOVLW	.1 
		ADDWF	T1_F 
;_________ 
QU1_L8 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2	;等待键放! 
		GOTO	QU1_NO8		;键放! 
		CALL	TRANSLATE 
		MOVF	FSR,0 
		XORLW	.2		; 	2   TO	QU1 
		BTFSC	STATUS,2 
		GOTO	QU1_L8		;等待键放! 
		GOTO	QU1_NO8			;键放!								;SHOU_DONG 
		 
QU1_NO8 
		BTFSS	T1_F,0 
		GOTO	QU1_KAI8 
		GOTO	QU1_GUAN8 
 
;______________________________________ 
 
QU1_KAI8 
		BSF		LAG_KAIGUAN,1 
;======================================= 
		BCF		LAG_FA,1	;要,手动状态下,区开的情况下,阀门一定是开的,在从手动向自动跳时有用 
;======================================= 
		BSF		T1LED 
		 
		NOP 
		CALL	XIAN_SHI1		;湿度1采集,BCD转化,显示 
		 
 
		CALL	SHANGXIA_DIS1	;上下限1显示 
		;CALL	QU1PAN			;子程序中检测了水位/ 
		CALL	DEL1MS 
		CALL	DEL1MS 
		BSF		PENWU 
		NOP 
		NOP																;SHOU_DONG 
		BSF		FANGYA,0 
		BSF		FA1 
		NOP 
		NOP 
		;BSF		T1LED 
		NOP 
		NOP 
		BSF		FLAG_PENWU,0		;重要,不可删 
		GOTO	QU28 
 
 
 
QU1_GUAN8 
		BCF		LAG_KAIGUAN,1 
;======================================= 
		;CALL	SHUNXU_CLOSE1 
		 
		 
		BSF		LAG_FA,1 
;____________________________ 
		BTFSC	LAG_FA,2 
		GOTO	GO1	 
;======================================== 
		BCF		T1LED		;关掉灯 
		NOP	 
		nop 
		BCF		FA1 
		NOP		 
		NOP																;SHOU_DONG 
 
GO1 
		CLRF	BUF1 
		CLRF	BUF2		;关掉湿度显示 
		CALL	Z3SHI1	 
		 
		CLRF	BUF1 
		CLRF	BUF2 
		CLRF	BUF3		;关掉上下限1显示 
		CLRF	BUF4 
		CALL	Z1 
		 
	 
		;BCF		T1LED 
		NOP 
		NOP 
		BCF		FLAG_PENWU,0 
		GOTO	QU28 
 
 
;______________________________________ 
 
QU28 
 
 
		CALL	KEYSCAN 
		COMF	VALUE,0												;SHOU_DONG 
		BTFSC	STATUS,2 
		GOTO	QU2_NO8 
		CALL	DEL100MS 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	QU2_NO8	 
		CALL	TRANSLATE 
		 
		MOVF	FSR,0 
		XORLW	.3			; 3  TO	 TONGDAO 2 
		BTFSS	STATUS,2 
		GOTO	QU2_NO8 
		GOTO	QU2_YES8 
 
QU2_YES8 
;_________ 
 
		MOVLW	.1 
		ADDWF	T2_F 
;_________ 
QU2_L8 
		CALL	KEYSCAN 
		COMF	VALUE,0											;SHOU_DONG 
		BTFSC	STATUS,2	;等待键放! 
		GOTO	QU2_NO8		;键放! 
		CALL	TRANSLATE 
		MOVF	FSR,0 
		XORLW	.3		; 	3   TO	QU2 
		BTFSC	STATUS,2 
		GOTO	QU2_L8		;等待键放! 
		GOTO	QU2_NO8			;键放! 
 
QU2_NO8 
		BTFSS	T2_F,0 
		GOTO	QU2_KAI8 
		GOTO	QU2_GUAN8 
;_____________________ 
QU2_KAI8 
		BSF		LAG_KAIGUAN,2 
;======================================= 
		BCF		LAG_FA,2	;要,手动状态下,区开的情况下,阀门一定是开的,在从手动向自动跳时有用 
;======================================= 
		BSF		T2LED 
		NOP 
		NOP 
		CALL	XIAN_SHI2	;湿度2采集,BCD转化,显示 
		 
 
		CALL	SHANGXIA_DIS2	;上下限2显示 
 
 
		;CALL	QU2PAN			;子程序中检测了水位/ 
		CALL	DEL1MS 
		CALL	DEL1MS 
		BSF		PENWU 
		NOP 
		NOP 
		BSF		FANGYA,0									;SHOU_DONG 
		BSF		FA2 
		NOP 
		NOP 
		;BSF		T2LED 
		NOP 
		NOP 
		BSF		FLAG_PENWU,1 
		RETURN 
 
 
	 
 
QU2_GUAN8 
		BCF		LAG_KAIGUAN,2 
;======================================= 
		;CALL	SHUNXU_CLOSE2 
		 
		 
		BSF		LAG_FA,2 
;____________________________ 
		BTFSC	LAG_FA,1 
		GOTO	GO2 
;======================================== 
		 
		BCF		T2LED 
		NOP	 
		NOP 
		BCF		FA2														;SHOU_DONG 
		NOP		 
		NOP 
GO2 
		CLRF	BUF1 
		CLRF	BUF2		;关掉湿度显示 
		CALL	Z3SHI2	 
		 
		CLRF	BUF1 
		CLRF	BUF2 
		CLRF	BUF3		;关掉上下限显示 
		CLRF	BUF4 
		CALL	Z2 
		NOP 
		NOP 
	 
		BCF		FLAG_PENWU,1								;SHOU_DONG 
		CALL	BANG_PAN 
;_____________________;; 
 
		RETURN 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
FA1_FA2 
 
SIYANG01 
		MOVLW	.9 
		MOVWF	JISU 
YAN2S1 
		CALL	DELAY200MS 
		CALL	DELAY200MS 
		CALL	CAI_WEN_YA 
		CALL	DELAY200MS 
		CALL	DELAY200MS 
		DECFSZ	JISU,F 
		GOTO	YAN2S1 
		;CLRF	LAG_FA	;不能在在这清,不然会影响!!!也就是在放压时也不能清,别的时候保持原状态 
		RETURN 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
CLEAR_1 
		CLRF	BUF1 
		CLRF	BUF2 
		CLRF	BUF3 
		CLRF	BUF4 
		CALL	Z1			;QING 上限,清空!灭. 
		CALL	Z2			;QING 下限,清空!灭. 
		CALL	Z3SHI1		;清所有七段显示码,清空!灭. 
		CALL	Z3SHI2		;清湿度2,灭. 
		CALL	Z4			;清空水温和压力,灭. 
		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,GIE 
		BCF		INTCON,TOIF 
		;MOVLW		00H 
		;MOVWF		TMR0 
		 
		 
;——————————————————————————	 
		CLRF	LAG_KAIGUAN 
		CLRF	FANGYA 
		CLRF	SIJI 
		CLRF    LAG 
		CLRF	LAG2 
		CLRF	FBIAO 
		CLRF	SZDF 
		CLRF	TWEN_F 
		CLRF	FLAG_PENWU 
		CLRF	T1_F 
		CLRF	T2_F 
		CLRF	LAG_FA 
		BSF		LAG_FA,1 
		BSF		LAG_FA,2 
		 
		MOVLW	.1 
		MOVWF	ADCNT 
 
		CLRF	MS 
		CLRF	MS+1 
		CLRF	MS50 
		CLRF	SECOND 
		;CLRF	MINUTE 
;——————————————————————————			 
		BCF		STATUS,5 
		MOVLW	B'11111111'		;全为按键接口!	 
		BSF		STATUS,5 
		MOVWF	TRISB 
		BCF		STATUS,5 
	 
;——————————————————————————		 
		NOP 
		NOP 
		 
		MOVLW	B'00000000'			 
		BSF		STATUS,5 
		MOVWF	TRISC 
		;BCF		STATUS,5 
		CLRF    RC 
		 
;——————————————————————————			 
 
		 
		 
		MOVLW	B'00000000'			 
		BSF		STATUS,5 
		MOVWF	TRISD 
		BCF		STATUS,5 
		CLRF    RD 
;——————————————————————————	 
		NOP 
		BANKSEL	ADCON1 
		MOVLW	B'010' 
		MOVWF	ADCON1			;A口全为模拟口,E口全为数字口 
		 
		MOVLW	B'010' 
		BSF		STATUS,5			 
		MOVWF	TRISE 
		BCF		STATUS,5 
;——————————————————————————			 
		 
		MOVLW	B'11111111'			 
		BSF		STATUS,5 
		MOVWF	TRISA 
		BCF		STATUS,5 
;——————————————————————————					 
 
 
		 
	 
		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 
 
		CLRF	FBIAO		;CLER 缺水标志位.为加水重新启动做准备@@@@%^&*()~~~~~~~~~~~~ 
 
;——————————————————————————	 
			;下面等待启动键!电源键.AND 启动识别码!!! 
;——————————————————————————	 
 
;========================================= 
;		动识别码!!! 
;========================================= 
 
	CALL	SHIBIEMA_R 
	MOVLW	.79 
	BANKSEL	SHIBIEMA 
	XORWF	SHIBIEMA,W 
	SKPZ 
	GOTO	$ 
 
;======================================== 
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_LED 
		NOP 
		NOP 
		NOP 
		 
		 
		 
;——————————————————————————	 
		CALL	ROMR		;读ROM数据. 
;——————————————————————————	 
				 
		MOVF	BUF,W 
		MOVWF	BUF_B 
		MOVF	ZUF,W 
		MOVWF	ZUF_B 
 
		MOVF	BMAX,W 
		MOVWF	BMAX_B 
		MOVF	BMIN,W 
		MOVWF	BMIN_B 
 
		MOVLW	.35 
		MOVWF	YANSHI 
		 
YAN		 
		CALL	DELAY200MS 
		DECFSZ	YANSHI,1 
		GOTO	YAN 
	 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%		 
;_________________________ 
 
;		S/Z TEST??? 
;_________________________ 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
ZIDONG 
		 
 
 
		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 
 
		;CALL	KEYSCAN 
		;COMF	VALUE,0 
		;BTFSC	STATUS,2	;等待键放! 
		;GOTO	FANG_0A 
		;CALL	TRANSLATE 
		;MOVF	FSR,0 
		;XORLW	00H			;0   TO	 POWER 
		;BTFSC	STATUS,2 
		;GOTO	DENG_0A 
		;GOTO	FANG_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			;查询ZUF和BUF有无变化, 
		 
	 
;_________________________ 
 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	SZD_NO 
		CALL	DEL100MS 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2		;检测手自动 
		GOTO	SZD_NO	 
		CALL	TRANSLATE 
		 
		MOVF	FSR,0 
		XORLW	01H			; 1   TO	 SZDONG 
		BTFSS	STATUS,2 
		GOTO	SZD_NO 
		GOTO	SZD_YES 
 
SZD_YES 
;___________________ 
 
		MOVLW	.1 
		ADDWF	SZDF 
;___________________ 
 
SZD_L 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2	;等待键放! 
		GOTO	SZD_NO		;键放! 
		CALL	TRANSLATE 
		MOVF	FSR,0 
		XORLW	01H			; 1   TO	 SZDONG 
		BTFSC	STATUS,2 
		GOTO	SZD_L		;等待键放! 
		GOTO	SZD_NO		;键放! 
		 
 
SZD_NO 
		BTFSC	SZDF,0 
		GOTO	SHOUDONG 
		GOTO	ZIDONG0 
;_________________________ 
 
		;下面进入自动状态! 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%		 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
		;首先检测是否缺水? 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%		 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%		 
ZIDONG0 
 
 
		bsf		SZLED 
		CALL	TESTKEY		;按键扫描 
		CALL	T_SHUIWEI	;首先检测是否缺水?子程序中停.置FBIAO 
		 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%		 
 
        CALL	TIAOWENPAN	;子程序中检测了缺水标志位FBIAO 
		 
;*************************************** 
		 
	 
		CALL	QU12_ZI		;1区和2区的判断>,	检测了缺水标志位FBIAO 
		 
 
 
		CALL    CAIWHOLE		;采集并且显示水温和压力 
		GOTO	ZIDONG 
 
;***************************************		 
 
 
				 
;##################################&&&&&&&&&&&$$$$$$$$$@@@@@@@@@@@@@@@!!!!!!!!!!!!!		 
;##################################&&&&&&&&&&&$$$$$$$$$@@@@@@@@@@@@@@@!!!!!!!!!!!!!	 
 
;--------------------------手动状态----------- 
	 
;##################################&&&&&&&&&&&$$$$$$$$$@@@@@@@@@@@@@@@!!!!!!!!!!!!!	 
SHOUDONG 
 
		 
		MOVLW	.180		;本程序设置20天 
		XORWF	TIAN,W 
		;MOVLW	.5	;本程序设置2MINUTE 
		;XORWF	MINUTE,W 
		SKPNZ 
		BSF		SIJI,0 
		;——————————————————————————	 
 
		BTFSS	SIJI,0 
		GOTO	WORK_2 
		BCF		INTCON,TOIE		;定时器停止运行(实际停止中断,时间积存器停止自加) 
		BCF		INTCON,GIE 
		CALL	CLEAR_1 
		CALL	SERVE 
		GOTO	$				;进入死循环 
 
WORK_2 
 
;_________________________ 
 
      ;电源按键检测 
;_________________________ 
		CALL	INITIAL 
 
		MOVLW	.12 
		MOVWF	SHIJIAN 
 
		;——————————————————————————	 
XUN_02 
 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	SHOWCLOUD 
		CALL	DEL100MS 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	SHOWCLOUD	 
		CALL	TRANSLATE 
		 
		MOVF	FSR,0 
		XORLW	00H			;0   TO	 POWER 
		BTFSS	STATUS,2 
		GOTO	SHOWCLOUD 
 
		CALL	DELAY200MS 
		DECFSZ	SHIJIAN,1 
		GOTO	XUN_02 
 
 
 
DENG_0B 
 
		;CALL	KEYSCAN 
		;COMF	VALUE,0 
		;BTFSC	STATUS,2	;等待键放! 
		;GOTO	FANG_0B 
		;CALL	TRANSLATE 
		;MOVF	FSR,0 
		;XORLW	00H			;0   TO	 POWER 
		;BTFSC	STATUS,2 
		;GOTO	DENG_0B 
		;GOTO	FANG_0B 
 
 
 
FANG_0B 
		CALL	CLEAR_1	 
		MOVLW	.16 
		MOVWF	SHIJIAN	 
FANG_0BB		 
		CALL	DELAY200MS 
		DECFSZ	SHIJIAN,1 
		GOTO	FANG_0BB 
 
 
		GOTO	DIANYUAN 
 
;_________________________ 
 
 
 
SHOWCLOUD 
 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	SZD_NO2 
		CALL	DEL100MS 
		CALL	KEYSCAN			;检测手自动 
		COMF	VALUE,0 
		BTFSC	STATUS,2 
		GOTO	SZD_NO2	 
		CALL	TRANSLATE 
		 
		MOVF	FSR,0 
		XORLW	01H			; 1   TO	 SZDONG 
		BTFSS	STATUS,2 
		GOTO	SZD_NO2 
		GOTO	SZD_YES2 
 
SZD_YES2 
;____________ 
 
		MOVLW	.1 
		ADDWF	SZDF 
;____________ 
 
SZD_L2 
		CALL	KEYSCAN 
		COMF	VALUE,0 
		BTFSC	STATUS,2	;等待键放! 
		GOTO	SZD_NO2		;键放! 
		CALL	TRANSLATE 
		MOVF	FSR,0 
		XORLW	01H			; 1   TO	 SZDONG 
		BTFSC	STATUS,2 
		GOTO	SZD_L2		;等待键放! 
		GOTO	SZD_NO2		;键放! 
		 
SZD_NO2 
 
		BTFSC	SZDF,0 
		GOTO	SHOUDONG0 
		GOTO	BEGINZI 
 
;_________________________ 
 
 
 
;%%%%%%%%%%%%%%%%%%%% 
;由手动向自动跳时要与下限进行判断 
;%%%%%%%%%%%%%%%%%%%% 
BEGINZI 
 
		CALL	STOZ 
		GOTO	ZIDONG 
 
;%%%%%%%%%%%%%%%%%%%% 
 
 
SHOUDONG0 
		 
;_________________________ 
		bcf		SZLED 
		CALL	SERVE			;THIS TWO 同时有或同时删掉 
		CALL	TESTKEY			;按键扫描	 
;_________________________ 
 
		 
			 
		CALL	T_SHUIWEI		;首先检测是否缺水?子程序中停.置FBIAO 
        
		CALL	TIAOWENPAN		;子程序中检测了缺水标志位FBIAO 
 
		CALL    CAIWHOLE		;采集并且显示水温和压力 
		CALL	QU12_SHOU		;检测了缺水标志位FBIAO 
		GOTO	SHOUDONG 
 
		 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%		 
		;SHOU TO ZI 
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
 
 
 
STOZ 
 
		bsf		SZLED 
		NOP 
		MOVLW	B'01011001' 
		MOVWF	ADCON0			;三、A3口,设置时钟源8TOSC,,启动A/D转换模块 
		MOVLW	.99 
		MOVWF	CHUNG 
  		CALL	ADCAI		       ;在最后一个把CNTFLAG的0位置1!!!! 
		MOVF	SHANGL,0 
		MOVWF	MUF 
		MOVWF   SHIBUF 
 
 
		MOVF	BUF,W				;ZUF与BUF进行比较, 
		SUBWF	ZUF,W 
		 
		BTFSC	STATUS,0 
		GOTO	ZUFLARGV 
		GOTO	BUFLARGV												;STOZ====== 
 
ZUFLARGV 
		MOVF    BUF,W 
		SUBWF	SHIBUF,W 
		BTFSC   STATUS,0 
		GOTO	GUANDIAO 
		GOTO	BYE1 
BUFLARGV 
		MOVF    ZUF,W 
		SUBWF	SHIBUF,W 
		BTFSC   STATUS,0 
		GOTO	GUANDIAO 
		GOTO	BYE1 
 
GUANDIAO 
		;========================= 
		;CALL	SHUNXU_CLOSE1 
		;========================= 
	    BSF		LAG_FA,1 
		;____________________________ 
 
			BTFSC	LAG_FA,2		;判断2区有无关掉 
			GOTO	ZZZZ 
		;____________________________ 
		BCF	    FA1												;STOZ====== 
		NOP 
		NOP 
ZZZZ	 
		NOP 
		NOP 
		BCF		FLAG_PENWU,0 
 
 
;*************	 
BYE1 
		 
 
		MOVLW	B'01010001' 
		MOVWF	ADCON0			;三、A2口,设置时钟源8TOSC,,启动A/D转换模块 
  		MOVLW	.99 
		MOVWF	CHUNG 
		CALL	ADCAI 
		MOVF	SHANGL,0 
		MOVWF	MUF 
		MOVWF	SHIBUF2 
 
		MOVF	BMAX,W				;BMAX与BMIN进行比较, 
		SUBWF	BMIN,W 
		 
		BTFSC	STATUS,0 
		GOTO	ZUFLARGV2 
		GOTO	BUFLARGV2 
 
ZUFLARGV2 
		MOVF    BMAX,W														;STOZ====== 
		SUBWF	SHIBUF2,W 
		BTFSC   STATUS,0 
		GOTO	GUANDIAO2 
		GOTO	BYE2 
BUFLARGV2 
		MOVF    BMIN,W 
		SUBWF	SHIBUF2,W 
		BTFSC   STATUS,0 
		GOTO	GUANDIAO2 
		GOTO	BYE2 
 
GUANDIAO2 
		;========================= 
		;CALL	SHUNXU_CLOSE2 
		;========================= 
		BSF		LAG_FA,2 
		;____________________________ 
 
			BTFSC	LAG_FA,1 
			GOTO	CCCC 
		;____________________________ 
		 
		BCF	    FA2 
CCCC 
		NOP 
		NOP 
		NOP 
		BCF		FLAG_PENWU,1 
	     
BYE2 
		CALL	BANG_PAN 
	 
		RETURN 
 
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
;			湿度1比较检测!!!! 
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
 
		 
QU1PAN 
 
		BTFSC	FBIAO,0 
		GOTO	BACKSHI1 
 
		MOVF	SHIBUF,W 
		MOVWF	BIJIAO 
		MOVF	BUF,W				;ZUF与BUF进行比较, 
		SUBWF	ZUF,W 
		BTFSC	STATUS,2 
		GOTO	ZUFEQUAL 
		BTFSC	STATUS,0 
		GOTO	ZUFLARG 
		GOTO	BUFLARG 
		 
		 
		 
ZUFEQUAL 
		 
		MOVF	SHIBUF,0 
		MOVWF	BIJIAO 
												;			湿度1比较检测!!!! 
 
		MOVF	ZUF,W 
		 
		SUBWF	BIJIAO,W 
		BTFSC	STATUS,2 
		GOTO	EQUAL 
		BTFSC	STATUS,0 
		GOTO	LARG 
		GOTO	SMALL 
				 
		 
		 
ZUFLARG	 
		 
		MOVF	SHIBUF,0						;			湿度1比较检测!!!! 
		MOVWF	BIJIAO 
 
		 
		MOVF	ZUF,W 
		SUBWF	BIJIAO,W 
		BTFSC	STATUS,2 
		GOTO	EQUAL 
		BTFSC	STATUS,0 
		GOTO	LARG 
		 
		 
		MOVF	BIJIAO,W 
		SUBWF	BUF,W 
		BTFSC	STATUS,2 
		GOTO	SMALL 
		BTFSC	STATUS,0 
		GOTO	SMALL 
		 
		GOTO	BACKSHI1_BUDING		;当处于上下限之间时,必须建立标志位,见BACKSHI1_BUDING 
		 
BUFLARG	 
		 
		MOVF	SHIBUF,0 
		MOVWF	BIJIAO						;			湿度1比较检测!!!! 
 
 
		 
		MOVF	BUF,W 
		SUBWF	BIJIAO,W 
		BTFSC	STATUS,2 
		GOTO	EQUAL 
		BTFSC	STATUS,0 
		GOTO	LARG 
		 
		 
			 
		MOVF	BIJIAO,W 
		SUBWF	ZUF,W 
		BTFSC	STATUS,2 
		GOTO	SMALL 
		BTFSC	STATUS,0 
		GOTO	SMALL 
		 
		GOTO	BACKSHI1_BUDING		;当处于上下限之间时,必须建立标志位,见BACKSHI1_BUDING 
		 
		 
		 
												;			湿度1比较检测!!!! 
		 
LARG		 
EQUAL	 
			;CALL	SHUNXU_CLOSE1 
			;=================================== 
	       	BSF		LAG_FA,1 
			;____________________________ 
			BTFSC	LAG_FA,2 
			GOTO	VV 
			;=================================== 
			BCF		FA1 
	      	NOP 
	       	NOP 
VV 
			;????????????????????????? 
			;BTFSS	LAG_KAIGUAN,2 
			;GOTO	SSS	 
			;BCF		FA1 
	      	;NOP 
	       	;NOP 
			;????????????????????????? 
SSS			 
			BCF		FLAG_PENWU,0				;			湿度1比较检测!!!! 
					        
			GOTO	BACKSHI1 
		 
		 
		 
		 
SMALL		 
		;===================================== 
		;一区开的情况下 
		BCF		LAG_FA,1 
		;===================================== 
 
		 
		 
		BSF		FLAG_PENWU,0 
		NOP 
		  
	  
		NOP 
		BSF	   FA1	 
		NOP 
		NOP 
		;BSF		T1LED	;change 
		NOP											;			湿度1比较检测!!!! 
		NOP 
		BSF		PENWU 
		NOP 
		NOP 
		BSF		FANGYA,0 
		 
			 
		GOTO	BACKSHI1 
 
BACKSHI1_BUDING 
	 
BACKSHI1 
		RETURN 
 
;______________________________________ 
 
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
;湿度2比较检测!!!! 
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 
QU2PAN 
 
		BTFSC	FBIAO,0 
		GOTO	BACKSHI2 
		 
		MOVF	SHIBUF2,W 
		MOVWF	BIJIAO 
		MOVF	BMAX,W				;BMAX与BMIN进行比较, 
		SUBWF	BMIN,W 
		BTFSC	STATUS,2 
		GOTO	ZUFEQUAL1 
		BTFSC	STATUS,0 
		GOTO	ZUFLARG1 
		GOTO	BUFLARG1 
		 
		 
		 
ZUFEQUAL1 
		 
		MOVF	SHIBUF2,0 
		MOVWF	BIJIAO 
 
 
		MOVF	BMIN,W 
		 
		SUBWF	BIJIAO,W 
		BTFSC	STATUS,2 
		GOTO	EQUAL1 
		BTFSC	STATUS,0 
		GOTO	LARG1 
		GOTO	SMALL1 
				 
		 
		 
ZUFLARG1 
		 
		MOVF	SHIBUF2,0 
		MOVWF	BIJIAO 
 
		 
		MOVF	BMIN,W 
		SUBWF	BIJIAO,W 
		BTFSC	STATUS,2 
		GOTO	EQUAL1 
		BTFSC	STATUS,0 
		GOTO	LARG1 
		 
		 
		MOVF	BIJIAO,W 
		SUBWF	BMAX,W 
		BTFSC	STATUS,2 
		GOTO	SMALL1 
		BTFSC	STATUS,0 
		GOTO	SMALL1 
		 
		GOTO	BACKSHI2_BUDING 
		 
BUFLARG1	 
		 
		MOVF	SHIBUF2,0 
		MOVWF	BIJIAO 
 
 
		 
		MOVF	BMAX,W 
		SUBWF	BIJIAO,W 
		BTFSC	STATUS,2 
		GOTO	EQUAL1 
		BTFSC	STATUS,0 
		GOTO	LARG1 
		 
		 
			 
		MOVF	BIJIAO,W 
		SUBWF	BMIN,W 
		BTFSC	STATUS,2 
		GOTO	SMALL1 
		BTFSC	STATUS,0 
		GOTO	SMALL1 
		 
		GOTO	BACKSHI2_BUDING 
		 
		 
	 
	 
		 
		 
		 
EQUAL1	 
LARG1	 
			;CALL	SHUNXU_CLOSE2 
			;=================================== 
			BSF		LAG_FA,2 
			;____________________________ 
			BTFSC	LAG_FA,1 
			GOTO	VVVV 
			;=================================== 
			BCF		FA2 
	      	NOP 
	       	NOP 
 
VVVV 
			;????????????????????????? 
			;BTFSS	LAG_KAIGUAN,1 
			;GOTO	UUU	 
			;BCF		FA1 
	      	;NOP 
	       ;NOP 
			;????????????????????????? 
UUU 
			BCF		FLAG_PENWU,1 
			NOP 
			NOP 
			GOTO	BACKSHI2 
		 
		 
		 
		 
SMALL1		 
	;===================================	 
		BCF		LAG_FA,2 
	;=================================== 
		BSF		FLAG_PENWU,1 
		NOP 
		NOP  
		  
		 
		BSF	   FA2	 
		NOP 
		NOP 
		;BSF		T2LED 
		NOP 
		NOP 
		BSF		PENWU 
		NOP 
		NOP 
		BSF		FANGYA,0 
			 
		GOTO	BACKSHI2 
 
BACKSHI2_BUDING 
	 
BACKSHI2 
		RETURN 
 
;===================================== 
		;一区关的情况下检测2区有无关闭,然后做出判断 
;===================================== 
;SHUNXU_CLOSE1 
;=============================== 
		;BTFSS	LAG_FA,2 
		;GOTO	OPEN_2 
		;BCF		LAG_FA,7	;2	XIAN CLOSE 
		;RETURN 
		 
;OPEN_2						 
	;	BSF		LAG_FA,7	;2 HOU CLOSE 
		;RETURN 
 
 
;====================================================== 
;===================================== 
		;2区关的情况下检测1区有无关闭,然后做出判断 
;===================================== 
;SHUNXU_CLOSE2 
;=============================== 
		;BTFSS	LAG_FA,1 
		;GOTO	OPEN_1 
		;BSF		LAG_FA,7	;2 	HOU CLOSE 
		;RETURN 
		 
;OPEN_1 
		;BCF		LAG_FA,7	;2  XIAN CLOSE 
		;RETURN 
;##################################&&&&&&&&&&&$$$$$$$$$@@@@@@@@@@@@@@@!!!!!!!!!!!!!	 
 
	 
 
CHENGJI 
		MOVLW	.51 
		SUBWF	ADRES,1 
		BTFSS	STATUS,0 
		CLRF	ADRES 
		CLRF	H_B 
		CLRF	L_B 
		 
		MOVLW	8 
		MOVWF	BIT 
		MOVF	CHUNG,W 
		;MOVLW	.99 
		BCF	STATUS,0 
CLOOP	 
		 
		 
		 
		RRF	ADRES	 
		BTFSC	STATUS,0 
		ADDWF	H_B 
		RRF		H_B 
		RRF		L_B 
		DECFSZ	BIT 
		GOTO	CLOOP 
	 
		 
CHU		 
 
		MOVLW	00H 
		MOVWF	CHUH 
		MOVLW	.204 
		MOVWF	CHUL 
CHUZI		CLRF	SHANGH 
		CLRF	SHANGL 
		 
		CALL	DIVYIWEI 
		CLRF	YUH 
		CLRF	YUL 
		 
DIVLOOP		BCF		STATUS,0 
		RLF		P1L 
		RLF		P1H 
		RLF		YUL 
		RLF		YUH 
		MOVF	CHUH,W 
		SUBWF	YUH	,W 
		BTFSS	STATUS,2 
		GOTO	ASP 
		MOVF	CHUL,W 
		SUBWF	YUL,W 
		 
ASP		BTFSS	STATUS,0 
		GOTO	PUP 
		MOVF	CHUL,W 
		SUBWF	YUL 
		BTFSS	STATUS,0 
		DECF	YUH 
		MOVF	CHUH,W 
		SUBWF	YUH 
		BSF		STATUS,0 
PUP		RLF		L_B 
		RLF		H_B 
		DECFSZ	BIT 
		GOTO	DIVLOOP 
		MOVF	H_B,W 
		MOVWF	SHANGH 
		MOVF	L_B,W 
    		MOVWF	SHANGL 
		RETLW	0 
		 
		 
DIVYIWEI 
			MOVLW	.16 
			MOVWF	BIT 
			MOVF	H_B,W 
			MOVWF	P1H 
			MOVF	L_B,W 
			MOVWF	P1L 
			CLRF	H_B 
			CLRF	L_B 
			RETLW	0			 
		 
 
	 
		 
		 
CHU5		 
 
		MOVLW	00H 
		MOVWF	CHUH 
		MOVLW	.11 
		MOVWF	CHUL 
		MOVF	2FH,W 
		MOVWF	H_B 
		MOVF	2EH,W 
		MOVWF	L_B 
		CALL	CHUZI		 
		RETURN 
 
		 
		 
		 
		 
;##########$$$$$$$$$$$$$@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%		 
 
WRBYTES 
 
 	 
 		CLRF	FLAG 
 		MOVWF	FSR				;源数据地址送F4 
 		 
 		MOVLW	0A0H		 
 		MOVWF	TXBUF			;从机器地址送TXBUF 
 		 
 		CALL	BSTART			;发送开始条件 
 		CALL	TX				;发送从机器地址 
 		 
 		MOVF	ADDR,W			;发送要写入的24L01的起始地址 
 		MOVWF	TXBUF 
 		CALL 	TX 
 		 
WRLOOP 
		 
		MOVF	0,W 
		MOVWF	TXBUF			;把主机的数据先放到TXBUF中去 
		CALL	TX				;把一个字节数据写到24L01 
		 
		INCF	FSR,1 
		DECFSZ	NUMBER,	1		;已写入N个字节 
		 
		GOTO	WRLOOP 
		CALL	BSTOP 
		RETLW	0 
	 
	 
	;********************************** 
	 
	 
	 
RDBYTES 
 
 
		MOVWF	FSR				;目标数据地址送FSR 
	 
		MOVLW	0A0H 
		MOVWF	TXBUF			;从设备地址送TXBUF 
	 
		CALL	BSTART			;发送开始条件 
	 
		CALL	TX				;发送从机器地址 
	 
		MOVF	ADDR,W			;发送要读入数据的起始地址 
		MOVWF	TXBUF	 
		CALL	TX 
	 
		CALL	BSTART			;发送开始命令 
	 
	 
		MOVLW	0A1H 
		MOVWF	TXBUF 
		CALL	TX				;发送读控制信号 
	 
RDLOOP 
		 
		CALL	RX			 
		MOVF	RXBUF,W			;从2401中读出一字节给RXBUF 
		 
		MOVWF	0			;再送给主机的寄存器 
		 
		INCF	FSR,1 
		DECFSZ	NUMBER	,1		;已读完N个字节 
		GOTO	LOWACK					;否,发出应答信号 
		 
		BSF    		STATUS,RP0 
		MOVLW		B'00000000' 
		MOVWF  		TRISD    
		BCF    		STATUS,RP0 
              	NOP 
		BSF		RD,SDA 
		BCF		RD,SCL 
		NOP 
		BSF		RD,SCL 
		 
		CALL		BSTOP 
		RETLW		0 
	 
	 
LOWACK 
 
        BSF    		STATUS,RP0 
		MOVLW		B'00000000' 
		MOVWF  		TRISD    
		BCF    		STATUS,RP0 
		NOP 
		BCF		RD,SDA			;SDA输出低电瓶,发出应答信号 
		NOP 
		BSF		RD,SCL 
		NOP 
		BCF		RD,SCL 
		GOTO		RDLOOP			;读下一个字节 
	 
	 
		;*************开始********************* 
	 
	 
	 
BSTART 
		 
	 
		BSF    STATUS,RP0 
		MOVLW	B'00000000' 
		MOVWF  TRISD    
		BCF    STATUS,RP0 
	    	NOP 
	    	NOP 
	    	NOP 
	    	NOP 
		NOP 
		 
		BSF		RD,SDA			; 
		BSF		RD,SCL			;同为高电平 
		NOP 
		NOP 
		NOP 
		NOP 
		BCF		RD,SDA			;在SCL=1时产生下降沿 
		NOP 
		NOP 
		NOP 
		NOP 
		BCF		RD,SCL 
		RETLW	0 
		 
	 
	;*************  写一个字节数据  ********************* 
		 
	 
		 
TX 
 
		MOVLW	08H 
		MOVWF	CNT				;一字节8 
		 
		 
TXLP 
 
		BCF		FLAG,0 
		BTFSC		TXBUF,7 
		BSF		FLAG,0 
 
        	BSF    		STATUS,RP0 
		MOVLW		B'00000000' 
		MOVWF  		TRISD    
		BCF    		STATUS,RP0 
              	NOP 
		 
		BTFSS		TXBUF,7			;从第七位开始送数据,从高到低. 
		GOTO		TX0 
       		BSF		RD,SDA 
		GOTO		TX1 
		 
TX0		BCF		RD,SDA			;根据缓冲器的第7位去写RB,SDA 
 
 
TX1		NOP 
        	BCF		RD,SCL 
		NOP 
		NOP 
		NOP 
              	NOP 
              	NOP 
		BSF		RD,SCL			;SCL产生一上升沿,发送一位数据 
		NOP 
		NOP 
		BCF		RD,SCL 
		 
		RLF		TXBUF,1 
		 
		DECFSZ		CNT  ,1			;发送8次???一个字节是否发送完?? 
		GOTO		TXLP			;否,发送下一位. 
		BSF    		STATUS,RP0 
		MOVLW		B'00001000'		;RB7变输入态. 
 
		MOVWF  		TRISD    
		BCF    		STATUS,RP0 
        	NOP 
	 
ACK		NOP 
		BCF		RD,SCL 
		NOP 
		NOP 
		NOP 
		BSF		RD,SCL 
		NOP 
		NOP 
		BTFSC		RD,SDA			;检测是否受到从机发来响应信号. 
		GOTO		ACK 
		 
		BCF		RD,SCL 
		RETLW	0 
		 
		 
 
		 
		 
		 
	;**************结束********************	 
		 
		 
BSTOP   	 
 
 
           
		 
		BSF    		STATUS,RP0 
		MOVLW		B'00000000'; 
 
		MOVWF  		TRISD    
		BCF    		STATUS,RP0 
		 
         	NOP 
               
		BCF		RD,SDA 
		BSF		RD,SCL 
		NOP 
		NOP 
		NOP 
	 
               
		BSF		RD,SDA		;SDA产生上升沿,操作结束. 
		NOP 
		NOP 
		NOP 
		NOP 
		NOP 
		BCF		RD,SCL 
		NOP 
		RETLW		0 
		 
	 
	 
   ;**************读一个字节数据********************	 
	 
	 
		 
RX			 
              
		MOVLW		08H 
		MOVWF		CNT				;共8位. 
		 
		CLRF		RXBUF 
		BSF    		STATUS,RP0 
		MOVLW		B'00001000' 
 
		MOVWF  		TRISD    
		BCF    		STATUS,RP0 
              	NOP 
		 
RXLP 
		BSF		RD,SCL			;**&&&&&&&&& 
		BCF		STATUS,0 
		NOP 
		NOP 
		NOP 
              	NOP 
              	NOP 
		 
		BTFSC		RD,SDA 
		BSF		STATUS,0		;否,1 to C ,是,C中仍为0 
		 
		RLF		RXBUF,1			;C移入RXBUF. 
		BCF		RD,SCL 
		DECFSZ		CNT,1 
		GOTO		RXLP			;一个字节未完,继续. 
		RETLW		0 
		 
		 
		 
;********************************** 
ROMW 
		MOVF	BUF,W 
		MOVWF	BUFFER1 
		 
		MOVF	ZUF,W 
		MOVWF	BUFFER1+1 
 
		MOVF	BMAX,W 
		MOVWF	BUFFER1+2 
 
		MOVF	BMIN,W 
		MOVWF	BUFFER1+3 
		 
	 
 
 
 
 
		MOVLW	4		;将BUFFER1开始的四字节数据写入24C01的10H-13H 
		MOVWF	NUMBER		;buffer1为40H,BUFFER+3为43H 
		MOVLW	10H		;ROM中的地址 
		;MOVLW	22H 
		MOVWF	ADDR 
		MOVLW	BUFFER1 
		CALL	WRBYTES 
		RETLW	0 
 
 
 
      
      
     		 
 
 
 
;************************************* 
	 
	 
ROMR    	 
		MOVLW	4		;将24C01的10H-13H存放的数据读入BUFFER1开始四字节中 
		MOVWF	NUMBER 
		MOVLW	10H 
		;MOVLW	22H 
		MOVWF	ADDR 
		MOVLW	BUFFER1 
		CALL	RDBYTES 
		 
 
		MOVF	BUFFER1,W 
		MOVWF	BUF 
 
		MOVF	BUFFER1+1,W 
		MOVWF	ZUF 
 
		MOVF	BUFFER1+2,W 
		MOVWF	BMAX 
		 
		MOVF	BUFFER1+3,W 
		MOVWF	BMIN 
 
		RETLW	0 
 
 
 
;&&&&&$$$$$$$$$$$$$$$$$$$	 
SERVE		 
			MOVF	BUF,W 
			SUBWF	BUF_B,0 
			BTFSS	STATUS,2 
			GOTO	FUBUF 
			 
			 
			MOVF	ZUF,W 
			SUBWF	ZUF_B,0 
			BTFSS	STATUS,2 
			GOTO	FUZUF 
			 
		 
			MOVF	BMAX,W 
			SUBWF	BMAX_B,0 
			BTFSS	STATUS,2 
			GOTO	XIE1 
			 
			MOVF	BMIN,W 
			SUBWF	BMIN_B,0 
			BTFSS	STATUS,2 
			GOTO	XIE2 
			 
 
			MOVF	HOUR,W 
			SUBWF	HOUR_BUF,0 
			BTFSS	STATUS,2 
			GOTO	XIE_HOUR 
 
 
			MOVF	TIAN,W 
			SUBWF	TIAN_BUF,0 
			BTFSS	STATUS,2 
			GOTO	XIE_TIAN 
 
 
			;MOVF	MINUTE,W		;分钟不保存 
			;SUBWF	MINUTE_BUF,0 
			;BTFSS	STATUS,2 
			;GOTO	XIE_MINUTE 
 
 
			RETLW	0 
		 
FUBUF		 
			MOVF	BUF,W 
			MOVWF	BUF_B 
			CALL	ROMW 
			RETLW	0 
			 
FUZUF		 
			MOVF	ZUF,W 
			MOVWF	ZUF_B 
			CALL	ROMW 
			RETLW	0 
 
XIE1	 
			MOVF	BMAX,W 
			MOVWF	BMAX_B 
			CALL	ROMW 
			RETLW	0 
 
XIE2	 
			MOVF	BMIN,W 
			MOVWF	BMIN_B 
			CALL	ROMW 
			RETLW	0 
 
 
 
XIE_HOUR 
 
			MOVF	HOUR,W 
			MOVWF	HOUR_BUF 
			CALL	ROMW_TIME 
			RETLW	0 
 
XIE_TIAN 
			MOVF	TIAN,W 
			MOVWF	TIAN_BUF 
			CALL	ROMW_TIME 
			RETLW	0 
 
;XIE_MINUTE 
			;MOVF	MINUTE,W 
			;MOVWF	MINUTE_BUF 
			;CALL	ROMW_TIME 
			;RETLW 0 
		 
 
 
;_________________________________ 
ROMW_TIME 
 
		MOVLW	2		;分钟不保存;将TIAN开始的2字节数据写入24C01的20H-21H 
		MOVWF	NUMBER		; 
		MOVLW	25H		;ROM中的地址 
		 
		MOVWF	ADDR 
		MOVLW	TIAN 
		CALL	WRBYTES 
		RETLW	0 
					 
 
 
;_________________________________	 
ROMR_TIME    	 
		MOVLW	2		;将24C01的20H-21H存放的数据读入TIAN开始2字节中 
		MOVWF	NUMBER 
		MOVLW	25H 
		MOVWF	ADDR 
		MOVLW	TIAN 
		CALL	RDBYTES 
		 
		MOVF	TIAN,W 
		MOVWF	TIAN_BUF 
 
		MOVF	HOUR,W 
		MOVWF	HOUR_BUF 
 
		;MOVF	MINUTE,W 
		;MOVWF	MINUTE_BUF 
	 
 
 
		RETLW	0 
 
 
 
 
 
 
 
 
;================================== 
 
SHIBIEMA_R 
 
	   	 
		MOVLW	1		;将24C01的50H存放的数据读入BUFFER1开始1字节中 
		MOVWF	NUMBER 
		MOVLW	50H 
	 
		MOVWF	ADDR 
		MOVLW	BUFFER1 
		CALL	RDBYTES 
		 
 
		MOVF	BUFFER1,W 
 
		BANKSEL	SHIBIEMA 
		MOVWF	SHIBIEMA 
 
			RETLW	0 
 
		 
;_________________________________ 
		FILL (NOP),YUAN-$ 
 
			ORG	0FFEH 
 
YUAN 
 
			PAGESEL	ZIDONG 
			GOTO	ZIDONG 
			 
 
		 
 
	;********************************** 
 
 
	 
 
			END