📄 practise1.lst
字号:
C51 COMPILER V6.12 PRACTISE1 04/29/2009 13:10:31 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE PRACTISE1
OBJECT MODULE PLACED IN .\practise1.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE .\practise1.c DEBUG OBJECTEXTEND
stmt level source
1 #include<reg52.h>
2
3 #define uchar unsigned char
4 #define uint unsigned int
5
6 sbit feng=P2^3;
7 sbit dq=P2^2;
8 sbit led=P1^0;
9 sbit dula=P2^6;
10 sbit wela=P2^7;
11
12
13 float f_temp;
14 uint C_temp;
15
16 uchar code table[]={
17 0x3f,0x06,0x5b,0x4f,
18 0x66,0x6d,0x7d,0x07,
19 0x7f,0x6f,0x77,0x7c,
20 0x39,0x5e,0x79,0x71
21 };
22
23 uchar code table2[]={
24 0xfe,0xfd,0xfb,0xf7,0xef,0xdf
25 };
26
27 /******************延时***************************/
28
29 void delay_ms(uint z)
30 {
31 1 uint ii,jj;
32 1 for(ii=z;ii>0;ii--)
33 1 for(jj=110;jj>0;jj--){}
34 1 }
35
36 /****************复位与存在***********************/
37
38 void reset()
39 {
40 1 uchar tt=00;
41 1
42 1 dq=0;
43 1 tt=250;
44 1 while( tt>0 ) tt--;
45 1 dq=1;
46 1 tt++;tt++;
47 1 }
48 /*
49 void exist()
50 {
51 uchar tt=20;
52 while(dq==0||tt<0) tt--;//延时或者是检测到了存在信号
53 if(dq==0)
54 //delay_us(500);
55 tt=100;
C51 COMPILER V6.12 PRACTISE1 04/29/2009 13:10:31 PAGE 2
56 while( tt>0 ) tt--;
57 dq=1;
58 //delay_us(2);
59 }
60 */
61
62
63 /*************************************************/
64
65 //写入字节
66 void write_byte(uchar xx)
67 {
68 1 bit bb;
69 1 uchar test=0x01;//*********************************这里可能有问题?
70 1 uchar date=xx;
71 1 uchar ii=0;
72 1 uchar tt=0;
73 1
74 1 while(ii < 8)
75 1 {
76 2 bb=test&date;
77 2 if(bb)
78 2 {
79 3 dq=0;
80 3 tt=3;
81 3 while(tt>0) tt--; //delay_us(8);
82 3 dq=1;
83 3 tt=30;
84 3 while( tt>0 ) tt--; //delay_us(60);
85 3 }
86 2 else
87 2 {
88 3 dq=0;
89 3 tt=30;
90 3 while( tt>0 ) tt--; //delay_us(60);
91 3 dq=1;
92 3 tt++; tt++; //delay_us(2);
93 3 }
94 2 ++ii;
95 2 }
96 1
97 1 }
98
99 bit read_bit()
100 {
101 1 bit bb;
102 1 uchar tt=0;
103 1
104 1 dq=1;
105 1 tt++;
106 1 dq=0;
107 1 tt++; tt++; //delay_us(2);
108 1 dq=1;
109 1 tt=3;
110 1 while(tt>0) tt--; //delay_us(4);
111 1 bb=dq;
112 1 tt=20;
113 1 while(tt>0) tt--; //delay_us(40);
114 1 return bb;
115 1 }
116
117 //读字节
C51 COMPILER V6.12 PRACTISE1 04/29/2009 13:10:31 PAGE 3
118 uchar read_byte()
119 {
120 1 uchar byte=0x00;
121 1 uchar ii=0;
122 1 uchar temp;
123 1 uchar tt=0;
124 1 //uchar tt=0x01;
125 1
126 1 while(ii < 8)
127 1 {
128 2 tt++;
129 2 //delay_us(2);
130 2 temp=read_bit();
131 2 byte=(byte>>1)|(temp<<7);
132 2 ++ii;
133 2 /*
134 2 delay_us(2);
135 2 temp=read_bit();
136 2 byte=byte+temp&tt;
137 2 tt<<1;
138 2 */
139 2 }
140 1
141 1 return(byte);
142 1 }
143
144
145
146 /**********************温度************************/
147
148 void convert_temper()
149 {
150 1 uchar tt;
151 1 reset();
152 1 tt=100;
153 1 while(tt>0) tt--;
154 1 //exist();
155 1 write_byte(0xCC); //跳过读ROM操作
156 1 write_byte(0x44);//温度转换命令
157 1 }
158
159 /*uint read_temper()
160 {
161 uchar tt;
162 uchar LSB_temper=0x00;
163 uchar MSB_temper=0x00;
164
165 reset();
166 //exist();
167 tt=100;
168 while(tt>0) tt--;
169 write_byte(0xCC);
170 write_byte(0xBE);
171
172 LSB_temper=read_byte();
173 MSB_temper=read_byte();
174
175 C_temper=MSB_temper;
176 C_temper=(C_temper<<8)|LSB_temper;
177 C_temper=C_temper*0.0625*10;
178
179 return C_temper;
C51 COMPILER V6.12 PRACTISE1 04/29/2009 13:10:31 PAGE 4
180 }
181 */
182 uint read_temper()
183 {
184 1 uchar a,b;
185 1 reset();
186 1 delay_ms(1);
187 1 write_byte(0xcc);
188 1 write_byte(0xbe);
189 1 a=read_byte();
190 1 b=read_byte();
191 1 C_temp=b;
192 1 C_temp<<=8;
193 1 C_temp=C_temp|a;
194 1 f_temp=C_temp*0.0625;
195 1 C_temp=f_temp*10+0.5;
196 1 f_temp=f_temp+0.05;
197 1 return C_temp;
198 1 }
199 /******************响应******************************/
200
201 /*void display_temper()
202 {
203 uchar xx,yy,zz;
204
205 xx=C_temp/100;
206 yy=C_temp/10%10;
207 zz=C_temp%10;
208
209
210 wela=1;
211 P0=table2[0];
212 wela=0;
213 //delay_ms(2);
214
215 P0=0x00;
216 dula=1;
217 P0=table[xx];
218 dula=0;
219 delay_ms(5);
220
221 P0=0xff;
222 wela=1;
223 P0=table2[1];
224 wela=0;
225 //delay_ms(2);
226
227 P0=0x00;
228 dula=1;
229 P0=(table[yy]+0x80);
230 dula=0;
231 delay_ms(5);
232
233 P0=0xff;
234 wela=1;
235 P0=table2[2];
236 wela=0;
237 //delay_ms(2);
238
239 P0=0x00;
240 dula=1;
241 P0=table[zz];
C51 COMPILER V6.12 PRACTISE1 04/29/2009 13:10:31 PAGE 5
242 dula=0;
243 delay_ms(5);
244
245 }
246 */
247 void display(uchar num,uchar dat)
248 {
249 1 uchar i;
250 1 dula=0;
251 1 P0=table[dat];
252 1 dula=1;
253 1 dula=0;
254 1 wela=0;
255 1 i=0xFF;
256 1 i=i&(~((0x01)<<(num)));
257 1 P0=i;
258 1 wela=1;
259 1 wela=0;
260 1 delay_ms(1);
261 1 }
262
263 void dis_temp(uint t)
264 {
265 1 uchar i;
266 1 i=t/100;
267 1 display(0,i);
268 1 i=t%100/10;
269 1 display(1,i);
270 1 i=t%100%10;
271 1 display(2,i);
272 1 }
273 /*******************************************/
274
275
276 void main()
277 {
278 1 uchar ii;
279 1
280 1 while(1)
281 1 {
282 2 convert_temper();
283 2 read_temper();
284 2 for(ii=0;ii<5;ii++)
285 2 {
286 3 dis_temp(read_temper);
287 3 }
288 2 }
289 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 449 ----
CONSTANT SIZE = 22 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 3
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -