DS18B20 检测温度 读出的全是1---汇编
程序代码:
SDA EQU P3.7 LED EQU P0 WEIX EQU P2 WEIS EQU 35H WEND EQU 36H ORG 0000H LJMP MAIN ORG 0050H TAB: DB 0fch,060h,0dah,0f2h,066h,0b6h,0beh,0e0h,0feh,0f6h,0EEH,03EH,09CH,07AH,09EH,08EH ;-------延时----------- DELAY60:;80 MOV R7,#50 DJNZ R7,$ RET DELAY600: MOV R6,#10 DLS: MOV R7,#30 DJNZ R7,$ DJNZ R6,DLS RET DELAY:;等待转换完成 MOV R5,#10 DELS1: MOV R6,#200 DELS: MOV R7,#250 DJNZ R7,$ DJNZ R6,DELS LCALL XSWD DJNZ R5,DELS1 RET ;-----初始化------- CSH: SETB SDA LCALL DELAY60 CLR SDA LCALL DELAY600 SETB SDA LCALL DELAY60 JB SDA,$ JNB SDA,$ RET ;------写入字节------- XZJ: MOV WEIS,#08H XZJS: CLR SDA RR A MOV C,ACC.7 MOV SDA,C LCALL DELAY60 SETB SDA DJNZ WEIS,XZJS RET ;-------读出字节-------- DZJ: MOV WEIS,#08H DZJS: CLR SDA RR A SETB SDA MOV C,SDA MOV ACC.7,C LCALL DELAY60 DJNZ WEIS,DZJS RET ;--------检测温度------------ JCWD: MOV A,#0CCH LCALL XZJ MOV A,#044H LCALL XZJ RET ;---------读取温度----------- DQWD: MOV A,#0CCH LCALL XZJ MOV A,#0BEH LCALL XZJ LCALL DZJ MOV R0,#WEND MOV @R0,A LCALL DZJ XCHD A,@R0 MOV A,@R0 SWAP A ;DA A MOV @R0,A RET ;---------显示温度----------- XSWD: MOV DPTR,#TAB MOV A,WEND ANL A,#0FH MOVC A,@A+DPTR MOV WEIX,#00H MOV LED,A LCALL DELAY600 MOV A,WEND ANL A,#0F0H SWAP A MOVC A,@A+DPTR MOV WEIX,#01H MOV LED,A RET ;---------主函数---------- MAIN: MOV SP,#3FH LOOP: LCALL JCWD LCALL DELAY LCALL DQWD LJMP LOOP END