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

📄 temperture.asm

📁 Temperture DS18B20 Assembly
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	MOV	A,#00H
	LCALL	WRITE_BYTE
	MOV	A,#00H; serial code
	LCALL	WRITE_BYTE
	MOV	A,#20H 
	LCALL	WRITE_BYTE	; CRC check
	RET

MATCH_DS4:
	LCALL	OW_RESET
	MOV	A,#55H		; match ROM
	LCALL	WRITE_BYTE
	
	MOV	A,#28h		; Family code
	LCALL	WRITE_BYTE
	MOV	A,#0A4H
	LCALL	WRITE_BYTE
	MOV	A,#71H
	LCALL	WRITE_BYTE
	MOV	A,#31H
	LCALL	WRITE_BYTE
	MOV	A,#00H   
	LCALL	WRITE_BYTE
	MOV	A,#00H
	LCALL	WRITE_BYTE
	MOV	A,#00H; serial code
	LCALL	WRITE_BYTE
	MOV	A,#0F9H 
	LCALL	WRITE_BYTE	; CRC check
	RET
CONVERT:			; doi nhiet do sau khi da truy cap duoc dung IC, gia tri do duoc luu vao thanh ghi A
	MOV	A,#0BEH		; read Scratchpad
	LCALL	WRITE_BYTE
        LCALL   READ_BYTE
        MOV     T_LOW,A         ; doc LSB
        LCALL   READ_BYTE
        MOV     T_HIGH,A        ; doc MSB

        LCALL	OW_RESET	; reset pulse
	ANL     T_LOW,#0F0H     ; giu lai 4 bit cao
        ANL     T_HIGH,#0FH     ; giu lai 4 bit thap
        MOV     A,#00H
        ADD     A,T_LOW
        ADD     A,T_HIGH
        SWAP    A
	RET	
;--------------------------------------------------------------------------------------        
BIN2ASCII:                      ; chuyen KQ thu duoc ve ma ASCII de hien thi len LCD        
        MOV     B,#10		; tach lay hang chuc va hang don vi roi cong voi 30h
        DIV     AB
        ADD     A,#30H
        MOV     T_CHUC,A
        MOV     A,B
        ADD     A,#30H
        MOV     T_DVI,A
        RET
        
DISPLAY:
TEST_DS1:
	MOV	TEST1,#00H
	MOV	A,TEMP1
	LCALL	BIN2ASCII

	CLR	C
	MOV	A,TH_USER
	SUBB	A,TEMP1		; Co C se bang 1 khi TH_USER<TEMP1
	MOV	DS1,C	        
	JNC	NEXT1		; nhay toi kiem tra muc thap
	JB	BLINK,TEST_DS2	; chuyen sang test DS2
	MOV	T_CHUC,#' '
	MOV	T_DVI,#' '
	SJMP	TEST_DS2
NEXT1:
	MOV	A,TL_USER
	SUBB	A,TEMP1		; Co C se bang 1 khi TL_USER<TEMP1
	CPL	C
	MOV	DS5,C	
	JNC	TEST_DS2
	JB	BLINK,TEST_DS2
	MOV	T_CHUC,#' '
	MOV	T_DVI,#' '
	SJMP	TEST_DS2

TEST_DS2:	
	MOV	A,#84H
	LCALL	CSTROBE
	MOV	A,T_CHUC
	LCALL	DSTROBE
	MOV	A,T_DVI
	LCALL	DSTROBE
		
	MOV	A,TEMP2
	LCALL	BIN2ASCII

	CLR	C
	MOV	A,TH_USER
	SUBB	A,TEMP2		; Co C se bang 1 khi TH_USER<TEMP1
	MOV	DS2,C	        
	JNC	NEXT2		; nhay toi kiem tra muc thap
	JB	BLINK,TEST_DS3	; chuyen sang test DS2
	MOV	T_CHUC,#' '
	MOV	T_DVI,#' '
	SJMP	TEST_DS3
NEXT2:
	MOV	A,TL_USER
	SUBB	A,TEMP2		; Co C se bang 1 khi TL_USER<TEMP1
	CPL	C
	MOV	DS6,C	
	JNC	TEST_DS3
	JB	BLINK,TEST_DS3
	MOV	T_CHUC,#' '
	MOV	T_DVI,#' '
	SJMP	TEST_DS3

