?? ds18b20.lst
字號(hào):
C51 COMPILER V7.06 DS18B20 12/17/2006 14:56:14 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN DS18B20.OBJ
COMPILER INVOKED BY: E:\My Electronic\Tools\Design tools\keil7.06\C51\BIN\C51.EXE DS18B20.c LARGE OPTIMIZE(SIZE)
stmt level source
1 #include <REG52.H>
2 #include <intrins.h>
3
4 #define uint unsigned int
5
6
7 sbit DQ=P3^6;
8
9 void delay_us(unsigned char us);
10 unsigned char _18b20_init(void);
11 unsigned char _18b20_read();
12 void Read_Temperature(unsigned char *p);
13 void _18b20_write(unsigned char commond);
14
15 void delay(unsigned char useconds)
16 {
17 1 for(;useconds>0;useconds--);
18 1 }
19
20
21 unsigned char _18b20_init(void)
22 {
23 1 unsigned char presence;
24 1 EA=0;
25 1 DQ = 0; //拉低總線
26 1 delay(29); // 保持 480us
27 1 DQ = 1; // 釋放總線
28 1 delay(3); // 等待回復(fù)
29 1 presence = DQ; // 讀取信號(hào)
30 1 delay(25); // 等待結(jié)束信號(hào)
31 1 return(presence); // 返回 0:正常 1:不存在
32 1 }
33
34 //從 1-wire 總線上讀取一個(gè)字節(jié)
35 unsigned char _18b20_read(void)
36 {
37 1
38 1 unsigned char i;
39 1 unsigned char value = 0;
40 1 for (i=8;i>0;i--)
41 1 {
42 2 value>>=1;
43 2 DQ = 0;
44 2 _nop_();
45 2 _nop_();
46 2 _nop_();
47 2 DQ = 1;
48 2 delay(1);
49 2 if(DQ)value|=0x80;
50 2 delay(6);
51 2 }
52 1 return(value);
53 1 }
54
55 //向 1-WIRE 總線上寫一個(gè)字節(jié)
C51 COMPILER V7.06 DS18B20 12/17/2006 14:56:14 PAGE 2
56 void _18b20_write(char val)
57 {
58 1 unsigned char i;
59 1 EA=0;
60 1 for (i=8; i>0; i--) // 一次寫一位
61 1 {
62 2 DQ = 0; //
63 2 _nop_();
64 2 _nop_();
65 2 _nop_();
66 2 DQ = val&0x01;
67 2 delay(5); //
68 2 DQ = 1;
69 2 val=val/2;
70 2 }
71 1 EA=1;
72 1 delay(5);
73 1 }
74
75 //讀取和顯示溫度
76 void Read_Temperature(unsigned char *p)
77 {
78 1
79 1 unsigned char i;
80 1 unsigned char x;
81 1 unsigned char th,tl;
82 1
83 1 for(i=0;i<10;i++)
84 1 ;
85 1 _18b20_init();
86 1 for(i=0;i<10;i++)
87 1 ;
88 1 _18b20_write(0xCC); // Skip ROM
89 1 _18b20_write(0x44); // 轉(zhuǎn)換溫度
90 1 for(i=0;i<254;i++)
91 1 ;
92 1 _18b20_init();
93 1 for(i=0;i<10;i++)
94 1 ;
95 1 _18b20_write(0xCC); //Skip ROM
96 1 _18b20_write(0xbe); // 讀取寄存器
97 1 tl=_18b20_read();//讀出溫度低8位
98 1 th=_18b20_read();//讀出溫度高8位
99 1 tl &= 0xf0;
100 1 tl >>= 4;
101 1 *(p+3)=tl/2+'0';
102 1 *(p+2)='.';
103 1 x=((th&0x07)<<4)+tl;
104 1 *p=x/10+'0';//顯示溫度十位數(shù)
105 1 *(p+1)=x%10+'0';//顯示溫度個(gè)位數(shù)
106 1
107 1 }
108
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 231 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
C51 COMPILER V7.06 DS18B20 12/17/2006 14:56:14 PAGE 3
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -