📄 ds18b20.lst
字号:
C51 COMPILER V7.50 DS18B20 05/27/2007 09:10:56 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN ds18b20.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ds18b20.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //DS1820 C51 子程序
2 //这里以11.0592M晶体为例,不同的晶体速度可能需要调整延时的时间
3 sfr P3=0xB0;
4 sbit DQ =P3^5;
5 //根据实际情况定义端口
6 typedef unsigned char byte;
7 typedef unsigned int word;
8 //延时
9 void delay(word useconds)
10 {
11 1 for(;useconds>0;useconds--);
12 1 }
13 //复位
14 byte ow_reset(void)
15 {
16 1 byte presence;
17 1 DQ = 0;//pull DQ line low
18 1 delay(29); // leave it low for 480us
19 1 DQ = 1; // allow line to return high
20 1 delay(3); // wait for presence
21 1 presence = DQ; // get presence signal
22 1 delay(25); // wait for end of timeslot
23 1 return(presence); // presence signal returned
24 1 } // 0=presence, 1 = no part
25 //从 1-wire 总线上读取一个字节
26 byte read_byte(void)
27 {
28 1 byte i;
29 1
30 1 byte value = 0;
31 1 for (i=8;i>0;i--)
32 1 {
33 2 value>>=1;
34 2 DQ = 0; // pull DQ low to start timeslot
35 2 DQ = 1; // then return high
36 2 delay(1); //for (i=0; i<3; i++);
37 2 if(DQ)value|=0x80;
38 2 delay(6); // wait for rest of timeslot
39 2 }
40 1 return(value);
41 1 }
42 //向 1-WIRE 总线上写一个字节
43 void write_byte(char val)
44 {
45 1 byte i;
46 1 for (i=8; i>0; i--) // writes byte, one bit at a time
47 1 { DQ = 0; // pull DQ low to start timeslot
48 2 DQ = val&0x01;
49 2 delay(5); // hold value for remainder of timeslot
50 2 DQ = 1;
51 2 val=val/2;
52 2 }
53 1 delay(5);
54 1 }
55 //读取温度
C51 COMPILER V7.50 DS18B20 05/27/2007 09:10:56 PAGE 2
56 char Read_Temperature(void)
57 {
58 1 union{
59 1 byte c[2];
60 1 int x;
61 1 }temp;
62 1 ow_reset();
63 1 write_byte(0xCC); // Skip ROM
64 1 write_byte(0xBE); // Read Scratch Pad
65 1 temp.c[1]=read_byte();
66 1 temp.c[0]=read_byte();
67 1 ow_reset();
68 1 write_byte(0xCC); //Skip ROM
69 1 write_byte(0x44); // Start Conversion
70 1 return temp.x>>4;
71 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 172 ----
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 + -