📄 ds18b02采样.lst
字号:
C51 COMPILER V8.08 DS18B02采裚 05/04/2008 12:45:49 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE DS18B02采裚
OBJECT MODULE PLACED IN DS18B02采样.OBJ
COMPILER INVOKED BY: D:\program files\Keil 3.2\C51\BIN\C51.EXE DS18B02采样.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 sbit DQ =P3^7; //定义通信端口
3
4 //延时函数
5
6 void delay(unsigned int i)
7 {
8 1 while(i--);
9 1 }
10
11 //初始化函数
12 Init_DS18B20(void)
13 {
14 1 unsigned char x=0;
15 1 DQ = 1; //DQ复位
16 1 delay(8); //稍做延时
17 1 DQ = 0; //单片机将DQ拉低
18 1 delay(80); //精确延时 大于 480us
19 1 DQ = 1; //拉高总线
20 1 delay(14);
21 1 x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
22 1 delay(20);
23 1 }
24
25 //读一个字节
26 ReadOneChar(void)
27 {
28 1 unsigned char i=0;
29 1 unsigned char dat = 0;
30 1 for (i=8;i>0;i--)
31 1 {
32 2 DQ = 0; // 给脉冲信号
33 2 dat>>=1; //1us以上
34 2 DQ = 1; // 给脉冲信号
35 2 if(DQ) //以上3条程序必须在15us以上
36 2 dat|=0x80;
37 2 delay(4); //读时隙至少延时60us
38 2 }
39 1 return(dat);
40 1 }
41
42 //写一个字节指令
43 WriteOneChar(unsigned char dat)
44 {
45 1 unsigned char i=0;
46 1 for (i=8; i>0; i--)
47 1 {
48 2 DQ = 0;
49 2 DQ = dat&0x01;
50 2 delay(5);//至少在15us以上有效
51 2 DQ = 1;
52 2 dat>>=1;
53 2
54 2 }
55 1
C51 COMPILER V8.08 DS18B02采裚 05/04/2008 12:45:49 PAGE 2
56 1 }
57
58 //读取温度
59 extern unsigned char ReadTemperature(void)
60 {
61 1 unsigned char a=0;
62 1 unsigned char b=0;
63 1 unsigned int t=0;
64 1 Init_DS18B20();
65 1 WriteOneChar(0xCC); // 跳过读序号列号的操作
66 1 WriteOneChar(0x44); // 启动温度转换
67 1 Init_DS18B20();
68 1 WriteOneChar(0xCC); //跳过读序号列号的操作
69 1 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
70 1 a=ReadOneChar();
71 1 b=ReadOneChar();
72 1 t=(a>>4)+((b<<4)&0x7f); //读温度整数部分
73 1 return(t);
74 1 }
75
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 165 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -