📄 temperture.asm
字号:
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 + -