📄 ds18b20.lst
字号:
C51 COMPILER V6.12 DS18B20 11/02/2006 13:53:38 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN .\ds18b20.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\ds18b20.c DEBUG OBJECTEXTEND
stmt level source
1 #include <AT89X52.H>
2 #include <INTRINS.h>
3
4
5 sbit DQ =P1^4;
6
7 //延时函数
8
9 void delay(unsigned int i)
10 {
11 1 for(i;i>0;i--);
12 1 }
13
14 //初始化函数
15 bit Init_DS18B20(void)
16 {
17 1 DQ = 0; //单片机将DQ拉低
18 1 delay(255); //精确延时 大于 480us
19 1 DQ = 1; //拉高总线
20 1 delay(60);
21 1 return(DQ); //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
22 1 delay(200);
23 1 }
24 //读一个字节
25 unsigned char readdatafromds18b20(void)
26 {
27 1 unsigned char i;
28 1 unsigned char j;
29 1 unsigned char temp;
30 1
31 1 temp=0;
32 1 for(i=0;i<8;i++)
33 1 {
34 2 temp=_cror_(temp,1);
35 2 DQ=0;
36 2 _nop_();
37 2 _nop_();
38 2 DQ=1;
39 2 for(j=10;j>0;j--);
40 2 if(DQ==1)
41 2 {
42 3 temp=temp | 0x80;
43 3 }
44 2 else
45 2 {
46 3 temp=temp | 0x00;
47 3 }
48 2 for(j=200;j>0;j--);
49 2 }
50 1 return(temp);
51 1 }
52 void writecommandtods18b20(unsigned char command)
53 {
54 1 unsigned char i;
55 1 unsigned char j;
C51 COMPILER V6.12 DS18B20 11/02/2006 13:53:38 PAGE 2
56 1
57 1 for(i=0;i<8;i++)
58 1 {
59 2 if((command & 0x01)==0)
60 2 {
61 3 DQ=0;
62 3 for(j=35;j>0;j--);
63 3 DQ=1;
64 3 }
65 2 else
66 2 {
67 3 DQ=0;
68 3 for(j=2;j>0;j--);
69 3 DQ=1;
70 3 for(j=33;j>0;j--);
71 3 }
72 2 command=_cror_(command,1);
73 2 }
74 1 }
75 //读取温度
76 unsigned int ReadTemperaturefromds18b20(void)
77 {
78 1 unsigned char a=0;
79 1 unsigned char b=0;
80 1 unsigned int t=0;
81 1 float tt=0;
82 1 Init_DS18B20();
83 1 writecommandtods18b20(0xCC); // 跳过读序号列号的操作
84 1 writecommandtods18b20(0x44); // 启动温度转换
85 1 Init_DS18B20();
86 1 writecommandtods18b20(0xCC); //跳过读序号列号的操作
87 1 writecommandtods18b20(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
88 1 a=readdatafromds18b20();
89 1 b=readdatafromds18b20();
90 1 t=b;
91 1 t<<=8;
92 1 t=t|a;
93 1 tt=t*0.0625;
94 1 //t= tt*10+0.5; //放大10倍输出并四舍五入---此行没用
95 1 return(t);
96 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 228 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -