;这是一个使用DS18B20集成数字温度传感器(参见DS18B20.PDF)测量温度的实用程序.
;第1,2个数码管显示温度值
;硬件:将P1.0口线的跳线器置焊盘位置(下方),连接DS18B20,即可.
;本程序使用DS18B20的12位单点采样模式,采样周期约0.8秒钟,每按键一次就采样一次!
;程序编制人:蔡祥荣 2004/06/20
;----------------------------------------------------------------------------------
TEMP EQU 21H ;当前温度值
BUFF_LED1 EQU 22H ;数码管显示缓存
BUFF_LED2 EQU 23H
BUFF_LED3 EQU 24H
BUFF_LED4 EQU 25H
BUFF_LED5 EQU 26H
BUFF_LED6 EQU 27H
BUFF_LED_LP EQU 28H ;T0键盘显示扫描缓存
BUFF_1820L EQU 30H
BUFF_1820H EQU 31H
F_BEEP BIT 01H
LED_PORT EQU P0
DIG_PORT EQU P2
KEY_PORT EQU P2
KEY BIT P3.3
BEEP BIT P2.0
DS18B20 BIT P1.0
org 000h
JMP main
ORG 00BH
JMP T0_INT
ORG 100H
main:MOV SP ,#40H
MOV PSW,#00H
MOV TMOD,#21h
MOV TH0,#240 ;T0=4MS
MOV TL0,#96
SETB TR0
SETB ET0
SETB EA
MOV R0,#7FH ;初始化RAM区,
CLR_RAM:MOV A,#00H
MOV @R0,A
DJNZ R0,CLR_RAM
MOV P1,0FFH ;INIT
MOV P2,0FFH
MOV P0,0FFH
MOV P3,0FFH
MOV BUFF_LED3,#10H ;将数码管LED3-LED6消隐
MOV BUFF_LED4,#10H
MOV BUFF_LED5,#10H
MOV BUFF_LED6,#10H
WAIT_KEY:JB KEY,$ ;等候按键
SETB F_BEEP
CLR BEEP
LCALL GET_TEMP
LCALL BIN_BCD
MOV BUFF_LED2,B
MOV BUFF_LED1,A
CLR F_BEEP
JMP WAIT_KEY