📄 ds18b20_xin.lst
字号:
C51 COMPILER V8.01 DS18B20_XIN 06/14/2008 14:27:06 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE DS18B20_XIN
OBJECT MODULE PLACED IN ds18b20_xin.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ds18b20_xin.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*************************DS18B20温度计******************************/
2 #include "reg51.h"
3 #include "intrins.h"
4
5 #define uchar unsigned char
6 #define uint unsigned int
7
8 sbit DQ=P3^7; //温度输出管脚定义
9
10 /**************************温度小数部分查表****************************/
11
12
13 uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,
14 0x06,0x07,0x08,0x08,0x09,0x09};
15 uchar data temp_data[2]={0x00,0x00};
16 extern unsigned char Data[5]={0x00,0x00,0x00,0x00,0x00};
17
18 uint h;
19 /**********************************************************************/
20
21 /**************************函数申明部分********************************/
22 void delay(uint t);
23 ow_reset(void);
24 void write_byte(uchar val);
25 uchar read_byte(void);
26 void read_temp();
27 void work_temp();
28 /**********************************************************************/
29
30 /***************************11US延时函数*******************************/
31 void delay(uint t)
32 {
33 1 for(;t>0;t--);
34 1 }
35 /**********************************************************************/
36
37 /***************************DS18B20复位函数****************************/
38 ow_reset(void)
39 {
40 1 char presence=1;
41 1 while(presence)
42 1 {
43 2 while(presence)
44 2 {
45 3 DQ=1;_nop_();_nop_();
46 3 DQ=0;
47 3 delay(50);
48 3 DQ=1;
49 3 delay(6);
50 3 presence=DQ;
51 3 }
52 2 delay(45);
53 2 presence=~DQ;
54 2 }
55 1 DQ=1;
C51 COMPILER V8.01 DS18B20_XIN 06/14/2008 14:27:06 PAGE 2
56 1 }
57 /**********************************************************************/
58
59 /*****************************DS18B20写命令函数************************/
60 void write_byte(uchar val)
61 {
62 1 uchar i;
63 1 for(i=8;i>0;i--)
64 1 {
65 2 DQ=1;_nop_();_nop_();
66 2 DQ=0;_nop_();_nop_();_nop_();_nop_();_nop_();
67 2 DQ=val&0x01;
68 2 delay(6);
69 2 val=val/2;
70 2 }
71 1 DQ=1;
72 1 delay(1);
73 1 }
74 /**********************************************************************/
75 /*****************************DS18B20读1字节函数**********************/
76 uchar read_byte(void)
77 {
78 1 uchar i;
79 1 uchar value=0;
80 1 for(i=8;i>0;i--)
81 1 {
82 2 DQ=1;_nop_();_nop_();
83 2 value>>=1;
84 2 DQ=0;
85 2 _nop_();_nop_();_nop_();_nop_();
86 2 DQ=1;_nop_();_nop_();_nop_();_nop_();
87 2 if(DQ)value|=0x80;
88 2 delay(6);
89 2 }
90 1 DQ=1;
91 1 return(value);
92 1 }
93 /**********************************************************************/
94 /**************************读取温度*************************************/
95 void read_temp()
96 {
97 1 ow_reset();
98 1 write_byte(0xcc);
99 1 write_byte(0xbe);
100 1 temp_data[0]=read_byte();
101 1 temp_data[1]=read_byte();
102 1 ow_reset();
103 1 write_byte(0xcc);
104 1 write_byte(0x44);
105 1 }
106 /**********************************************************************/
107 /***************************温度数据处理函数**************************/
108 void work_temp()
109 {
110 1 uchar n=0;
111 1 if(temp_data[1]>127)
112 1 {
113 2 temp_data[1]=(256-temp_data[1]);
114 2 temp_data[0]=(256-temp_data[0]);n=1;
115 2 }
116 1
117 1 Data[4]=temp_data[0]&0x0f;
C51 COMPILER V8.01 DS18B20_XIN 06/14/2008 14:27:06 PAGE 3
118 1 Data[0]=ditab[Data[4]]; //0.1位
119 1 Data[4]=((temp_data[0]&0xf0) >> 4)|((temp_data[1]&0x0f)<<4);
120 1 Data[3]=Data[4] / 100;
121 1 Data[1]=Data[4] % 100;
122 1 Data[2]=Data[1] / 10; //十位
123 1 Data[1]=Data[1] % 10; //个位
124 1
125 1 if(!Data[3])
126 1 {
127 2 Data[3]=0x0a;
128 2 if(!Data[2]) Data[2]=0x0a;
129 2 }
130 1 if(n) Data[3]=0x0b;
131 1
132 1
133 1 }
134 /**********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 290 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 ----
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 + -