📄 exp.lst
字号:
C51 COMPILER V6.23a EXP 09/21/2011 09:31:56 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE EXP
OBJECT MODULE PLACED IN exp.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE exp.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1
2 #include <reg51.h>
3 #include <intrins.h>
4 #define uchar unsigned char
5 sbit DQ=P1^0; //DS18B20的数据线
6 bdata uchar dat; //用于数据收发
7 sbit dat0=dat^0; //变量dat的最低位
8 sbit dat7=dat^7; //变量dat的最高位
9
10
11
12
13 void delay15(uchar n) //15us延时函数
14 { do {
15 2 _nop_();
16 2 _nop_();
17 2 _nop_();
18 2 _nop_();
19 2 _nop_();
20 2 _nop_();
21 2 _nop_();
22 2 _nop_();
23 2 _nop_();
24 2 _nop_();
25 2 _nop_();
26 2 _nop_();
27 2 n--;
28 2 }while(n);
29 1 }
30 bit reset(void) //初始化DS18B20
31 { bit err;
32 1 DQ=0; //在数据线上产生600us的低电平
33 1 delay15(40);
34 1 DQ=1; //数据线拉高
35 1 delay15(4); //延时60us
36 1 err=DQ; //读取数据线状态,err=0:复位成功
37 1 delay15(18); // err=1:复位失败
38 1 return(err);
39 1 }
40
41 void wrbyte(uchar d) //向DS18B20写入一个字节
42 { uchar i;
43 1 dat=d;
44 1 for(i=8;i>0;i--) //循环写8位(先低位,后高位)
45 1 { DQ=0; //产生15us的负脉冲
46 2 delay15(1);
47 2 DQ=dat0; //将当前数据位送数据线
48 2 dat=dat>>1; //将下一位要写入的数据移到最低位
49 2 delay15(1); //延时15us
50 2 DQ=1; //数据线拉高,为写入下一位做准备
51 2 }
52 1 }
53
54 uchar rdbyte(void) //从DS18B20 读取一个字节
55 { uchar i;
C51 COMPILER V6.23a EXP 09/21/2011 09:31:56 PAGE 2
56 1 dat=0; //读出数据初值为0
57 1 for(i=8;i>0;i--) //循环读8位(先低位,后高位)
58 1 { dat=dat>>1; //读出数据先右移一位
59 2 DQ=0; //产生1us的负脉冲
60 2 _nop_();
61 2 DQ=1; //数据总线拉高
62 2 delay15(1); //延时15us
63 2 dat7=DQ; //读取数据
64 2 delay15(4); //延时,为读下一位做准备
65 2 }
66 1 return(dat);
67 1 }
68
69 void convert(void) //启动DS18B20开始温度转换
70 { bit err;
71 1 err=reset(); //复位传感器
72 1 wrbyte(0xcc); //跳过多传感器识别
73 1 wrbyte(0x44); //启动温度转换
74 1 }
75
76 int readt(void) //读取DS18B20暂存器中的温度值
77 { uchar h,l;
78 1 bit err;
79 1 err=reset(); //复位传感器
80 1 wrbyte(0xcc); //跳过多传感器识别
81 1 wrbyte(0xbe); //读暂存器指令
82 1 l=rdbyte(); //读温度低位
83 1 h=rdbyte(); //读温度高位
84 1 return(h*256+l);
85 1 }
86
87
88
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 156 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 3
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -