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

📄 fan.a51

📁 fan control fan control
💻 A51
📖 第 1 页 / 共 2 页
字号:
       	 MOV R6,B
       	 MOV R7,A
ENDD:  	 RET
;********************************************************************
DS1820CRC_OK:			; EXTERN BIT DS1820CRC_OK(VOID);
		MOV	R5, #9	; 8+1 BYTE CRC
		MOV	R7, #0	; CLEAR CRC REGISTER
		MOV	DPTR, #DOWCRC_TABLE
		MOV	R0, #RAM
CRC:		
		MOV	A, @R0		; SCRATCHAD VALUE
		XRL	A, R7
		MOVC	A, @A+DPTR
		MOV	R7, A
		INC	R0
		DJNZ	R5, CRC
		JZ	OK
		CLR	CY
		RET
OK:	SETB	CY
		RET
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dowcrc_table:	DB	0, 94, 188, 226, 97, 63, 221, 131
		DB	194, 156, 126, 32, 163, 253, 31, 65
		DB	157, 195, 33, 127, 252, 162, 64, 30
		DB	95, 1, 227, 189, 62, 96, 130, 220
		DB	35, 125, 159, 193, 66, 28, 254, 160
		DB	225, 191, 93, 3, 128, 222, 60, 98
		DB	190, 224, 2, 92, 223, 129, 99, 61 
		DB	124, 34, 192, 158, 29, 67, 161, 255
		DB	70, 24, 250, 164, 39, 121, 155, 197 
		DB	132, 218, 56, 102, 229, 187, 89, 7
		DB	219, 133, 103, 57, 186, 228, 6, 88 
		DB	25, 71, 165, 251, 120, 38, 196, 154
		DB	101, 59, 217, 135, 4, 90, 184, 230 
		DB	167, 249, 27, 69, 198, 152, 122, 36
		DB	248, 166, 68, 26, 153, 199, 37, 123 
		DB	58, 100, 134, 216, 91, 5, 231, 185
		DB	140, 210, 48, 110, 237, 179, 81, 15 
		DB	78, 16, 242, 172, 47, 113, 147, 205
		DB	17, 79, 173, 243, 112, 46, 204, 146 
		DB	211, 141, 111, 49, 178, 236, 14, 80
		DB	175, 241, 19, 77, 206, 144, 114, 44 
		DB	109, 51, 209, 143, 12, 82, 176, 238
		DB	50, 108, 142, 208, 83, 13, 239, 177 
		DB	240, 174, 76, 18, 145, 207, 45, 115
		DB	202, 148, 118, 40, 171, 245, 23, 73 
		DB	8, 86, 180, 234, 105, 55, 213, 139
		DB	87, 9, 235, 181, 54, 104, 138, 212 
		DB	149, 203, 41, 119, 244, 170, 72, 22
		DB	233, 183, 85, 11, 136, 214, 52, 106 
		DB	43, 117, 151, 201, 74, 20, 246, 168
		DB	116, 42, 200, 150, 21, 75, 169, 247 
		DB	182, 232, 10, 84, 215, 137, 107, 53
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
;		SENSOR 1
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
; ********** TEPRE SUB **********
; TEMP MEMORY PRESENCE
; REG = R2
TEPRE:   JB     SENSOR1,$           ;PRESENCE (RX)
         JNB    SENSOR1,$
         MOV    R2,#8
         DJNZ   R2,$
         RET
; ********** TERES SUB **********
; TEMP MEMORY RESET
; REG = R2
TERES:   CLR    SENSOR1             ;RESET (TX)
         MOV    R2,#200           ;APP. 900 uS
TERES1:  NOP
         NOP
         DJNZ   R2,TERES1
         SETB   SENSOR1
         MOV    R2,#8
         DJNZ   R2,$
         RET
; ********** TECHK SUB **********
; TEMP MEMORY CHECK PRESENCE AT FIRST
; OUT = CY  0=NO 1=OK
; REG = R2,R3
TECHK:   MOV    R2,#8
TECHK1:  MOV    R3,#0
TECHK2:  JNB    SENSOR1,TECHK5      ;PRESENCE (RX)
         DJNZ   R3,TECHK2
         DJNZ   R2,TECHK1
         CLR    C
         RET
TECHK5:  JNB    SENSOR1,$
         MOV    R2,#8
         DJNZ   R2,$
         SETB   C
         RET
; ********************************************************
; TEMP MEMORY WRITE BYTE
; IN  = A
; REG = A,R2,R3
; ********************************************************
TEWB:    MOV    R3,#8             ;WRITE BYTE
TEWB1:   RRC    A
         JC     TEWB2
         CALL   TEW0
         SJMP   TEWB3
TEWB2:   CALL   TEW1
TEWB3:   DJNZ   R3,TEWB1
         RET

TEW0:    CLR    SENSOR1             ;WRITE 0
         MOV    R2,#15            ;65 uS
TEW01:   NOP
         NOP
         DJNZ   R2,TEW01
         SETB   SENSOR1
         NOP                      ;4 uS
         NOP
         NOP
         NOP
         RET

