📄 18b20.lst
字号:
C51 COMPILER V7.06 18B20 07/31/2008 22:35:05 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 18B20
OBJECT MODULE PLACED IN 18B20.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 18B20.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #define uchar unsigned char
2 #define uint unsigned int
3 #include "def.h"
4 #include <reg52.h>
5 #include <stdio.h>
6 #include <math.h>
7 #include <intrins.h>
8 #include <public.h>
9
10
11 //18b20初始化函数
12 sbit DQ=P3^3;//ds18b20 端口
13 sfr dataled=0xa0;//显示数据端口P2
14
15 unsigned char ReadTemperature(void);
16 void Init_DS18B20(void);
17 unsigned char ReadOneChar(void);
18 void WriteOneChar(unsigned char dat);
19 void delay(unsigned int i);
20
21 /***************************************************************************************/
22
23 void Init_DS18B20(void)
24 {
25 1 unsigned char x=0;
26 1 DQ = 1; //DQ复位
27 1 delay(8); //稍做延时
28 1 DQ = 0; //单片机将DQ拉低
29 1 delay(80); //精确延时 大于 480us
30 1 DQ = 1; //拉高总线
31 1 delay(10);
32 1 x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
33 1 delay(5);
34 1 }
35
36 //读一个字节 读的时候要给他一个上升垣
37 unsigned char ReadOneChar(void)
38 {
39 1 unsigned char i=0;
40 1 unsigned char dat = 0;
41 1 for (i=8;i>0;i--)
42 1 {
43 2 DQ = 0; // 给脉冲信号
44 2 dat>>=1;
45 2 DQ = 1; // 给脉冲信号
46 2 if(DQ)
47 2 dat|=0x80;
48 2 delay(5);
49 2 }
50 1 return(dat);
51 1 }
52
53 //写一个字节
54 void WriteOneChar(unsigned char dat)
55 {
C51 COMPILER V7.06 18B20 07/31/2008 22:35:05 PAGE 2
56 1 unsigned char i=0;
57 1 for (i=8; i>0; i--)
58 1 {
59 2 DQ = 0;
60 2 DQ = dat&0x01;
61 2 delay(5);
62 2 DQ = 1;
63 2 dat>>=1;
64 2 }
65 1 delay(5);
66 1 }
67
68 //读取温度
69 unsigned char ReadTemperature(void)
70 {
71 1 unsigned char a=0;
72 1 unsigned char b=0;
73 1 unsigned char t=0;
74 1 //float tt=0;
75 1 Init_DS18B20();
76 1 WriteOneChar(0xCC); // 跳过读序号列号的操作
77 1 WriteOneChar(0x44); // 启动温度转换
78 1 delay(200);
79 1 Init_DS18B20();
80 1 WriteOneChar(0xCC); //跳过读序号列号的操作
81 1 WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
82 1 a=ReadOneChar();
83 1 b=ReadOneChar();
84 1
85 1 b<<=4;
86 1 b+=(a&0xf0)>>4;
87 1 t=b;
88 1 //tt=t*0.0625;
89 1 //t= tt*10+0.5; //放大10倍输出并四舍五入
90 1 return(t);
91 1 }
92
93 /*************************************************************************************/
94 void delay(unsigned int i)//延时函数
95 {
96 1 while(i--);
97 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 199 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
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 + -