📄 ds18b20.lst
字号:
C51 COMPILER V7.06 DS18B20 05/04/2005 22:51:36 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN DS18B20.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil20\C51\BIN\C51.EXE DS18B20.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //-----------------------函数声明,变量定义--------------------------------------------------------
2 #include <reg51.h>
3 sbit DQ=P1^0; // 将p1.0口模拟时钟输出
4 #define jump_ROM 0xCC //跳过ROM命令
5 #define start 0x44 //启动转换命令
6 #define read_EEROM 0xBE //读存储器命令
7 unsigned char TMPH,TMPL; //温度值
8 //--------------------------------------------------------------------------------------------------
9 // 函数名称: delay
10 // 入口参数: N
11 // 函数功能:延时子程序,实现(16*N+24)us的延时
12 // 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
13 //--------------------------------------------------------------------------------------------------
14 void delay(unsigned int N)
15 {
16 1 int i;
17 1 for(i=0;i<N;i++);
18 1 }
19 //--------------------------------------------------------------------------------------------------
20 // 函数名称: Reset
21 // 入口参数: 无
22 // 返回deceive_ready
23 // 函数功能:复位
24 //--------------------------------------------------------------------------------------------------
25 unsigned char Reset(void)
26 {
27 1 unsigned char deceive_ready;
28 1 DQ=0; //拉低DQ线
29 1 delay(29); //延时至少480us~960us
30 1 DQ=1; //将DQ线设置位逻辑高
31 1 delay(3); //延时等待deceive_ready响应
32 1 deceive_ready=DQ; //采样deceive_ready信号
33 1 delay(25); //等待时序结束
34 1 return(deceive_ready); //有deceive_ready信号时返回0,否则返回1
35 1 }
36 //--------------------------------------------------------------------------------------------------
37 // 函数名称:read_bit
38 // 入口参数: 无
39 // 返回接收的数据
40 // 函数功能:读一个bit子程序
41 //--------------------------------------------------------------------------------------------------
42 unsigned char read_bit(void)
43 {
44 1 unsigned char i;
45 1 DQ=0; //拉低DQ线开始时序
46 1 DQ=1; //升高DQ线
47 1 for(i=0;i<3;i++); //延时至时序开始15us
48 1 return(DQ); //返回DQ值
49 1 }
50 //--------------------------------------------------------------------------------------------------
51 // 函数名称: write_bit
52 // 入口参数: bitval
53 // 函数功能:写一个bit子程序
54 //--------------------------------------------------------------------------------------------------
55 void write_bit(unsigned char bitval)
C51 COMPILER V7.06 DS18B20 05/04/2005 22:51:36 PAGE 2
56 {
57 1 DQ=0; //拉低DQ线开始时序
58 1 if(bitval==1)
59 1 DQ=1; //如果写逻辑为高
60 1 delay(5); //延时
61 1 DQ=1; //升高DQ线
62 1 }
63 //--------------------------------------------------------------------------------------------------
64 // 函数名称: write_byte
65 // 入口参数: val
66 // 函数功能:写一个byte子程序
67 //--------------------------------------------------------------------------------------------------
68 void write_byte(unsigned char val)
69 {
70 1 unsigned char i,temp;
71 1 for(i=0;i<8;i++)
72 1 {
73 2 temp=val>>i; //将val位右移i位赋值给比temp
74 2 temp=temp&0x01; //取temp最低位
75 2 write_bit(temp);
76 2 delay(5); //延时至时序结束
77 2 }
78 1 }
79 //--------------------------------------------------------------------------------------------------
80 // 函数名称: read_byte
81 // 返回接收的数据 value
82 // 函数功能:读一个byte子程序
83 //--------------------------------------------------------------------------------------------------
84 unsigned char read_byte(void)
85 {unsigned char i,m,receive_data;
86 1 m=1;receive_data=0; //初始化
87 1 for(i=0;i<8;i++)
88 1 {
89 2 if(read_bit())
90 2 {
91 3 receive_data=receive_data+(m<<i);
92 3 } //每读一位数据据,左移一位
93 2 delay(6); //延时至时序结束
94 2 }
95 1 return(receive_data); //返回value
96 1 }
97 //--------------------------------------------------------------------------------------------------
98 // 函数名称: main
99 // 函数功能: 主函数
100 //--------------------------------------------------------------------------------------------------
101 void main()
102 {
103 1 Reset();
104 1 write_byte(jump_ROM); //发跳过ROM命令
105 1 write_byte(start); //发启动转换命令
106 1 Reset();
107 1 write_byte(jump_ROM); //发跳过ROM命令
108 1 write_byte(read_EEROM); //发跳过ROM命令
109 1 TMPL=read_byte(); //读低8位温度值
110 1 TMPH=read_byte(); //读高8位温度值
111 1 }
112
113
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 189 ----
C51 COMPILER V7.06 DS18B20 05/04/2005 22:51:36 PAGE 3
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
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 + -