📄 ds1280.lst
字号:
C51 COMPILER V6.12 DS1280 06/27/2007 16:47:25 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE DS1280
OBJECT MODULE PLACED IN .\ds1280.OBJ
COMPILER INVOKED BY: D:\学习\专业工具\Keil51\C51\BIN\C51.EXE .\ds1280.c DEBUG OBJECTEXTEND
stmt level source
1
2
3 /*---------------------------------------------------------------------------------------------------
4 功能:实现对DS18B20的读取
5 原理:单总线协议
6 注意:单总线协议对延时要求比较严格,此程序中采用的是11.0592M的晶振,如果使用其他的晶振请跟据DS18B20的资料
-修改延时参数
7 版本:1.4b
8 最后修改时间:2004年11月8号
9 开发人:鞠春阳
10 版权:哈尔滨众邦龙开发有限公司 www.hitzbl.com 单片机坐标网:www.mcuzb.com
11 ====================================================================================================*/
12
13 #include"reg51.h"
14
15 sbit DQ =P3^5; //定义通信端口
16
17 //延时函数
18
19 void delay2(unsigned int i)
20 {
21 1 while(i--);
22 1 }
23
24 //初始化函数
25 Init_DS18B20(void)
26 {
27 1 unsigned char x=0;
28 1 DQ = 1; //DQ复位
29 1 delay2(8); //稍做延时
30 1 DQ = 0; //单片机将DQ拉低
31 1 delay2(80); //精确延时 大于 480us
32 1 DQ = 1; //拉高总线
33 1 delay2(14);
34 1 x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
35 1 delay2(20);
36 1 }
37
38 //读一个字节
39 ReadOneChar(void)
40 {
41 1 unsigned char i=0;
42 1 unsigned char dat = 0;
43 1 for (i=8;i>0;i--)
44 1 {
45 2 DQ = 0; // 给脉冲信号
46 2 dat>>=1;
47 2 DQ = 1; // 给脉冲信号
48 2 if(DQ)
49 2 dat|=0x80;
50 2 delay2(4);
51 2 }
52 1 return(dat);
53 1 }
54
C51 COMPILER V6.12 DS1280 06/27/2007 16:47:25 PAGE 2
55 //写一个字节
56 WriteOneChar(unsigned char dat)
57 {
58 1 unsigned char i=0;
59 1 for (i=8; i>0; i--)
60 1 {
61 2 DQ = 0;
62 2 DQ = dat&0x01;
63 2 delay2(5);
64 2 DQ = 1;
65 2 dat>>=1;
66 2 }
67 1 //delay2(4);
68 1 }
69
70 //读取温度
71 ReadTemperature(void)
72 {
73 1 unsigned char a=0;
74 1 unsigned char b=0;
75 1 unsigned int t=0;
76 1 float tt=0;
77 1 Init_DS18B20();
78 1 WriteOneChar(0xCC); // 跳过读序号列号的操作
79 1 WriteOneChar(0x44); // 启动温度转换
80 1 Init_DS18B20();
81 1 WriteOneChar(0xCC); //跳过读序号列号的操作
82 1 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
83 1 a=ReadOneChar();
84 1 b=ReadOneChar();
85 1 t=b;
86 1 t<<=8;
87 1 t=t|a;
88 1 tt=t*0.0625;
89 1 //t= tt*10+0.5; //放大10倍输出并四舍五入---此行没用
90 1 return(t);
91 1 }
92
93
94
95
96
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 211 ----
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 + -