TEST_DS3:	
	MOV	A,#8CH
	LCALL	CSTROBE
	MOV	A,T_CHUC
	LCALL	DSTROBE
	MOV	A,T_DVI
	LCALL	DSTROBE
		
	MOV	A,TEMP3
	LCALL	BIN2ASCII

	CLR	C
	MOV	A,TH_USER
	SUBB	A,TEMP3		; Co C se bang 1 khi TH_USER<TEMP1
	MOV	DS3,C	        
	JNC	NEXT3		; nhay toi kiem tra muc thap
	JB	BLINK,TEST_DS4	; chuyen sang test DS2
	MOV	T_CHUC,#' '
	MOV	T_DVI,#' '
	SJMP	TEST_DS4
NEXT3:
	MOV	A,TL_USER
	SUBB	A,TEMP3		; Co C se bang 1 khi TL_USER<TEMP1
	CPL	C
	MOV	DS7,C	
	JNC	TEST_DS4
	JB	BLINK,TEST_DS4
	MOV	T_CHUC,#' '
	MOV	T_DVI,#' '
	SJMP	TEST_DS4
TEST_DS4:	
	MOV	A,#0C4H
	LCALL	CSTROBE
	MOV	A,T_CHUC
	LCALL	DSTROBE
	MOV	A,T_DVI
	LCALL	DSTROBE
		
	MOV	A,TEMP4
	LCALL	BIN2ASCII

	CLR	C
	MOV	A,TH_USER
	SUBB	A,TEMP4		; Co C se bang 1 khi TH_USER<TEMP1
	MOV	DS4,C	        
	JNC	NEXT4		; nhay toi kiem tra muc thap
	JB	BLINK,END_DSP	; chuyen sang test DS2
	MOV	T_CHUC,#' '
	MOV	T_DVI,#' '
	SJMP	END_DSP
NEXT4:
	MOV	A,TL_USER
	SUBB	A,TEMP4		; Co C se bang 1 khi TL_USER<TEMP1
	CPL	C
	MOV	DS8,C	
	JNC	END_DSP
	JB	BLINK,END_DSP
	MOV	T_CHUC,#' '
	MOV	T_DVI,#' '
	SJMP	END_DSP
	
END_DSP:
	MOV	A,#0CCH
	LCALL	CSTROBE
	MOV	A,T_CHUC
	LCALL	DSTROBE
	MOV	A,T_DVI
	LCALL	DSTROBE
	
	SETB	RED_LED
	MOV	A,TEST1
	JZ	NEXT5
	CLR	RED_LED
	
NEXT5:
	SETB	GREEN_LED
	MOV	A,TEST2
	JZ	NEXT6
	CLR	RED_LED
NEXT6:
	RET		
		
;---------------------------------------------------------------------------------------
; Ngat ngoai khi co phim bam        
INT0ISR:	
	PUSH	PSW
	PUSH	ACC
        JNB     MODE,$                 ; Nhay tai cho cho phim nha
        MOV     A,#01H
        LCALL   CSTROBE;                ; Xoa man hinh
        MOV     A,#80H
        LCALL   CSTROBE
        MOV     DPTR,#MESSAGE2          ; hien thi dong chu "High:"
        LCALL   SEND2LCD
SET_HIGH:				; dat lai gia tri gioi han tren
        MOV     A,TH_USER
        LCALL   BIN2ASCII		; chuyen sang dang ASCII de hien thi len LCD
        MOV     A,#8AH
        LCALL   CSTROBE
        MOV     A,T_CHUC
        LCALL   DSTROBE
        MOV     A,T_DVI
        LCALL   DSTROBE
        JNB     UP,TANG_HIGH		; tang gioi han tren
        JNB     DOWN,GIAM_HIGH		; giam gioi han tren
        JNB     MODE,EXIT_SET_HIGH	; ket thuc dat lai gia tri gioi han tren
        LJMP    SET_HIGH
TANG_HIGH:      
        JNB     UP,$          		  ; nhay tai cho cho phim nha
        INC     TH_USER         	; tang T_HIGH
        MOV     A,TH_USER
        CJNE    A,#100,SET_HIGH  	  ; neu bang 100 thi ve 0
        MOV     TH_USER,#00H
        LJMP    SET_HIGH
