📄 ds18b20.lst
字号:
C51 COMPILER V8.02 DS18B20 02/16/2009 21:53:25 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN ds18b20.OBJ
COMPILER INVOKED BY: E:\Proteus_keil\Keil\C51\BIN\C51.EXE ds18b20.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<uint.h>
3 #include<intrins.h>
4 #include<led0_9.h>
5
6 sbit dq=P2^0;
7 uchar ok=0,k,temp[3]={0x00,0x00,0x00};
8
9 void time1();
10 void write(uchar dat);
11 uchar read();
12 void delay_us(uint tt1);
13 void display(uchar aa,uchar bb);
14
15 void main()
16 {
17 1 TMOD=0X10;
18 1 TH1=0XFC;
19 1 TL1=0X18;
20 1 EA=1;
21 1 ET1=1;
22 1 TR1=1;
23 1
24 1 dq=1; //初始化
25 1 _nop_();
26 1 dq=0;
27 1 delay_us(52);
28 1 dq=1;
29 1 delay_us(5);
30 1 delay_us(25);
31 1
32 1 dq=1; //跳过读序列号
33 1 _nop_();
34 1 dq=0;
35 1 delay_us(52);
36 1 dq=1;
37 1 delay_us(5);
38 1 delay_us(25);
39 1 write(0xcc); //启动
40 1 write(0x44);
41 1
42 1 while(1);
43 1 }
44
45
46 void time1() interrupt 3
47 {
48 1 dq=1; //读
49 1 _nop_();
50 1 dq=0;
51 1 delay_us(52);
52 1 dq=1;
53 1 delay_us(5);
54 1 delay_us(25);
55 1 write(0xcc);
C51 COMPILER V8.02 DS18B20 02/16/2009 21:53:25 PAGE 2
56 1 write(0xbe);
57 1
58 1 temp[0]=read();
59 1 temp[1]=read();
60 1 display(temp[0],temp[1]);
61 1
62 1 dq=1; //再初始化
63 1 _nop_();
64 1 dq=0;
65 1 delay_us(52);
66 1 dq=1;
67 1 delay_us(5);
68 1 delay_us(25);
69 1
70 1 write(0xcc); //再启动
71 1 write(0x44);
72 1 }
73
74 void write(uchar dat)
75 {
76 1 uchar i=0;
77 1 for(i=0;i<8;i++)
78 1 {
79 2 dq=0;
80 2 dq=dat&0x01;
81 2 delay_us(5);
82 2 dq=1;
83 2 dat=dat>>1;
84 2 }
85 1 }
86
87 uchar read()
88 {
89 1 uchar i=0,date=0;
90 1 for(i=0;i<8;i++)
91 1 {
92 2 dq=0;
93 2 date=date>>1;
94 2 dq=1;
95 2 if(dq==1)date=date|0x80;
96 2 delay_us(5);
97 2 }
98 1 return date;
99 1 }
100
101 void delay_us(uint tt1)
102 {
103 1 while(tt1--);
104 1 }
105
106 void display(uchar aa,uchar bb)
107 {
108 1 uchar a=0,b=0,c=0,d=0;
109 1 ulong num;
110 1 num=bb;
111 1 num=num<<8;
112 1 num=num|aa;
113 1 num=num>>4;
114 1 if(bb<0x80)
115 1 {
116 2 num=num*10;
117 2 a=num%10;
C51 COMPILER V8.02 DS18B20 02/16/2009 21:53:25 PAGE 3
118 2 num=(num-a)/10;
119 2 b=num%10;
120 2 num=(num-b)/10;
121 2 c=num%10;
122 2 num=(num-c)/10;
123 2 d=num%10;
124 2 P3=0x00;
125 2 P1=ledcc[a];
126 2 P3=0x01;
127 2 P1=(ledcc[b]|0x80);
128 2 P3=0x02;
129 2 P1=ledcc[c];
130 2 P3=0x03;
131 2 P1=ledcc[d];
132 2 }else
133 1 {
134 2
135 2 num=~(num-1);
136 2 num=num&0x000fff;
137 2 num=num*10;
138 2 a=num%10;
139 2 num=(num-a)/10;
140 2 b=num%10;
141 2 num=(num-b)/10;
142 2 c=num%10;
143 2 if(c)
144 2 {
145 3 P3=0x00;
146 3 P1=ledcc[a];
147 3 P3=0x01;
148 3 P1=(ledcc[b]|0x80);
149 3 P3=0x02;
150 3 P1=ledcc[c];
151 3 P3=0x03;
152 3 P1=0x40;
153 3 }else
154 2 {
155 3 P3=0x00;
156 3 P1=ledcc[a];
157 3 P3=0x01;
158 3 P1=(ledcc[b]|0x80);
159 3 P3=0x02;
160 3 P1=0x40;
161 3 P3=0x03;
162 3 P1=0x00;
163 3 }
164 2 }
165 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 876 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 45 11
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 + -