TEW1:    CLR    SENSOR1             ;WRITE 1
         NOP                      ;4 uS
         NOP
         NOP
         NOP
         SETB   SENSOR1
         MOV    R2,#15            ;65 uS
TEW11:   NOP
         NOP
         DJNZ   R2,TEW11
         RET
; ********** TERB SUB **********
; TEMP MEMORY READ BYTE
; OUT = A
; REG = A,R2,R3

TERB:    MOV    R3,#8             ;READ BYTE
TERB1:   CALL   TEBIT
         RRC    A
         DJNZ   R3,TERB1
         RET

TEBIT:   CLR    SENSOR1             ;READ BIT
         NOP
         NOP
         SETB   SENSOR1
         NOP
         NOP
         NOP
         NOP
         MOV    C,SENSOR1
         MOV    R2,#15             ;65 uS
TEBIT2:  NOP
         NOP
         DJNZ   R2,TEBIT2
         RET
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
; 	7 SEGMENT DISPLAY ROUTINE
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
DISP:
	MOV R2,SPED
	CJNE R2,#00H,AAS1
	CLR DIS_A
	CLR DIS_B
	CLR DIS_C
	CLR DIS_D
	CLR DIS_E
	CLR DIS_F
	SETB DIS_G
	RET
AAS1:	CJNE R2,#01H,AS2
	CLR DIS_B
	CLR DIS_C
	SETB DIS_A
	SETB DIS_D
	SETB DIS_E
	SETB DIS_F
	SETB DIS_G
	RET
AS2:	CJNE R2,#02H,AS3
	CLR DIS_A
	CLR DIS_B
	CLR DIS_D
	CLR DIS_E
	CLR DIS_G
	SETB DIS_C
	SETB DIS_F
	RET
AS3:	CJNE R2,#03H,AS4
	CLR DIS_A    
	CLR DIS_B
	CLR DIS_C
	CLR DIS_D
	CLR DIS_G
	SETB DIS_E
	SETB DIS_F
	RET
AS4:	CJNE R2,#04H,AS5
	CLR DIS_B
	CLR DIS_C
	CLR DIS_F
	CLR DIS_G
	SETB DIS_A
	SETB DIS_D
	SETB DIS_E
	RET
AS5:	CJNE R2,#05H,AS6
	CLR DIS_A
	CLR DIS_C
	CLR DIS_D
	CLR DIS_F
	CLR DIS_G
	SETB  DIS_B
	SETB DIS_E
	RET
AS6:	CJNE R2,#06H,AS7
	CLR DIS_A
	CLR DIS_C
	CLR DIS_D
	CLR DIS_E
	CLR DIS_F
	CLR DIS_G
	SETB DIS_B
	RET
AS7:	CJNE R2,#07H,AS8
	CLR DIS_A
	CLR DIS_B
	CLR DIS_C
	SETB DIS_D
	SETB DIS_E
	SETB DIS_F
	SETB DIS_G
	RET
AS8:	CJNE R2,#08H,AS9
	CLR DIS_A
	CLR DIS_B
	CLR DIS_C
	CLR DIS_D
	CLR DIS_E
	CLR DIS_F
	CLR DIS_G
	RET
AS9:	CJNE R2,#09H,AS10
	CLR DIS_A
	CLR DIS_B
	CLR DIS_C
	CLR DIS_D
	CLR DIS_F
	CLR DIS_G
	SETB DIS_E
	RET
AS10:	CJNE R2,#15H,AS11		;symbol for -
	SETB DIS_A
	SETB DIS_B
	SETB DIS_C
	SETB DIS_D
	SETB DIS_E
	SETB DIS_F
	CLR DIS_G
	RET
AS11:	CJNE R2,#16H,AS12		;switch off all disp
	SETB DIS_A
	SETB DIS_B
	SETB DIS_C
	SETB DIS_D
	SETB DIS_E
	SETB DIS_F
	SETB DIS_G
	RET
AS12:	CJNE R2,#17H,AS13			;A
	CLR DIS_A
	CLR DIS_B
	CLR DIS_C
	SETB DIS_D
	CLR DIS_E
	CLR DIS_F
	CLR DIS_G
	RET
AS13:	CJNE R2,#18H,AS14			;U
	SETB DIS_A
	SETB DIS_B
	CLR DIS_C
	CLR DIS_D
	CLR DIS_E
	SETB DIS_F
	SETB DIS_G
	RET
AS14:	CJNE R2,#19H,AS15			;t
	SETB DIS_A
	SETB DIS_B
	SETB DIS_C
	CLR DIS_D
	CLR DIS_E
	CLR DIS_F
	CLR DIS_G
	RET
AS15:	CJNE R2,#20H,AS16			;0
	SETB DIS_A
	SETB DIS_B
	CLR DIS_C
	CLR DIS_D
	CLR DIS_E
	SETB DIS_F
	CLR DIS_G
	RET
AS16:	CJNE R2,#21H,AS17			;F
	CLR DIS_A
	SETB DIS_B
	SETB DIS_C
	SETB DIS_D
	CLR DIS_E
	CLR DIS_F
	CLR DIS_G
	RET		