GIAM_HIGH:
        JNB     DOWN,$         		 ; nhay tai cho cho phim nha
        DEC     TH_USER  	        ; giam T_HIGH , neu nho hon 0 thi ve 99
        MOV     A,TH_USER
        CJNE    A,#-1,SET_HIGH
        MOV     TH_USER,#99
        LJMP    SET_HIGH
EXIT_SET_HIGH:
        JNB     MODE,$          	; nhay tai cho cho phim nha
        MOV     A,#0C0H
        LCALL  CSTROBE     		; chuyen xuong dong thu 2
        MOV     DPTR,#MESSAGE3  	; hien thi chu "Low:"
        LCALL   SEND2LCD
SET_LOW:				; dat lai gia tri gioi han duoi
        MOV     A,TL_USER
        LCALL   BIN2ASCII
        MOV     A,#0CAH
        LCALL   CSTROBE
        MOV     A,T_CHUC
        LCALL   DSTROBE
        MOV     A,T_DVI
        LCALL   DSTROBE
        JNB     UP,TANG_LOW		; tang gia tri gioi han duoi
        JNB     DOWN,GIAM_LOW		; giam gia tri gioi han duoi
        JNB     MODE,EXIT_SET_LOW
        LJMP    SET_LOW
TANG_LOW:      
        JNB     UP,$            ; nhay tai cho cho phim nha
        INC     TL_USER          ; tang T_HIGH
        MOV     A,TL_USER
        CJNE    A,#100,SET_LOW    ; neu bang 100 thi ve 0
        MOV     TL_USER,#00H
        LJMP    SET_LOW
GIAM_LOW:
        JNB     DOWN,$          ; nhay tai cho cho phim nha
        DEC     TL_USER          ; giam T_HIGH , neu nho hon 0 thi ve 99
        MOV     A,TL_USER
        CJNE    A,#-1,SET_LOW
        MOV     TL_USER,#99
        LJMP    SET_LOW
EXIT_SET_LOW:
        JNB     MODE,$          ; Nhay tai cho cho phim nha

; Ghi gia tri thay doi vao EEPROM cua DS1820	


	LCALL	MATCH_DS1
  	NOP
  	MOV	A,#4EH
  	LCALL	WRITE_BYTE	; write Scratchpad
  	NOP	
  	MOV	A,TH_USER
  	LCALL	WRITE_BYTE	; write TH_USER
	NOP
  	MOV	A,TL_USER
  	LCALL	WRITE_BYTE	; write TL_USER
  	NOP
  	MOV	A,#00H
  	LCALL	WRITE_BYTE	; write CONFIG
  	LCALL	OW_RESET	; reset pulse
	LCALL	MATCH_DS1
	MOV	A,#48H
	LCALL	WRITE_BYTE	;
	
        MOV	A,#01H	
        LCALL	CSTROBE 
        MOV     DPTR,#MESSAGE1
        LCALL   SEND2LCD              
	MOV	A,#088H
	LCALL	CSTROBE
	MOV	DPTR,#MESSAGE4
	LCALL	SEND2LCD
	MOV	A,#0C0H
	LCALL	CSTROBE
	MOV	DPTR,#MESSAGE5
	LCALL	SEND2LCD
	MOV	A,#0C8H
	LCALL	CSTROBE
	MOV	DPTR,#MESSAGE6
	
	LCALL	SEND2LCD
	
	CLR	IE0
	POP	ACC
	POP	PSW
	RETI
        
;-------------------------------------------------------------------------------
;Ham tre
DELAY10MS:
        MOV     R3,#100
LOOP_R3:
        MOV     R4,#10
LOOP_R4:
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        DJNZ    R4,LOOP_R4
        DJNZ    R3,LOOP_R3
        RET

DELAY100MS:
        MOV     R5,#10
LOOP_R5:
        LCALL   DELAY10MS
        DJNZ    R5,LOOP_R5
        RET
;=====================================================================================
; Cac bang du lieu
MESSAGE1:
        DB     'T','1',':',0
MESSAGE2:
        DB     'H','i','g','h',':',0
MESSAGE3:
        DB     'L','o','w',':',0
MESSAGE4:
        DB     'T','2',':',0 
MESSAGE5:
        DB     'T','3',':',0         
MESSAGE6:
        DB     'T','4',':',0         

;======================================================================================
END

⌨️ 快捷键说明

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