📄 ds18b20温度转换子程序.lst
字号:
C51 COMPILER V8.08 DS18B20蝊度转换子程序 03/19/2008 22:48:33 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE DS18B20蝊度转换子程序
OBJECT MODULE PLACED IN DS18B20温度转换子程序.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS18B20温度转换子程序.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3 #include<stdio.h>
4 #define T_CONVER 0x44
5 #define T_CONFIG 0x5f
6 #define T_READ 0xbe
7 #define T_WRITE 0x4e
8 #define T_ROM_JMP 0xcc
9 #define T_COPY_E2 0x48
10 #define T_RECALL_E2 0xb8
11 #define T_cont 0.0625
12 #define uint unsigned int
13 #define uchar unsigned char
14 sbit BZ = P2^4 ;
15 sbit DQ = P1^0;
16 sbit a_0 =ACC^0;
17 bit T_sign;
18 bit flag=1;
19 float temp = 0;
20 uchar t_bai,t_shi,t_ge,t_point1,t_point2;
21
22 void delay(uint delay_time)
23 {
24 1 while(delay_time--);
25 1 }
26
27 //DS18B20子程序
28 void DS18B20_init()
29 {
30 1 uchar i=1;
31 1 while(flag==0)
32 1 {
33 2 DQ = 1;
34 2 delay(8);
35 2 DQ = 0;
36 2 delay(52);
37 2 DQ = 1;
38 2 delay(2);
39 2 while(1)
40 2 {
41 3 i = DQ;
42 3 if(i==0)
43 3 {
44 4 flag=1;
45 4 delay(10);
46 4 break;
47 4 }
48 3 }
49 2 }
50 1 flag=0;
51 1 }
52
53 void DS18B20_send(uchar out_data)
54 {
55 1 uchar i=0;
C51 COMPILER V8.08 DS18B20蝊度转换子程序 03/19/2008 22:48:33 PAGE 2
56 1 for(i=8;i>0;i--)
57 1 {
58 2 DQ = 0;
59 2 ACC=out_data&0x01;
60 2 DQ = a_0;
61 2 delay(5);
62 2 out_data>>=1;
63 2 }
64 1 }
65
66 uchar DS18B20_read(void)
67 {
68 1 uchar i,in_data;
69 1 in_data=0;
70 1 for(i=8;i>0;i--)
71 1 {
72 2 DQ = 0;
73 2 in_data>>=1;
74 2 DQ = 1;
75 2 if(DQ) in_data|=0x80;
76 2 delay(4);
77 2 }
78 1 return(in_data);
79 1 }
80
81 void ReadTemperature()
82 {
83 1 uint yu;
84 1 uchar T_L=0;
85 1 uchar T_H=0;
86 1 uchar k;
87 1 DS18B20_init();
88 1 DS18B20_send(T_ROM_JMP);
89 1 DS18B20_send(T_CONVER);
90 1 DS18B20_init();
91 1 DS18B20_send(T_ROM_JMP);
92 1 DS18B20_send(T_READ);
93 1 T_L=DS18B20_read();
94 1 T_H=DS18B20_read();
95 1 k=T_H&0x08;
96 1 if(k==0x08) T_sign=1;
97 1 else T_sign=0;
98 1 T_H=T_H&0x07;
99 1 temp=(T_H*256+T_L)*T_cont;
100 1 temp =temp *100;
101 1 t_bai=(uint)temp/10000;
102 1 yu =(uint)temp%10000;
103 1 t_shi=yu/1000;
104 1 yu =(uint)yu%1000;
105 1 t_ge =yu/100;
106 1 yu =(uint)yu%100;
107 1 t_point1=yu/10;
108 1 t_point2=(uint)yu%10;
109 1 }
110
111 void main (void)
112 {
113 1 BZ=0; //关蜂鸣器
114 1 while(1)
115 1 {
116 2 ReadTemperature();
117 2 }
C51 COMPILER V8.08 DS18B20蝊度转换子程序 03/19/2008 22:48:33 PAGE 3
118 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 344 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -