📄 ds18b20.lst
字号:
C51 COMPILER V7.50 DS18B20 09/30/2006 21:59:33 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 LIB\DS18B20.c BROWSE DEBUG OBJECTEXTEND PRINT(.\DS18B20.lst) OBJECT(DS18B20
-.obj)
line level source
1 /****************************************************************
2 //MCS-51单片机扩展DS18B20底层操作库。
3 //只在STC89C52单片机上实验过
4 //硬件接口见hardmap.h文件
5 //create by changshengwuji
6 //email: netspider@163.com
7 //qq: 450353168
8 //2006.05.03
9 ****************************************************************/
10
11
12
13
14 #include "../inc/MCS_X51.H"
15 #include "../inc/hardmap.h"
16 #include "../inc/MCS_X51LIB.H"
17 extern bit bit_10ms;
18 extern bit bit_10ms_over;
19 extern bit bit_400ms;
20 extern bit bit_400ms_over;
21
22 //************************************************************************
23
24 void delay(UINT8 t){ //call first 24us,after 16us
25 1 int s;
26 1 for(s=0;s<=t;s++);
27 1 }
28
29 void delay10ms(){
30 1 UINT8 i;
31 1 for(i=0;i<12;i++){
32 2
33 2 delay(60);
34 2 }
35 1 }
36
37 UINT8 ibus_reset(){
38 1 UINT8 answer;
39 1 iwire=0;
40 1 delay(29);
41 1 iwire=1;
42 1 delay(3);
43 1 answer=iwire;
44 1 delay(25);
45 1 return(answer);
46 1 }
47
48 UINT8 read_bit(void){
49 1 UINT8 i;
50 1 iwire=0;
51 1
52 1 iwire=1;
53 1 for(i=0;i<3;i++);
54 1
C51 COMPILER V7.50 DS18B20 09/30/2006 21:59:33 PAGE 2
55 1 return(iwire);
56 1 }
57
58 void write_bit(UINT8 b){
59 1 iwire=0;
60 1
61 1 if (b==1)
62 1 iwire=1;
63 1 delay(5); //delay 104uS
64 1 iwire=1;
65 1 }
66 //------------------------------
67 UINT8 read_byte(){
68 1 UINT8 i;
69 1 UINT8 value=0;
70 1 for(i=0;i<8;i++){
71 2 if(read_bit())
72 2 value|=0x01<<i;
73 2 delay(6); //wait for rest line
74 2 }
75 1 return(value);
76 1 }
77 //------------------------------
78 void write_byte(UINT8 byt){
79 1 UINT8 i;
80 1
81 1 UINT8 temp;
82 1 for ( i=0;i<8;i++){
83 2 temp=byt>>i;
84 2 temp=temp&0x01;
85 2 write_bit(temp);
86 2 }
87 1 delay(5);
88 1 }
89 //-----------------------------------------------------------------------------------------
90 void read_rom(UINT8 *p){ //读ROM
91 1 UINT8 i;
92 1
93 1 write_byte(0x33);
94 1 for (i=0;i<8;i++){
95 2 *p=read_byte();
96 2 p++;
97 2 }
98 1 }
99 //-----------------------------------
100 void write_skip(){ //跳过ROM指令
101 1 write_byte(0xcc);
102 1 }
103 //-----------------------------------
104 void write_scratchpad(UINT8 *p){ //写缓存
105 1 UINT8 i;
106 1 write_byte(0x4e);
107 1 for(i=0;i<3;i++){
108 2 write_byte(*p);
109 2 p++;
110 2 }
111 1 }
112 //-----------------------------------
113 void read_scratchpad(UINT8 *p){ //读缓存
114 1 UINT8 i;
115 1 write_byte(0xbe);
116 1 for(i=0;i<5;i++){
C51 COMPILER V7.50 DS18B20 09/30/2006 21:59:33 PAGE 3
117 2 *p=read_byte();
118 2 p++;
119 2 }
120 1 }
121
122 //-----------------------------------
123 void read_temperature(UINT8 *p){ //读转换结果
124 1 UINT8 i;
125 1 write_byte(0xbe);
126 1 for(i=0;i<3;i++){
127 2 *p=read_byte();
128 2 p++;
129 2 }
130 1 }
131 //-----------------------------------
132 void copy_scratchpad(){ //使用直接电源。
133 1 write_byte(0x48);
134 1 bit_10ms=1;
135 1 while(!bit_10ms_over);
136 1 bit_10ms_over = 0;
137 1
138 1 }
139 //-----------------------------------
140 void convert_t(){
141 1 write_byte(0x44);
142 1 //while(read_byte()!=0xff);
143 1 bit_400ms = 1;
144 1 while(!bit_400ms_over);
145 1 bit_400ms_over = 0;
146 1 }
147 //-----------------------------------
148 void recall_eeprom(){
149 1 write_byte(0xb8);
150 1 while(read_byte()!=0xff);
151 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 394 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 16
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 + -