AS17:	CJNE R2,#22H,AS18			;n
	SETB DIS_A
	SETB DIS_B
	CLR DIS_C
	SETB DIS_D
	CLR DIS_E
	SETB DIS_F
	CLR DIS_G
	RET				
AS18:	
	MOV SPED,#00H
	JMP DISP
;**********************************************************	
;		INTRRUPT ROUTINE TO REFRESH THE DISPLAY
;**********************************************************	
REFRESH:
	PUSH   PSW           ; save current registerset
   MOV    PSW,#RB1
   PUSH   ACC
	INC COUNT
	MOV R4,COUNT
QA1:	CJNE R4,#01H,QA2
	MOV SPED,VALUE_1
	SETB DIS1
	CLR DIS2
	CLR DIS3
	CLR DIS4
	CALL DISP 
	JMP DOWN   
QA2:	CJNE R4,#02H,QA3
	MOV SPED,VALUE_2
	CLR DIS1
	SETB DIS2
	CLR DIS3
	CLR DIS4
	CALL DISP 
	JMP DOWN
QA3:	CJNE R4,#03H,QA4
	MOV SPED,VALUE_3
	CLR DIS1
	CLR DIS2
	SETB DIS3
	CLR DIS4
	CALL DISP 
	AJMP DOWN
QA4:	CJNE R4,#04H,QA5
	MOV SPED,VALUE_4
	CLR DIS1
	CLR DIS2
	CLR DIS3
	SETB DIS4
	CALL DISP 
	AJMP DOWN
QA5:	MOV COUNT,#01H
	MOV R4,COUNT
	JMP QA1
DOWN:	
	MOV TL1,#0FFH
	MOV TH1,#0F0H
	POP    ACC
   POP    PSW
	RETI
;**********************************************************	

;**********************************************************

;**********************************************************
DELAY:
	MOV R1,#0FFH
REPA2:	MOV R2,#0FFH
REPA1:	NOP
	DJNZ R2,REPA1
	DJNZ R1,REPA2
	RET
;**********************************************************
SET_TEMPERATURE:
 		MOV TEMP1,#31H
 		MOV TEMP2,#32H
 		MOV TEMP3,#33H
 		MOV TEMP4,#34H
 		MOV TEMP5,#35H
 		MOV TEMP6,#36H
 		MOV TEMP7,#37H
 		MOV TEMP8,#38H
 		MOV TEMP9,#39H
 		MOV TEMP10,#40H
 			
 		MOV SPEED1,#00H
 		MOV SPEED2,#01H
 		MOV SPEED3,#02H
 		MOV SPEED4,#03H
 		MOV SPEED5,#04H
 		MOV SPEED6,#05H
 		MOV SPEED7,#06H
 		MOV SPEED8,#07H
 		MOV SPEED9,#08H
 		MOV SPEED10,#09H				
 		RET
 		
;**********************************************************
;  ---------==========----------==========---------=========---------
;  Interrupt 1  routine
;  ---------==========----------==========---------=========---------
ZERO_CROSS:	
	SETB FAN
	MOV R2,SPEED
	CJNE R2,#00H,QW1		; Fan Off
	SETB FAN
	CLR TR0
	RETI

QW1:	CJNE R2,#01H,QW2		;Fan Speed 1
	MOV TL0,#011H
	MOV TH0,#0F0H
	SETB TR0
	RETI

QW2:	CJNE R2,#02H,QW3		;Fan Speed 2
	MOV TL0,#0FFH
	MOV TH0,#0F0H
	SETB TR0
	RETI

QW3:	CJNE R2,#03H,QW4		;Fan Speed 3
	MOV TL0,#0FFH
	MOV TH0,#0F4H
	SETB TR0
	RETI

QW4:	CJNE R2,#04H,QW5		;Fan Speed 4
	MOV TL0,#0FFH
	MOV TH0,#0F6H
	SETB TR0
	RETI
QW5:	CJNE R2,#05H,QW6		;Fan Speed 5
	MOV TL0,#0FFH
	MOV TH0,#0F7H
	SETB TR0
	RETI
QW6:	CJNE R2,#06H,QW7		;Fan Speed 6
	MOV TL0,#0FFH
	MOV TH0,#0F9H
	SETB TR0
	RETI
QW7:	CJNE R2,#07H,QW8		;Fan Speed 7
	MOV TL0,#0FFH
	MOV TH0,#0F9H
	SETB TR0
	RETI
QW8:	CJNE R2,#08H,QW9		;Fan Speed 8
	MOV TL0,#0FFH
	MOV TH0,#0FAH
	SETB TR0
	RETI
QW9:	
		CJNE R2,#09H,QW10		;Fan full Speed 9
	CLR TR0
	CLR FAN
QW10:	RETI
;  ---------==========----------==========---------=========---------
;  Timer 0  routine
;  ---------==========----------==========---------=========---------
TRIGGER:
	CLR FAN
	CLR TR0
	RETI		
 	END

⌨️ 快捷键说明

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