📄 chaosheng.lst
字号:
228 1 temp1=div*temp1;
229 1 temp2=plus_data*v/1000;
230 1 s=temp1+temp2;
231 1 if(average==0)
232 1 average=s; //第一次测量的是第一次值二倍的平均值
233 1 average=(average+s)>>1;//每次测量的值都和上一次的平均值取平均 逐次逼近可以加快计算速度
234 1 distan_data[0]=':';
235 1 distan_data[1]=' ';
236 1 distan_data[2]=*(num_data+average/1000);
237 1 distan_data[3]=*(num_data+average%1000/100);
238 1 distan_data[4]=*(num_data+average%100/10);
239 1 distan_data[5]=*(num_data+average%10);
240 1 for(i=0;i<10;i++); //延时大约100us
241 1 cmd(0x9c); //位置
C51 COMPILER V8.02 CHAOSHENG 05/25/2007 11:20:26 PAGE 5
242 1 for(i=0;i<10;i++); //延时大约100us
243 1 dat(distan_data,6); //距离
244 1 }
245
246 /*
247 sbit SCK=P1^0;
248 sbit SI=P1^1;
249 sbit SO=P1^2;
250 sbit cs_feed=P1^3;//喂狗信号
251 */
252
253 //看门狗初始化
254 void WTD_init()
255 {
256 1 uchar i;
257 1 uchar instr;
258 1 cs_feed=0; // 用来写 WREN 写 使能
259 1 instr=0x06;
260 1 for(i=0;i<8;i++)
261 1 {
262 2 SCK=0;
263 2 SI=instr&0x80;;
264 2 SCK=1;
265 2 instr<<=1;
266 2 }
267 1 cs_feed=1;
268 1 _nop_();
269 1 cs_feed=0; //用来写状态寄存器指令
270 1 instr=0x01;
271 1 for(i=0;i<8;i++)
272 1 {
273 2 SCK=0;
274 2 SI=instr&0x80;;
275 2 SCK=1;
276 2 instr<<=1;
277 2 }
278 1 instr=0x10; //写状态寄存器
279 1 for(i=0;i<8;i++)
280 1 {
281 2 SCK=0;
282 2 SI=instr&0x80;;
283 2 SCK=1;
284 2 instr<<=1;
285 2 }
286 1
287 1 }
288
289 //喂狗
290 void feed_WTD()
291 {
292 1 cs_feed=1;
293 1 _nop_(); _nop_();
294 1 cs_feed=0;
295 1 _nop_(); _nop_();
296 1 }
297
298 // 超声波返回中断 读取计数器中的值
299 void plus_count (void ) interrupt 0 using 0
300 {
301 1 TR0=0;
302 1 plus_data=TH0;
303 1 plus_data<<=8;
C51 COMPILER V8.02 CHAOSHENG 05/25/2007 11:20:26 PAGE 6
304 1 plus_data|=TL0;
305 1 }
306 //
307 void init_RT()
308 {
309 1 uchar data k,w;
310 1 cmd(0x30);//使用基本指令集
311 1 for(k=0;k<10;k++); //延时大约100us
312 1 cmd(0x0c); //显示状态开关 整体,游标,游标位置
313 1 for(k=0;k<10;k++); //延时大约100us
314 1 cmd(0x01); //清除显示,地址计数器AC到零
315 1 for(k=0;k<250;k++)
316 1 for(w=0;w<200;w++);//延时大约500ms
317 1 cmd(0x81); //位置
318 1 for(k=0;k<10;k++); //延时大约100us
319 1 dat(init,12); //超声波液位仪
320 1 for(k=0;k<10;k++); //延时大约100us
321 1 cmd(0x90); //位置
322 1 for(k=0;k<10;k++); //延时大约100us
323 1 dat(work_temp,16); //温度
324 1 for(k=0;k<10;k++); //延时大约100us
325 1 cmd(0x88); //位置
326 1 for(k=0;k<10;k++); //延时大约100us
327 1 dat(chao_v,16); //超声波速度
328 1 for(k=0;k<10;k++); //延时大约100us
329 1 cmd(0x98); //位置
330 1 for(k=0;k<10;k++); //延时大约100us
331 1 dat(test,16); //距离
332 1
333 1 }
334 //主函数
335 void main()
336 {
337 1 uchar data tempt;//当前温度
338 1 unsigned int i;
339 1 unsigned int j;
340 1 TMOD=0x01; //计数器0工作在16位定时器状态
341 1 EA=1;
342 1 PX0=1; //外部中断0优先级高
343 1 IT0=1; //边沿触发 自动清零
344 1 // WTD_init(); //看门狗初始化
345 1 //init_RT();
346 1 START=0;//开始发送超声波
347 1 while(1)
348 1 { /*
349 2 // read_temp();
350 2 //tempt=deal_dis(); //取回温度值
351 2 send_wave();
352 2 while(TF0==0);
353 2 math(tempt);//计算距离
354 2 TF0=0;
355 2 feed_WTD(); //喂狗
356 2 */
357 2 for(i=0;i<900;i++);
358 2 START=~START;
359 2 }
360 1 }
*** WARNING C280 IN LINE 337 OF C:\DOCUME~1\ADMINI~1\桌面\超声波5.13\CHAOSHENG.C: 'tempt': unreferenced local variable
*** WARNING C280 IN LINE 339 OF C:\DOCUME~1\ADMINI~1\桌面\超声波5.13\CHAOSHENG.C: 'j': unreferenced local variable
C51 COMPILER V8.02 CHAOSHENG 05/25/2007 11:20:26 PAGE 7
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
WTD_init . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
instr. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
_math. . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
t. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
s. . . . . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
v. . . . . . . . . . . . . . . . . . AUTO DATA FLOAT 0002H 4
i. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0006H 1
temp1. . . . . . . . . . . . . . . . AUTO DATA FLOAT 0007H 4
temp2. . . . . . . . . . . . . . . . * REG * DATA FLOAT 0004H 4
distan_data. . . . . . . . . . . . . AUTO DATA ARRAY 000BH 6
div. . . . . . . . . . . . . . . . . AUTO DATA U_INT 0011H 2
_write . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
rule . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0003H 1
temp . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0002H 1
START. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0095H 1
_cmd . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
intr . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
DS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0094H 1
_dat . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0006H -----
p. . . . . . . . . . . . . . . . . . AUTO DATA PTR 0000H 3
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
k. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
SI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
read . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
temp . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
value. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
fail . . . . . . . . . . . . . . . . . PUBLIC DATA PTR 0000H 2
reset. . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
flag . . . . . . . . . . . . . . . . AUTO DATA BIT 0000H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
tempt. . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
j. . . . . . . . . . . . . . . . . . AUTO DATA U_INT 0001H 2
temp_data. . . . . . . . . . . . . . . PUBLIC DATA ARRAY 0002H 2
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
init . . . . . . . . . . . . . . . . . PUBLIC DATA PTR 0004H 2
read_temp. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
deal_dis . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
k. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
tmp. . . . . . . . . . . . . . . . . AUTO DATA ARRAY 0000H 2
dis_data . . . . . . . . . . . . . . AUTO DATA ARRAY 0002H 6
init_RT. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
k. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
w. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
send_wave. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
w. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
test . . . . . . . . . . . . . . . . . PUBLIC DATA PTR 0006H 2
plus_data. . . . . . . . . . . . . . . PUBLIC DATA U_INT 0008H 2
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
C51 COMPILER V8.02 CHAOSHENG 05/25/2007 11:20:26 PAGE 8
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
TH0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008CH 1
cs_feed. . . . . . . . . . . . . . . . ABSBIT ----- BIT 0093H 1
EX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A8H 1
IT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0088H 1
num_data . . . . . . . . . . . . . . . PUBLIC DATA PTR 000AH 2
TL0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008AH 1
plus_count . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
PX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B8H 1
work_temp. . . . . . . . . . . . . . . PUBLIC DATA PTR 000CH 2
average. . . . . . . . . . . . . . . . PUBLIC DATA U_INT 000EH 2
SCK. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
feed_WTD . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
failed . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
k. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
_delay . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
t. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
chao_v . . . . . . . . . . . . . . . . PUBLIC DATA PTR 0010H 2
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1326 ----
CONSTANT SIZE = 84 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 34
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -